使用POI从Java中的DB(CLOB列)读取Excel数据问题

使用POI从Java中的DB(CLOB列)读取Excel数据问题,java,apache-poi,fileinputstream,clob,Java,Apache Poi,Fileinputstream,Clob,我有一个问题乍一看很难解决,但可能有一个很简单的解决方案,我还没弄明白。我需要读取存储在oracle数据库CLOB列中的excel文件的二进制数据 在java中将CLOB作为字符串读取,一切都正常。我将excel文件作为字符串参数的二进制文件 String respXLS = othRaw.getOperationData(); // here I get excel file InputStream bais = new ByteArrayInputStream(respXLS.getByte

我有一个问题乍一看很难解决,但可能有一个很简单的解决方案,我还没弄明白。我需要读取存储在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);
然后,我尝试读取ByTestStreamData并将其放入POIFSF文件系统中,但出现以下异常:

java.io.IOException: Invalid header signature; read 0x00003F1A3F113F3F, expected 0xE11AB1A1E011CFD0
我用谷歌搜索了一些excel问题,他们提到了读访问。因此,我将同一个excel文件下载到hdd中,并没有对其进行任何更改(即使我没有打开它),并通过提供文件路径来使用FileInputStream。它工作得完美无缺。那么原因是什么呢

如有任何建议或其他阅读CLOB的方式,我们将不胜感激

提前感谢,, 我的问候。

CLOB表示字符大对象;您希望使用BLOB二进制大对象。更改数据库架构

发生的情况是,CLOB将使用字符集将字符串转换为数据库内部格式(无论是什么格式);这将导致非文本内容的文件损坏


跟我重复一遍:字符串不是字节[],字符不是字节。

谢谢您的解决方案。