【发布时间】:2014-03-06 10:15:52
【问题描述】:
我有一个问题乍一看很难,但可能有一个非常简单的解决方案,我还无法弄清楚。我需要读取存储在 oracle 数据库 CLOB 列中的 excel 文件的二进制数据。
在java中将CLOB读取为字符串一切正常。我将excel文件作为字符串参数的二进制文件。
String respXLS = othRaw.getOperationData(); // here I get excel file
InputStream bais = new ByteArrayInputStream(respXLS.getBytes());
POIFSFileSystem fs = new POIFSFileSystem(bais);
HSSFWorkbook wb = new HSSFWorkbook(fs);
然后我尝试读取 ByteStreamData 并放入 POIFSFileSystem 但我得到了这个异常:
java.io.IOException: Invalid header signature; read 0x00003F1A3F113F3F, expected 0xE11AB1A1E011CFD0
我搜索了一些 excel 问题,他们提到了读取权限。因此,我将相同的 excel 文件下载到 hdd 并对其进行任何更改(即使我没有打开它),并通过提供文件路径来使用 FileInputStream。它完美无缺。那么是什么原因呢?
任何从 CLOB 阅读的建议或替代方式将不胜感激。
提前致谢, 我的问候。
【问题讨论】:
标签: java apache-poi fileinputstream clob