如何在Excel中设置行的数据格式?

时间:2015-11-25 11:36:21

标签: java excel apache-poi

我正在尝试将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工作表中反映出来。我没有得到我在这里做错了。

1 个答案:

答案 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);
    }