Apache POI日期格式化

15

你好,我正在读取CSV文件,并获取日期格式为01-01-2011,但我希望在使用Apache POI库写入.xlsx文件时将日期格式转换为01-Jan-2011。以下是我的代码:

XSSFDataFormat df = workBook.createDataFormat();
cs.setDataFormat(df.getFormat("dd-MMM-yy"));

但是对我不起作用,我错在哪里?


抱歉,cs 是什么? - Leo
@Leo 这是一个 XSSFCellStyle。 - stg
1个回答

23

你不仅需要创建单元格格式,还需要将其应用到单元格上!

XSSFDataFormat df = workBook.createDataFormat();
cs.setDataFormat(df.getFormat("d-mmm-yy"));

// Get / Create our cell
XSSFRow row = sheet.createRow(2);
XSSFCell cell = row.createCell(3);

// Set it to be a date
Calendar c = Calendar.getInstance();
c.set(2012,3-1,18); // Don't forget months are 0 based on Calendar
cell.setCellValue( c.getTime() );

// Style it as a date
cell.setCellStyle(cs);

其次,您需要知道Java和Excel在表达日期格式规则方面略有不同。您应该打开Excel的一个副本,将样本单元格格式化为所需格式,然后记录所需的格式规则。在您的情况下,您使用了Java风格的大写M,而在Excel中是小写(如上所示)。


2
你应该使用org.apache.poi.ss.util.DateFormatConverter来将Java风格的格式化程序转换为Excel风格的格式化程序,方法是调用DateFormatConverter.convert(Locale.getDefault(), "d-MMM-yy"):https://poi.apache.org/apidocs/dev/org/apache/poi/ss/util/DateFormatConverter.html - gouessej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接