首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将HSSFWorkbook写入ByteArray,然后将其读取到HSSFWorkbook

无法将HSSFWorkbook写入ByteArray,然后将其读取到HSSFWorkbook
EN

Stack Overflow用户
提问于 2013-08-19 19:05:15
回答 1查看 9.1K关注 0票数 0

5i需要将HSSFWorkbook (Apache的POI)转换为ByteArray,然后再将ByteArray转换回HSSFWorkbook。下面的TestCase说明了我的问题:

代码语言:javascript
复制
   @Test
   public void testXLSExportImport(){
      try {
         InputStream is = new FileInputStream(FILEPATH);
         HSSFWorkbook wb = new HSSFWorkbook(is);
         byte[] exported = wb.getBytes();
         HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(exported)); 
         //in the line above the exception is thrown
      } catch (Exception e) {
         assertTrue(false);
      }
   }

测试用例失败,例外情况是: java.io.IOException:无效头签名;读取0x0005060000100809,预期0xE11AB1A1E011CFD0

(我使用的是ApachesPOI3.5-beta3)

我希望有人能帮我。我怎么才能让它起作用!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-19 20:40:50

您没有正确地编写工作簿!您需要使用写(输出流)调用。

网站上的各种例子所示,您的代码应该是:

代码语言:javascript
复制
     InputStream is = new FileInputStream(FILEPATH);
     HSSFWorkbook wb = new HSSFWorkbook(is);
     ByteArrayOutputStream out = new ByteArrayOutputStream();
     wb.write(out);
     HSSFWorkbook wb2 = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray())); 

另外,如果您有一个直接使用FileInputStream的文件,请不要打开一个工作簿。从文件使用内存比来自流的内存少打开。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18321201

复制
相关文章

相似问题

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