我正在尝试使用Apache POI(版本3.15-beta2,但我也尝试过3.14)将列添加到XLSX电子表格中的现有表中。使用下面的代码,我设法添加一个列,但它不能完全发挥作用。
Excel 2013在尝试打开文件时出错(我们发现'.... xlsx'中的某些内容存在问题。您是否希望我们尝试尽可能多地恢复?如果您信任此工作簿的来源,单击是。)。如果单击“是”,则打开文件并成功调整表格大小并添加新内容,但列没有我为其设置的名称(它设置为“Columna1”)并且它有一个过滤器我不想要,加上当然我想在打开文件时摆脱警告。
有谁知道问题可能在哪里?提前谢谢!
这是(编辑过的)代码。我的原始表已经有三列(第一列是标题列),其数据在A18:C24上。
XSSFTable selectedTable = findMyTable();
CTTable ctTable = selectedTable.getCTTable();
CTTableColumns tableColumns = ctTable.getTableColumns();
tableColumns.setCount(4);
CTTableColumn newCol = tableColumns.addNewTableColumn();
newCol.setId(4);
newCol.setName("NEWCOLUMN");
ctTable.setRef("A18:D24");
CTAutoFilter autoFilter = ctTable.getAutoFilter();
autoFilter.setRef("A18:D24");
答案 0 :(得分:0)
好的,问题显然是您必须手动将列标题的单元格值设置为您为CTTableColumn对象设置的名称。
所以,添加
sheet.getRow(17).createCell(3);
sheet.getRow(17).getCell(3).setCellValue("NEWCOLUMN");
做了这个伎俩。
要在所有列中禁用过滤,只需添加
即可ctTable.unsetAutoFilter();