我正在一个项目中工作,我有HH:MM:SS.sss
格式的数据,我必须在Excel / Spreadsheet中生成报告。我正在使用POI生成excel文件,但我遇到了以下问题:
如果我以字符串格式设置数据,即cell.setCellValue("02:45:6.7");
,则无法使用average
,sum
等Excel公式。即使我在{[h]:mm:ss.000;@
格式化单元格{1}}即cs.setDataFormat(df.getFormat("[h]:mm:ss.000;@"))
不起作用,因为它是字符串。
HSSFCellStyle cs = hssfworkbook.createCellStyle();
HSSFDataFormat df = hssfworkbook.createDataFormat();
cs.setDataFormat(df.getFormat("[h]:mm:ss.000;@"));
Excel没有以hh:mm:ss.sss
格式获取数据的任何功能(据我所知),我尝试使用'TIME(HH,MM,SS)'并将单元格格式化为{{1小数点后面的值不会显示为000,即[h]:mm:ss.000;@
我尝试对POI源代码进行更改,我尝试了这个问题中的步骤https://stackoverflow.com/a/10306350/2513084但它仍然不起作用。生成的文件说 - 此文件的某些公式或名称包含Kingsoft Spreadsheet不支持的内置函数,重新计算这些公式或名称可能会导致错误的结果。 Microsoft Office无法打开它给出错误的文件文件错误:数据可能已丢失。
答案 0 :(得分:0)
我很长一段时间没有和POI合作,但据我记得......日期不过是数字(毫秒)。只有单元格类型被定义为日期/数字单元格。
然后在其他地方定义细胞的实际视觉表示。
我的一些旧代码(可能不是最新的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
部分......以及如何设置它(抱歉这个部分没有工作示例)。也许它可以与您的代码一起使用...因为您没有将值设置为数字而是设置为字符串。