POI – 以HH:MM:SS.sss格式处理数据

我正在一个项目中,我有HH:MM:SS.sss格式的数据,我必须在Excel / Spreadsheet中生成报告。 我正在使用兴趣点来生成Excel文件,但我面临以下问题:

  1. 如果我设置数据string格式,即cell.setCellValue("02:45:6.7"); 即使我使用[h]:mm:ss.000;@ ie cs.setDataFormat(df.getFormat("[h]:mm:ss.000;@"))不起作用,因为它是string。

    HSSFCellStyle cs = hssfworkbook.createCellStyle(); HSSFDataFormat df = hssfworkbook.createDataFormat(); cs.setDataFormat(df.getFormat("[h]:mm:ss.000;@"));

  2. Excel没有任何函数(根据我的知识)以hh:mm:ss.sss格式获取数据,我尝试使用'TIME(HH,MM,SS)'并将单元格格式化为[h]:mm:ss.000;@小数点后的值不会显示000,即TIME(02,45,6.7) is displayed as 02:45:6.000

  3. 我试图在POI源代码进行更改,我试着按照这个问题的步骤https://stackoverflow.com/a/10306350/2513084仍然无法正常工作。 生成的文件说 – 一些公式或此文件的名称包含金山电子表格不支持的内置函数,重新计算这些公式或名称可能会导致不正确的结果。 微软Office无法打开它给出错误的文件文件错误:数据可能已经丢失。

我很长一段时间没有和POI一起工作,但据我所知,date不是数字(毫秒)。 只有单元格types被定义为date/数字单元格。

然后在其他地方定义细胞的实际视觉表示。

我的一些旧的代码(可能不是最新的POI版本有这样的说法):

 HSSFCell cell = newRow.createCell(column); Date date = new Date(some_date_value); cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); cell.setCellValue(date); 

您可以将单元格样式(显示格式)设置为:

 cell.setCellStyle(style); 

所以我会深入研究style一部分…以及如何设置(对不起,没有这个部分的工作示例)。 也许它会与你的代码一起工作…因为你没有把数值设置为string。