首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从HSSFWorkbook生成xls-文件

从HSSFWorkbook生成xls-文件
EN

Stack Overflow用户
提问于 2015-01-16 13:45:29
回答 1查看 269关注 0票数 0

我正在创建一个excel文件:

代码语言:javascript
复制
public byte[] createReport() {
    List<ExportModel> exportModels = export.computeExportModels();
    HSSFWorkbook workbook = excelCreator.createWorkbook(exportModels);

    // return workbook.getBytes();
    return getByteArray(workbook);
}

private byte[] getByteArray(HSSFWorkbook workbook) {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    try {
        workbook.write(bos);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            bos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return bos.toByteArray();
}

虽然这确实有效,但它不适用于

代码语言:javascript
复制
workbook.getBytes();

如果我试图打开生成的xls-文件,Excel就会崩溃而无法打开它。你有这方面的经验吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 23:28:27

来自Apache用于HSSFWorkbook.getBytes()

公众byte[] getBytes() 方法getBytes -只获取XLS文件的HSSF部分的字节。使用它自己构建一个POI POIFSFileSystem。

Excel .xls文件必须包装在外部OLE2容器中(如由POIFSFileSystem生成的)。因此,您要么需要自己完成所有这些工作,要么只需要调用HSSFWorkbook.write(OutputStream) (作为javadocs解释)来完成这一切。

如果您想要写出一个HSSFWorkbook,并获取它的字节,那么除非您想做一些非常特殊的事情,只需做:

代码语言:javascript
复制
ByteArrayOutputStream baos = new ByteArrayOutputStream();
workbook.write(baos);
bytes[] excelFile = baos.toByteArray();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27985337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档