使用Apache POI SXSSF API使用具有内置格式的模板编写xlsx

时间:2013-03-14 02:56:40

标签: apache-poi xlsx

我在尝试查看是否可以让模板处理格式化(例如:将字符串(数字,日期,小数值)转换为其本机数据类型)使用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文件仍然将数字和日期视为字符串。
  3. 我的模板格式错误了吗?我试图做的是可行的吗?

1 个答案:

答案 0 :(得分:2)

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

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

  • setCellValue(boolean) - CELL_TYPE_BOOLEAN
  • setCellValue(日历) - CELL_TYPE_NUMERIC(Excel将日期存储为数字)
  • setCellValue(Date) - CELL_TYPE_NUMERIC(Excel将日期存储为数字)
  • setCellValue(double) - CELL_TYPE_NUMERIC
  • setCellValue(RichTextString) - CELL_TYPE_STRING
  • setCellValue(String) - CELL_TYPE_STRING