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

How to set the data format for the row in Excel?

我正在尝试将 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 sheet 并检查前两行中的单元格格式时,仅检查其一般格式。更改未反映在 Excel sheet 中。我没有明白我在这里做错了什么。

如果您是从头开始创建此 excel sheet,那么它还没有行。我在 getRow(0) 上获得了一个新的 sheet NullPointerException。尝试使用 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);
    }