Apache POI for Excel:将整个列的单元格类型设置为"text"

Chr*_*her 9 excel xls xlsx apache-poi

我需要使用Java库Apache POI生成一个.xls(Excel)文件,用于电子表格.

该文件将包含A列中的电话号码列表,格式为"0221 ...."或"+49221 ..." - 因此Excel默认将它们解释为数字单元格.这很糟糕,因为前导0或+将被修剪.

为了解决这个问题,我可以使用cell.setCellType(Cell.CELL_TYPE_STRING),它工作正常,但仅适用于我为此设置的特定单元格.

如何将此设置应用于整个列(即使对于所有剩余的单元格,用户还将输入其他电话号码)?

在Excel中,这是可能的:选择整个列,然后应用单元格类型(设置可以保存/加载文件.)

但我找不到正确的POI方法.

  • 首先我假设,应该是这样的sheet.setDefaultCellType(int colNum).但我找不到这样的东西(可能我只是盲目?库中有很多类似的方法 用于应用"对齐中心"等文本样式.)
  • 然后我想:也许它只能应用于NamedRange或类似的东西,但我还没有设法弄清楚它是如何工作的......

jah*_*roy 20

这是一些受弗拉德回答启发的示例代码:

DataFormat fmt = workbook.createDataFormat();
CellStyle textStyle = workbook.createCellStyle();
textStyle.setDataFormat(fmt.getFormat("@"));
worksheet.setDefaultColumnStyle(0, textStyle);
Run Code Online (Sandbox Code Playgroud)

上面的代码将第一列工作表的默认样式设置为TEXT.

弗拉德,弗拉德!


Vla*_*lad 12

会有帮助吗?

通过使用@符号创建数据格式并在CellStyle对象中使用该格式然后传递给setDefaultColumnStyle()方法,可以将列的默认数据类型设置为(在本例中为文本).我还没有进一步的经验,但是怀疑可以用其他样式对象做类似的事情来将默认类型设置为数字甚至是自定义格式,例如货币.