当前位置: 首页 > 知识库问答 >
问题:

使用Apache POI向XSLX文件中的现有表添加列

申屠昌胤
2023-03-14

我尝试使用Apache POI(3.15-Beta2版本,但也尝试过3.14)在XLSX电子表格中的现有表中添加列。使用下面的代码,我设法添加了一列,但它不能完全工作。

Excel 2013在尝试打开文件时出错(我们发现“....XLSX”中的某些内容有问题。是否希望我们尽可能多地恢复?如果信任此工作簿的来源,请单击是。)。如果单击“是”,文件将被打开,表的大小已经成功调整,新内容也被添加,但是列没有我为它设置的名称(它被设置为“columna1”),它有一个我不想要的过滤器,当然,我希望在打开文件时消除警告。

有人知道问题可能出在哪里吗?提前感谢!

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");

共有1个答案

董飞
2023-03-14

好的,问题显然是您必须手动将列标题的单元格值设置为您为CTTableColumn对象设置的名称。

所以,加上

sheet.getRow(17).createCell(3);
sheet.getRow(17).getCell(3).setCellValue("NEWCOLUMN");

做了把戏。

ctTable.unsetAutoFilter();
 类似资料:
  • 代码是来自ASP.NET MVC应用程序的操作方法。

  • 问题内容: 我已经使用python创建了一个txt文件,其中包含几行文本,这些文本将由一个简单的程序读取。但是,我在重新打开文件以及在程序的后续部分中在文件中写入其他行时遇到了一些麻烦。(这些行将从稍后获得的用户输入中写入。) 这是假设“ file.txt”已被打开并被写入。但是,使用我当前拥有的代码第二次打开该文件时,我必须擦除之前编写的所有内容并重写新行。有没有办法防止这种情况发生(并可能减少

  • 我想使用IText7将图像添加到现有PDF文件中的特定位置。 在使用iTextSharp的另一个项目中,代码非常简单: 但我找不到使用IText7执行此操作的正确方法。 我有PdfReader和PdfWriter,但在IText7中我可以在哪里找到PdfStamper? 或者可能有其他方法可以将图像添加到IText7中现有的PDF文件中? (我不能在当前项目中使用iTextSharp)

  • 我有一个CSV文件,有五列和数百行。我想给每一列添加一个标题。例如 我已经尝试了下面的代码,它确实成功地添加了标题,但是,它也将所有列合并为一个。这不是我想要的 此代码将导致下表

  • 我有一个工作的Java项目,它使用Access.accdb数据库存储数据。我正在为我的程序进行更新,为用户提供更多的功能。为了使其工作,我需要在现有的表中添加一个列,该列填充了数据。当我研究时,我发现UCanAccess不能支持 这是不幸的,但我明白,由于低级别的驱动程序不支持它,UCanAccess也不能支持它。 然后我找到了这个解决办法: 如何使用UCanAccess修改表 但这对我也不起作用

  • 作为一个具体的示例,假设我有一个工作簿和工作表,其中有一个从A1开始的2列2行(包括标题)的现有表。我可以打开底层的XL>Tables>Table1.xml并看到以下内容: 我可以看到我的两列、根标记的ref属性以及autoFilter块的ref属性。我想要做的是添加一个新行,这样表的面积将是A1:B3。