当前位置:  开发笔记 > 编程语言 > 正文

POI - 如何将单元格值设置为日期并应用默认Excel日期格式?

如何解决《POI-如何将单元格值设置为日期并应用默认Excel日期格式?》经验,为你挑选了3个好方法。

我已经使用Apache POI一段时间以编程方式读取现有的Excel 2003文件.现在我有了一个新的要求,即在内存中创建整个.xls文件(仍使用Apache POI),然后将它们写入文件末尾.阻碍我的唯一问题是处理带日期的细胞.

请考虑以下代码:

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默认日期格式与Excel分配的格式相同.



1> ninja..:

http://poi.apache.org/spreadsheet/quick-guide.html#CreateDateCells

CellStyle cellStyle = wb.createCellStyle();
CreationHelper createHelper = wb.getCreationHelper();
cellStyle.setDataFormat(
    createHelper.createDataFormat().getFormat("m/d/yy h:mm"));
cell = row.createCell(1);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);


谢谢忍者,这适合我.对于需要这样做的其他人的评论.有一个名为`BuiltinFormats`的POI类列出了Excel知道的所有标准格式(不仅仅是日期格式).我坚持使用其中一个用作上面代码片段中显示的`getFormat()`方法的参数.

2> BlondCode..:

要设置为默认Excel类型日期(默认为操作系统级别区域设置/ - >例如,如果您在Excel的单元格格式选择器中选择,则在德国或英国人打开时xlsx将显示不同/并且标有星号)您应该:

    CellStyle cellStyle = xssfWorkbook.createCellStyle();
    cellStyle.setDataFormat((short)14);
    cell.setCellStyle(cellStyle);

我用xlsx做到了它并且工作正常.



3> Mr. Port St ..:

此示例适用于.xlsx文件类型.此示例来自用于创建.xslx电子表格的.jsp页面.

import org.apache.poi.xssf.usermodel.*; //import needed

XSSFWorkbook  wb = new XSSFWorkbook ();  // Create workbook
XSSFSheet sheet = wb.createSheet();      // Create spreadsheet in workbook
XSSFRow row = sheet.createRow(rowIndex); // Create the row in the spreadsheet


//1. Create the date cell style
XSSFCreationHelper createHelper = wb.getCreationHelper();
XSSFCellStyle cellStyle         = wb.createCellStyle();
cellStyle.setDataFormat(
createHelper.createDataFormat().getFormat("MMMM dd, yyyy")); 

//2. Apply the Date cell style to a cell

//This example sets the first cell in the row using the date cell style
cell = row.createCell(0);
cell.setCellValue(new Date());
cell.setCellStyle(cellStyle);

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有