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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (3)
  • 关注 (0)
  • 查看 (303)

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

考虑以下代码:

Date myDate = new Date();
HSSFCell myCell;
// code that assigns a cell from an HSSFSheet to 'myCell' would go here...
myCell.setCellValue(myDate);

当我将包含此单元格的工作簿写入文件并使用Excel打开它时,该单元格将显示为数字。是的,我确实意识到Excel将其“日期”存储为自1月1日1900日起的天数,而这正是单元格中的数字所代表的。

问:我可以在POI中使用什么API调用来告诉它,我希望对我的日期单元格应用默认的日期格式?

理想情况下,如果用户在Excel中手动打开电子表格,并输入Excel认为是日期的单元格值,我希望电子表格单元格以Excel指定的默认日期格式显示。

提问于
用户回答回答于

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);
用户回答回答于

你好、这个例子可以实现导出的 日期就是excel中的日期格式么?而不是字符串

用户回答回答于

此示例用于使用.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);

扫码关注云+社区