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

时间:2012-03-29 22:28:43

标签: java apache-poi

在代码中,客户端通过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 个答案:

答案 0 :(得分:9)

您可以愉快地从InputStream

创建XSSFWorkbook

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

Workbook wb = WorkbookFactory.create(inputStream);

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

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

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