使用POI HSSF获取错误

尝试使用MS Office 2003打开Excel工作表时出现错误。此Excel工作表使用HSSFWorkbook创建,实现usermodel范围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); } }