gpt4 book ai didi

java - 使用 apache 元模型更新 excel 文件

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:47 24 4
gpt4 key购买 nike

我正在尝试将 Apache MetaModel 合并到一个项目中,但一直遇到一个奇怪的问题。我更新代码中的 Excel 电子表格行。该代码找到正确的行,将其删除,然后将该行(包含我的更新)附加到电子表格的底部。我希望更新就地发生,相同的数据保留在同一行中。我认为这是我做错了什么,然后建立了一个愚蠢的简单项目来复制这种行为。不幸的是,问题仍然存在。

这是 xlsx 文件:

Name    Address           City          State   Zip
Bob 123 Main St. Norman OK 11111
Fred 989 Elm Street Chicago IL 22222
Mary 555 First Street San Francisco CA 33333

现在,我想将 Bob 的 Zip 更新为“无”。

package MMTest;
import java.io.File;
import org.apache.metamodel.UpdateableDataContext;
import org.apache.metamodel.excel.ExcelDataContext;
import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.Schema;
import org.apache.metamodel.schema.Table;
import org.apache.metamodel.update.Update;
public class MMTest {
public static void main(String[] args) {
UpdateableDataContext excel = new ExcelDataContext(new File("C:/test/test.xlsx"));
Schema schema = excel.getDefaultSchema();
Table[] tables = schema.getTables();
assert tables.length == 1;
Table table = schema.getTables()[0];
Column Name = table.getColumnByName("Name");
Column Zip = table.getColumnByName("Zip");
excel.executeUpdate(new Update(table).where(Name).eq("Bob").value(Zip, "None"));
}
}

很简单吧?没有。这是结果:

Name    Address           City          State   Zip
<blank line>
Fred 989 Elm Street Chicago IL 22222
Mary 555 First Street San Francisco CA 33333
Bob 123 Main St. Norman OK None

我是不是漏掉了一些简单的东西?文档非常少,但我已经阅读了互联网上关于这个包的所有内容。感谢您的宝贵时间。

最佳答案

聚会迟到了,但我最近遇到了这个问题,还没有在其他地方找到答案。实际删除发生在 ExcelDeleteBuilder.java

如果您不关心维护行顺序,您可以更改

    for (Row row : rowsToDelete) {
sheet.removeRow(row);
}

    for (Row row : rowsToDelete) {
int rowNum = row.getRowNum() + 1;
sheet.removeRow(row);
sheet.shiftRows(rowNum, sheet.getLastRowNum(), -1);
}

请参阅 Apache POI 文档以更好地理解 shiftRows() .正如 Adi 指出的那样,您最终仍会将“已更新”行移至底部,但在我的用例中,已成功删除空行。

注意我正在使用 Apache Metamodel 4.5.4

关于java - 使用 apache 元模型更新 excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25209286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com