尝试使用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
那么如何在代码中修复此问题?
答案 0 :(得分:2)
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);
}
}