尝试使用MS Office2003打开Excel工作表时出现错误。此Excel表是使用实现用户模型作用域org.apache.poi.hssf.usermodel的HSSFWorkbook创建的
在Microsoft Excel2003中:“太多不同的单元格格式”。在Microsoft Excel 2007/2010中,文件可能会生成以下错误消息:"Excel在文件中发现无法读取的内容“。这是关于单元格格式的,请参考下一页:
http://support.microsoft.com/kb/213904
那么我如何在代码中修复这个问题呢?
发布于 2012-07-14 23:51:04
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);
}
}https://stackoverflow.com/questions/11474402
复制相似问题