헤더 서명이 잘못되었습니다. Excel 문서에 Apache POI가 있는 IO 예외
다음과 같은 정보:
java.io .IO 예외:헤더 서명이 잘못되었습니다. 0x000201060000 참조FFE, 0xE11이 필요합니다.AB1A1E011CFD0
Apache POI HPSF를 사용하여 일부 사용자 정의 속성을 Excel 문서에 추가하려고 할 때.
저는 그 파일이 Excel OLE2(HTML, XML 또는 Excel이 불평하지 않는 다른 것이 아님)라고 완전히 확신합니다.
다음은 내 코드와 관련된 부분입니다.
try {
final POIFSFileSystem poifs = new POIFSFileSystem(event.getStream());
final DirectoryEntry dir = poifs.getRoot();
final DocumentEntry dsiEntry = (DocumentEntry)
dir.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
final DocumentInputStream dis = new DocumentInputStream(dsiEntry);
final PropertySet props = new PropertySet(dis);
dis.close();
dsi = new DocumentSummaryInformation(props);
}
catch (Exception ex) {
throw new RuntimeException
("Cannot create POI SummaryInformation for event: " + event +
", path:" + event.getPath() +
", name:" + event.getPath() +
", cause:" + ex);
}
워드 및 파워포인트 파일(OLE2)로 시도할 때 동일한 오류가 발생합니다.
저는 완전히 아이디어가 없어서 어떤 도움/포인터라도 감사합니다 :)
서명 번호를 뒤집으면 파일 시작 부분의 바이트가 표시됩니다.
0x000201060000FFE -> 0xFE 0xFF 0x000x0000x06 0x0100x0200
처음 두 바이트는 유니코드 BOM처럼 보이며, 0xFEFF는 16비트 작은 엔디안을 의미합니다.그러면 낮은 제어 바이트, 즉 0, 258, 2의 16진수 코드가 있으므로 텍스트 파일이 아닐 수도 있습니다.
해당 파일은 OLE2 파일이 아니며 POI가 오류를 제공하는 것이 맞습니다.뭔지는 모르겠지만, 아마도 외부 OLE2 래퍼가 없는 OLE2 파일의 일부일 것이라고 생각합니다.사무실에서 열 수 있다면 저장을 하고 POI로 열어도 괜찮을 것입니다.현재 상태로는 해당 헤더가 OLE2 파일 헤더가 아니므로 POI에서 열 수 없습니다.
제 경우, 파일은 CSV 파일로 저장되었습니다..xls
연장의엑셀은 문제없이 열 수 있었지만 POI는 그렇지 않았습니다.
더 나은/더 일반적인 해결책을 찾는다면, 다시 와서 여기에 작성하겠습니다.
직접 csv 파일로 저장하고 작업에 opencsv를 사용합니다.
opencsv에 대해 알아보려면 다음 링크를 사용하십시오.
http://opencsv.sourceforge.net/ #개방형 csv
Excel은 csv, xls 또는 xls로 저장된 html 테이블을 열 수 있습니다.
따라서 파일을 file_name.csv로 저장하고 opencsv를 사용하여 코드의 파일을 읽을 수 있습니다.
또는 엑셀 97-2003 워크북을 저장하여 엑셀에 파일을 한 번 저장할 수 있습니다.
그러면 POI 자체가 파일을 읽을 수 있습니다 :-)
Excel 2013에 파일을 저장했기 때문입니다. 파일을 Excel 97-2003 형식으로 저장합니다.
소프트웨어에서 생성된 xls 파일에도 동일한 문제가 있었습니다. Apache POI로 읽을 수 있도록 엑셀(동일한 형식)로 파일을 저장해야 합니다.
.xls 대신 .xlsx 파일을 사용하고 있었습니다.워크북, Sheet, Row 클래스를 사용하는 경우에는 .xls 파일을 사용해야 합니다.제 파일은 .xlsx로, 이 문제를 일으켰고 저는 .xls로 바꿨습니다. 작동했습니다.
언급URL : https://stackoverflow.com/questions/3677925/invalid-header-signature-ioexception-with-apache-poi-on-excel-document
'source' 카테고리의 다른 글
데이터 프레임 목록을 다중 시트 Excel 스프레드시트에 저장 (0) | 2023.08.30 |
---|---|
jQuery ajax 성공 오류 (0) | 2023.08.30 |
당신은 아이패드에서 HTML5 비디오를 자동 재생할 수 있습니까? (0) | 2023.08.25 |
스위프트 - 코너 반경 및 드롭 섀도우 문제 (0) | 2023.08.25 |
우분투에서 이클립스의 루트로 애플리케이션을 디버그하는 방법은 무엇입니까? (0) | 2023.08.25 |