我一直在使用Apache POI一段时间以编程方式读取现有的Excel 2003文件。现在我有了一个新的需求,即在内存中创建完整的.xls文件(仍然使用Apache POI),然后在最后将它们写入文件。以我的方式站在唯一的问题是处理与日期单元格。POI - 如何将单元格值设置为日期并应用默认的Excel日期格式?
考虑下面的代码:
Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);
当我写包含此单元格的工作簿到一个文件,并用Excel打开它,细胞显示为数字。是的,我确实意识到Excel会将它的'日期'存储为1900年1月1日以来的天数,这就是单元格中的数字。
问题:我可以在POI中使用哪些API调用来告诉它我希望将默认日期格式应用于我的日期单元格?
理想情况下,我希望电子表格单元格以与Excel分配的默认日期格式显示,如果用户在Excel中手动打开电子表格并键入Excel识别为日期的单元格值。
感谢忍者,这个作品为了我。对其他需要这样做的人的评论。有一个名为“BuiltinFormats”的POI类,列出了Excel知道的所有标准格式(不仅仅是日期格式)。我坚持使用其中的一个作为我上面代码片段中显示的'getFormat()'方法的参数。 – 2011-04-27 12:08:19
重要的部分在链接的评论中:我们将第二个单元格定为日期(和时间)。从工作簿中创建新的单元格样式非常重要,否则您最终可能会修改内置样式并且不仅影响此单元格而且会影响其他单元格。 – CGK 2013-09-24 13:27:48
谢谢,@ninja。你知道为什么需要'getCreationHelper()'吗?我现在正在使用Mule生成一个Excel输出文件,实际上我可以在不使用创建助手的情况下使用'createDataFormat()'并在我的测试中生成一个Excel文件。没有使用它有缺点吗?谢谢! – Rashiki 2017-03-28 15:23:39