我正在使用apache poi 3.8来创建一个excel文件。这个excel文件需要包含一些日期。
我正在尝试使用excel类型“date”的格式将日期写入excel文件。但我总是得到一种“定制”类型。我需要使用“日期”类型,因此它将根据用户设置进行本地化。
我尝试了以下内容:
Apache POI localized Date into Excel cell
但它不起作用。
这是我的代码:
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("new sheet");
XSSFDataFormat df = wb.createDataFormat();
CellStyle cs = wb.createCellStyle();
cs.setDataFormat(df.getFormat("d-mmm-yy"));
XSSFCell cell = sheet.createRow(0).createCell(0);
Calendar c = Calendar.getInstance();
c.set(2012,3-1,18);
cell.setCellValue( c.getTime() );
cell.setCellStyle(cs);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("c:\\temp\\dates-sworkbook.xlsx");
wb.write(fileOut);
fileOut.close();
我应该使用哪种格式?
由于
答案 0 :(得分:9)
日期是一种特殊的内置格式。如果你想明确地使用那个,那么你需要明确地选择它。 (Excel中使用的几乎所有格式都是自定义格式,它们呈现您指定的格式,但有一些特殊格式)
POI在BuiltinFormats中有完整的特殊内置格式列表(比最近的Excel副本中的格式列表小得多!)。如果你确定你设置了其中一个,而不是你自己的自定义格式字符串,它应该完全按照你的预期行事
答案 1 :(得分:4)
不知道你是否已经解决了这个问题,但这里有一个可以解决问题的代码。 它实际上解决了我的问题。
CreationHelper createHelper = wb.getCreationHelper();
...
cs.setDataFormat(createHelper.createDataFormat().getFormat("yourformat"));
取自 http://poi.apache.org/spreadsheet/quick-guide.html#CreateDateCells
答案 2 :(得分:0)
我理解你的问题。我解决了使用Apache Poi的DateUtil。
Cell cell = yourRow.createCell(yourIndex);
cell.setCellValue(DateUtil.getExcelDate(yourDate);
享受!!
答案 3 :(得分:0)
使用以下方法解决:
DataFormatter fmt = new DataFormatter();
Object Excel1data=Excel.readExcel(Excel1, "Sheet3", rownumber, columnnumber1);
String valueAsInExcel1 = fmt.formatCellValue((Cell) Excel1data);
Object Excel2Data=Excel.readExcel(Excel2, "Sheet2", getrownumber, columnnmumber2);
String valueAsInExcel2 = fmt.formatCellValue((Cell) Excel2Data);
org.testng.Assert.assertEquals(valueAsInExcel1, valueAsInExcel2,"Incorrect data in RowNumber:"+getrownumber+" ColumnNumber:"+columnnmumber2);
columnnumber1++;