【问题标题】:Can't set type for excel cell in java无法在java中设置excel单元格的类型
【发布时间】:2022-06-10 21:16:17
【问题描述】:

我正在使用 org.apache.poi 通过 Java 进行 excel 交互,并且我正在使用 SXSSF(不是任何其他格式,如 HSSF 等)。这是我想要设置类型的方式。

private void setTechSheet(SXSSFWorkbook workbook, String entityJson) {
        SXSSFSheet tech = workbook.createSheet("tech");
        SXSSFRow jwtRow = tech.createRow(0);
        SXSSFRow SecondRow = tech.createRow(1);
        jwtRow.createCell(1).setCellValue(entityJson);
    }

如果把它放在方法的第 4 行:

jwtRow.createCell(1).setCellType(CellType.STRING).setCellValue(entityJson),

它不会让我设定价值。正如我从教程中读到的,单元格将是我编写的数据类型(在我的示例中为字符串)。但是当我打开excel并单击我的单元格时,它仍然显示一般类型。我怎么解决这个问题?我希望单元格是任何类型,但不是通用的。

【问题讨论】:

  • setCellType(CellType.STRING) 是一个 void 方法。它不会返回一个单元格供您将值设置为

标签: java excel


【解决方案1】:

General 不是类型而是数据格式。所以你有一个包含通用数据格式的文本值的单元格。这是默认设置。这没有什么问题。

仅当需要将数字存储为文本时,才需要特殊的Text 数据格式。

如果需要Text数据格式,则需要设置@为数据格式。为此,单元格需要具有该数据格式的单元格样式。并且由于单元格样式存储在工作簿级别并在具有该日期格式的所有单元格之间共享,因此每个数据格式只需为每个工作簿创建一次,然后应用于应使用该数据格式的所有单元格。

SXSSFWorkbook workbook...
...
DataFormat format = workbook.createDataFormat();
CellStyle textStyle = workbook.createCellStyle();
textStyle.setDataFormat(format.getFormat("@"));
...
setTechSheet(workbook, "1234", textStyle);
...
private void setTechSheet(SXSSFWorkbook workbook, String entityJson, CellStyle textStyle) {
 SXSSFSheet tech = workbook.createSheet("tech");
 SXSSFRow jwtRow = tech.createRow(0);
 SXSSFCell cell = jwtRow.createCell(1);
 cell.setCellValue(entityJson);
 cell.setCellStyle(textStyle);
}
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多