字节数组在内存中转为excel文件

业务场景:查询文档获取里面的数据,然后组装返回。
问题描述:我现在拿到了文档的base64字符串,我用base64Decoder转为了byte[],现在怎么把字节数组在内存中转为excel文件,然后获取里面的sheet(不止一个)表的字段的数据。我会把字节数组读到本地写成文件,这个比较简单,有四张sheet表,有可能是中文也可能是英文(根据用户操作数据时的界面不同,我下载的文件的sheet表名和表中的字段名也会对应成中文或英文),把本地文件读到内存,网上应该能找到不少,但我不能把文件存到硬盘上转为excel,在从硬盘上读取到内存中获取数据吧,有没有办法可以在内存中直接转为excel,然后读取数据呢?

String  termsFile = String.valueOf(sapResult.get("File"));
BASE64Decoder base64Decoder = new BASE64Decoder();
byte[] bytes = base64Decoder.decodeBuffer(termsFile);
我pom文件里,目前只有一个apache的
org.apache.poi
poi-ooxml
4.1.2

可以试试下面方法能不能帮上你
1.用WorkbookFactory类将字节数组转换为Workbook对象

byte[] data = ... // base64解码后的字节数组
InputStream is = new ByteArrayInputStream(data);
Workbook workbook = WorkbookFactory.create(is);

2.用Workbook对象来访问Excel文件中的各个表单(sheet)

Sheet sheet = workbook.getSheetAt(0); // 获取第一个表单
// 或者根据表单名称获取表单
Sheet sheet = workbook.getSheet("Sheet1");

3.有了表单对象,你可以遍历它的行和单元格,以获取所需的数据:

for (Row row : sheet) {
  for (Cell cell : row) {
    switch (cell.getCellType()) {
      case Cell.CELL_TYPE_STRING:
        System.out.println(cell.getStringCellValue());
        break;
      case Cell.CELL_TYPE_NUMERIC:
        System.out.println(cell.getNumericCellValue());
        break;
      // 其他数据类型
    }
  }
}
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^