我正在尝试将Excel中行的数据类型设置为日期格式(' yyyy-MM-dd'),为此我编写了以下代码:
....
Row r = null;
CellStyle cellStyle = workbook.createCellStyle();
//CreationHelper createHelper = workbook.getCreationHelper();
cellStyle.setDataFormat(
workbook.createDataFormat().getFormat("yyyy-MM-dd"));
for(int i =0;i < 2;i++){
switch(i){
case 0:
r = sheet.getRow(0);
r.setRowStyle(cellStyle);
break;
case 1:
r = sheet.getRow(1);
r.setRowStyle(cellStyle);
break;
default:
break;
}
}
....
我只发布了前两行的格式以供参考。但是,当我运行我的代码并打开Excel工作表并检查前两行中的单元格格式时,它只是一般的。更改未在Excel工作表中反映出来。我没有得到我在这里做错了。
答案 0 :(得分:1)
如果您从头开始创建此excel表,那么它还没有行。我在NullPointerException
的新表中获得getRow(0)
。请尝试使用createRow(0)
:
public static void main(String[] args) throws JDOMException, IOException {
File excelFile = new File("C:/temp/test.xls");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("sheetname");
Row r = null;
CellStyle cellStyle = workbook.createCellStyle();
// CreationHelper createHelper = workbook.getCreationHelper();
cellStyle.setDataFormat(workbook.createDataFormat().getFormat("yyyy-MM-dd"));
for (int i = 0; i < 2; i++) {
switch (i) {
case 0:
r = sheet.createRow(0);
r.setRowStyle(cellStyle);
break;
case 1:
r = sheet.createRow(1);
r.setRowStyle(cellStyle);
break;
default:
break;
}
}
try (FileOutputStream out = new FileOutputStream(excelFile)) {
workbook.write(out);
}
Desktop.getDesktop().open(excelFile);
}