0

我正在尝试查看在使用 POI SXSSF API 将数据写入 xlsx 而不是让应用程序使用时,是否可以让模板处理格式(例如:将字符串(数字、日期、十进制值)转换为其本机数据类型)写入数据时使用适当的 setCellValue(Date/int/String/double) 方法。

我测试了这种情况,如下所述,但它似乎不起作用。我会很感激这里的任何建议。

  1. 创建了一个 .xlsx 模板,其标题行包含单元格 an_integer、a_decimal_number、a_date 和 a_string。我通过右键单击列并选择“格式化单元格”将标题中的每一列格式化为适当的类型。
  2. 使用 SXSSF API 并添加包含数据 121、132.7612、03/13/2013 的行,我是一个字符串,并对所有单元格使用 setCellValue(String) 方法。我期望数据会自动转换为它们各自的类型,因为列被格式化为这样做。但是,这似乎没有发生,生成的 excel 文件仍然将数字和日期视为字符串。

我的模板格式错误吗?我试图做的事情是否可行?

4

1 回答 1

2

setCellValue(String)中的方法XSSFCell会自动将单元格的单元格类型设置为CELL_TYPE_STRING,覆盖之前存在的任何单元格类型,从而改变 Excel 格式化单元格值的方式。

尝试使用其中一种重载setCellValue方法;他们每个人都根据其参数的类型设置单元格类型:

  • setCellValue(boolean) -CELL_TYPE_BOOLEAN
  • setCellValue(Calendar) - CELL_TYPE_NUMERIC(Excel 将其日期存储为数字)
  • setCellValue(Date) - CELL_TYPE_NUMERIC(Excel 将其日期存储为数字)
  • setCellValue(双) -CELL_TYPE_NUMERIC
  • setCellValue(RichTextString) -CELL_TYPE_STRING
  • setCellValue(字符串) -CELL_TYPE_STRING
于 2013-03-14T17:05:10.010 回答