我在excel中有一张表格,上面有我想向其中添加数据的公式。
我这样做的动机是,Excel中的表可以动态扩展到您添加到表中的数据范围,这意味着公式行自动跟上数据行的数量。
但是我很难确定是否可以使用apache-POI。
我要尝试的一件事(请参见下面的代码)是扩展表的AreaReference
以覆盖数据,但是两个AreaReference(CR,CR2);
(在this示例中使用)和AreaReference(CR,CR2, SpreadsheetVersion.EXCEL2007)
(在Apache docs中看到)给出“构造函数未定义”。
不知道是什么导致了构造函数错误,因为我确实导入了org.apache.poi.ss.util
。
apache docs AreaReference(java.lang.String reference)
上的另一个选项使我可以编译并运行,但会出现“ NoSuchMethod”错误。
List<XSSFTable> tableList = spreadSheet.getTables();
CellReference CR = new CellReference(0, 0);
CellReference CR2 = new CellReference(5, 2);
AreaReference my_data_range = new AreaReference(CR,CR2);
tableList.get(0).setArea(my_data_range);
任何帮助将不胜感激。
答案 0 :(得分:1)
到目前为止,使用apache poi
的主要问题是,如果没有这样的Microsoft Office
和Microsoft Office
文件的存储的详细知识,就无法准备使用它。有很多事情还没准备好,在新版本中经常会有回归(错误再次出现,已经解决了)。
因此,您的要求:“仅使用apache poi
不可能实现“使用Apache POI扩展Excel中的现有表”。必须知道Office Open XML
文件*.xlsx
只是可以解压缩的ZIP
存档。解压缩后,我们发现/xl/tables/table1.xml
用于存储表。我们可以将此XML
进行分析并将其与使用XML
的{{1}}创建的Excel
进行比较。因此,我们可以找到由GUI
的缺点引起的问题。与apache poi
中工作表的XML
相同。
我们还需要知道/xl/tables/sheet1.xml
建立在apache poi
的低级类上。由于ooxml-schemas
的中途就绪,部分需要使用这些类。在下面的示例中,我们还需要apache poi
,因为ooxml-schemas-1.4.jar
的{{1}}到目前为止还没有包含apache poi
。不幸的是,没有关于poi-ooxml-schemas-4.0.0.jar
公开的文档。因此,我们需要下载源代码并自行完成org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableFormula
。
以下示例使用ooxml-schemas
为我工作。如果在编译或运行时遇到问题,原因可能是在编译时和/或运行时,类路径中有javadoc
apache poi 4.0.0
的多个不同版本。 Do not mix different apache poi versions。另外,正如已经说过的那样,我的代码需要the full jar of all of the schemas ooxml-schemas-1.4.jar。
apache poi