2014-03-06 7 views
0

나는 언뜻보기에는 열심히 질문한다.하지만 아직 쉽게 이해할 수없는 매우 쉬운 해결책이있다. 오라클 데이터베이스 CLOB 열에 저장된 Excel 파일의 이진 데이터를 읽어야합니다.POI를 사용하여 Java에서 Excel 데이터 문제 읽기

java에서 CLOB을 문자열로 읽는 것이 좋습니다. 나는 문자열 매개 변수에 바이너리 파일을 엑셀 파일로 얻는다.

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 

내가 어떤 문제를 엑셀 인터넷 검색, 그들은 읽기 액세스에 대해 언급. 그래서 나는 hdd에 같은 엑셀 파일을 다운로드하고 그것으로 아무 것도 바꾸지 않는다 (심지어 내가 열지도 않았다), 파일 경로를 제공함으로써 FileInputStream을 사용한다. 그것은 완벽하게 작동했습니다. 이유가 무엇입니까?

CLOB에서 읽는 방법에 대한 조언이나 다른 방법을 알려드립니다.

미리 감사드립니다. 내 의견.

답변

2

CLOB는 문자 큰 OBject; BLOB - 바이너리 대형 개체를 사용하려고합니다. 데이터베이스 스키마를 변경하십시오.

어떤 일이 발생합니까? CLOB는 문자 집합을 사용하여 문자열을 데이터베이스 내부 형식으로 /에서 변환합니다. 이 경우 텍스트가 아닌 내용에 파일이 손상됩니다.

나를 따라 가면서 반복하십시오 : 문자열은 바이트 []가 아니며 문자는 바이트가 아닙니다.

+0

해결책을 찾아 주셔서 감사합니다. –