首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用POI HSSF获取错误

使用POI HSSF获取错误
EN

Stack Overflow用户
提问于 2012-07-14 00:20:18
回答 1查看 1.6K关注 0票数 1

尝试使用MS Office2003打开Excel工作表时出现错误。此Excel表是使用实现用户模型作用域org.apache.poi.hssf.usermodel的HSSFWorkbook创建的

在Microsoft Excel2003中:“太多不同的单元格格式”。在Microsoft Excel 2007/2010中,文件可能会生成以下错误消息:"Excel在文件中发现无法读取的内容“。这是关于单元格格式的,请参考下一页:

http://support.microsoft.com/kb/213904

那么我如何在代码中修复这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-14 23:51:04

Excel对不同单元格样式的数量有限制,而且出人意料地低。对于使用POI的新手来说,一个常见的问题是他们跳过了工作簿宽度的单元格样式,而是为每个单元格创建一个单元格样式。这很快就会将它们推到Excel中的极限...

您的代码可能以前看起来像这样

代码语言:javascript
复制
Sheet s = wb.createSheet();
for (int rn=0; rn<=10; rn++) {
    Row r = s.createRow(rn);
    for (int cn=0; cn<=4; cn++) {
        Cell c = r.createCell(c);
        c.setCellValue( getMyCellValue(rn,cn) );

        CellStyle cs = wb.createCellStyle();
        cs.setBold(true);
        if (cn == 2) { 
            cs.setDataFormat( DataFormat.getFormat(yyyy/mm/dd) );
        }
        c.setCellStyle(cs);
    }
}

相反,您需要从头开始创建单元格样式,例如

代码语言:javascript
复制
CellStyle bold = wb.createCellStyle();
bold.setBold(true);

CellStyle boldDate = wb.createCellStyle();
boldDate.setBold(true);
boldDate.setDataFormat( DataFormat.getFormat(yyyy/mm/dd) );

Sheet s = wb.createSheet();
for (int rn=0; rn<=10; rn++) {
    Row r = s.createRow(rn);
    for (int cn=0; cn<=4; cn++) {
        Cell c = r.createCell(c);
        c.setCellValue( getMyCellValue(rn,cn) );

        CellStyle cs = bold;
        if (cn == 2) { 
            cs = boldDate;
        }
        c.setCellStyle(cs);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11474402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档