打开附加到电子邮件的HSSFWorkbook生成的Excel表时,Excel崩溃
问题描述:
我使用HSSFWorkbook生成了Excel电子表格,然后实现了自定义javax.activation.DataSource以将电子表格附加到电子邮件。但是,在Excel中打开电子表格时,它会崩溃。 Excel可以恢复一些数据,但是它会丢失大部分格式。打开附加到电子邮件的HSSFWorkbook生成的Excel表时,Excel崩溃
答
在DataSource实现中返回InputStream时,请确保您没有使用HSSWorkbook.getBytes(),因为这将只返回电子表格的特定部分(不能单独使用),而不是整个文件。使用write()方法而不是ByteArrayOuputStream。例如:
public InputStream getInputStream() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
return new ByteArrayInputStream(baos.toByteArray());
}
请谨慎处理电子表格的大小,因为这在内存中发生。考虑将电子表格存储并使用常规的FileDataSource附加。
答
我认为这个问题是在不生成可读的Excel文件中的POI。
实际上,它生成Excel工作表很好。问题很简单,一个方法(getBytes())不能按预期工作。该方法的JavaDoc证实了这一点。 – 2010-01-28 18:11:55