我使用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为其分配的默认日期格式相同。
发布于 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);
发布于 2016-12-13 23:17:08
要设置为默认的Excel类型日期(默认为操作系统级别的区域设置/->,即xlsx在由德国人或英国人打开时看起来不同,并且如果在Excel的单元格格式选择器中选择它,则会用星号标记),您应该:
CellStyle cellStyle = xssfWorkbook.createCellStyle();
cellStyle.setDataFormat((short)14);
cell.setCellStyle(cellStyle);
我用xlsx做了这件事,它工作得很好。
发布于 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);
https://stackoverflow.com/questions/5794659
复制相似问题