-1

我有一个要求,我需要为给定期间的所有交易生成报告,并且我需要相应地应用单元格格式。在这种情况下,在工作表中创建 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.");
}

}

4

1 回答 1

6

您正在循环内创建单元格样式。不!

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);
}
于 2013-01-31T09:40:43.857 回答