当前位置: 首页 > 面试题库 >

使用POI HSSF出错

薛经纶
2023-03-14
问题内容

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

在Microsoft Excel 2003中:“太多不同的单元格格式”。在Microsoft Excel
2007/2010中,文件可能会产生以下错误消息:“ Excel在文件中发现了不可读的内容”。这与单元格格式有关,请参阅以下页面:

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

那么如何在代码中解决此问题?


问题答案:

Excel限制了您可以使用的不同单元格样式的数量,而且该数量非常少。对于刚接触POI的人们来说,一个普遍的问题是他们跳过了有关工作簿范围内的单元格样式的知识,而改为为每个单元格创建一个单元格样式。这很快使它们超过了Excel中的限制…

您以前编写代码的地方可能看起来像

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

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

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


 类似资料:
  • 问题内容: 我的代码- 错误- > 警告:mysql_real_escape_string()[function.mysql-real-escape-string]:在C:\ xampp \ htdocs \ shizin \ admin \中拒绝访问用户’ODBC’@’localhost’(使用密码:NO)第48行的newArticle.php 警告:mysql_real_escape_stri

  • 为什么我在使用: mysqli_report(MYSQLI_REPORT_ALL);?致命错误:未捕获异常“mysqli_sql_exception”,在d:\xampp\htdocs\cms\includes\class\db.class.php:31堆栈跟踪:#0 d:\xampp\htdocs\cms\includes\class\db.class.php(31):mysqli->查询(“S

  • 我刚刚在Imac Os 10.6.8上安装了Enthough Corporation。当我尝试测试sklearn时,我收到一条错误消息(附在下面)。错误是:numpy。果心多重数组导入失败。看起来使用的是错误版本的numpy。我不知道怎么修理。 mu51220:~rscherl$python Enthow Canopy python 2.7.3 | 32位|(默认值,2013年6月14日,18:2

  • 我试图使用fromFile,但我得到错误。该文件已经存在,可以用打开,但是如果我用相同的路径打开同一个文件,会出现错误。下面是我的代码: 以下是错误

  • 当我使用Firebase时,我总是遇到这个错误! > 出了什么问题: 任务执行失败:应用程序:transformResourcesWithMergeJavaResForDebug。com.android.build.api.transform。TransformException:com.android.builder.packaging。DuplicateFileException:在APK M