首页 文章

从上载的.xlsx(2007 Excel文件)创建xssf工作簿

提问于
浏览
2

在代码中,客户端通过struts上传标准的.xlsx文件 .

在操作中我们使用文件

FormFile myfile = ABCForm.getTheFile();

我的查询是如何从该文件中创建XSSFWorkbook .

我也有一个以这种方式访问2003 excel文件的并行进程

FormFile myfile = ABCForm.getTheFile();
byte[] fileData = myFile.getFileData();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileData);

in the Helper class

POIFSFileSystem fs = new POIFSFileSystem(byteArrayInputStream);
HSSFWorkbook wb = new HSSFWorkbook(fs);

然后进一步处理工作簿 .

我想知道如何创建一个XSSFWorkbook,因为我已经在上面创建了HSSFWorkbook .

我在classpath和lib文件夹中有所有ooxml和相关的jar .

无法从byteArrayInputStream创建XSSFWorkbook . Apache XSSF Workbook . 它只能从Inputstream和OPCPackage创建 .

关于如何进一步发展的任何想法/指示 . 我很乐意提供有关其他任何有用的代码片段的详细信息 .

1 回答

  • 8

    您可以愉快地从InputStream创建XSSFWorkbook

    一种选择是使用WorkbookFactory,它会自动检测相应的类型并为您返回HSSFWorkbook或XSSFWorkbook:

    Workbook wb = WorkbookFactory.create(inputStream);
    

    否则,您可以从以下流创建XSSFWorkbook:

    XSSFWorkbook wb = new XSSFWorkbook(OPCPackage.open(inputStream));
    

    但是,请注意,从文件打开XSSFWorkbook需要的内存少于来自Stream的内存 - 使用Stream需要将整个文件缓冲到内存中

相关问题