打开附加到电子邮件的HSSFWorkbook生成的Excel工作表时,Excel崩溃

时间:2010-01-26 17:19:46

标签: java excel crash attachment

我使用HSSFWorkbook生成了Excel电子表格,然后实现了自定义javax.activation.DataSource以将电子表格附加到电子邮件中。但是,在Excel中打开电子表格后,它会崩溃。 Excel可以恢复一些数据,但它会丢失大部分格式。

2 个答案:

答案 0 :(得分:8)

在DataSource实现中返回InputStream时,请确保您没有使用HSSWorkbook.getBytes(),因为这只会返回电子表格的特定部分(不能单独使用),而不是整个文件。使用write()方法代替ByteArrayOuputStream。例如:

public InputStream getInputStream() throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    workbook.write(baos);
    return new ByteArrayInputStream(baos.toByteArray());
}

请注意电子表格的大小,因为这会在内存中发生。考虑存储电子表格,并使用常规FileDataSource附加它。

HSSFWorkbook.getBytes()

答案 1 :(得分:0)

我认为问题出在POI中,它不会生成可读的excel文件。