Apache POI Excel单元格格式不能超出工作表中的32748单元格

-1 apache-poi

我有一个要求,我需要为给定时间段内的所有事务生成报告,我需要相应地应用单元格格式.在这种情况下,单元格格式化不起作用,特别是在工作表中创建32748单元格后的日期.这似乎是API中的错误,如果有人已经遇到此问题并发现任何修复,请提供一些输入.

供参考,以下是示例代码:

public class TestFormat {

public static void main(String args[]){
    try {
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("Excel Sheet");

    HSSFDataFormat format = wb.createDataFormat();


    for(int i = 1; i<65535;i++ ) {

            HSSFRow row = sheet.createRow(i);
            HSSFCell cell = row.createCell(1);
            HSSFCellStyle style = wb.createCellStyle();
            cell.setCellValue((Date) new Date());
            style.setDataFormat(format.getFormat("MM/dd/yyyy HH:mm:ss"));
            cell.setCellStyle(style);

    }
    FileOutputStream fileOut;

        fileOut = new FileOutputStream("c:\\test\\excelFile.xls");
         wb.write(fileOut);
            fileOut.close();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println("Data is saved in excel file.");
}
Run Code Online (Sandbox Code Playgroud)

}

Gag*_*arr 5

您建立的单元格样式循环.别!

Excel对文件格式允许的单元格样式数有限制.你需要做的是在你的循环之外移动你的单元格样式的创建/设置,所以它只创建一次,它应该没问题

您的代码的核心部分将如下所示:

HSSFDataFormat format = wb.createDataFormat();
HSSFCellStyle style = wb.createCellStyle();
cell.setCellValue((Date) new Date());
style.setDataFormat(format.getFormat("MM/dd/yyyy HH:mm:ss"));

for(int i = 1; i<65535;i++ ) {
        HSSFRow row = sheet.createRow(i);
        HSSFCell cell = row.createCell(1);
        cell.setCellStyle(style);
}
Run Code Online (Sandbox Code Playgroud)