首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将单元格值设置为日期并应用默认Excel日期格式?

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

Stack Overflow用户
提问于 2011-04-27 02:17:45
回答 7查看 210.4K关注 0票数 109

我使用Apache POI以编程方式读取现有的Excel2003文件已经有一段时间了。现在我有了一个新需求,需要在内存中创建整个.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为其分配的默认日期格式相同。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-04-27 02:25:29

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);
票数 196
EN

Stack Overflow用户

发布于 2016-12-13 23:17:08

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

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

我用xlsx做了这件事,它工作得很好。

票数 28
EN

Stack Overflow用户

发布于 2014-01-29 08:24:09

此示例用于处理.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);
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5794659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档