ファイルによって、以下のエラーが出て解析しなくなってしまいます。
Warning: DOMDocument::loadHTMLFile(): Invalid char in CDATA 0x3 in hogehoge.xlsx, line: 1 in /usr/home/xxxxx/www/htdocs/user/Classes/PHPExcel/Reader/HTML.php on line 428
Warning: DOMDocument::loadHTMLFile(): Invalid char in CDATA 0x4 in .hogehoge.xlsx, line: 1 in /usr/home/xxxxx/www/htdocs/user/Classes/PHPExcel/Reader/HTML.php on line 428
Warning: DOMDocument::loadHTMLFile(): Invalid char in CDATA 0x14 in .hogehoge.xlsx, line: 1 in /usr/home/xxxxx/www/htdocs/user/Classes/PHPExcel/Reader/HTML.php on line 428
回避策はないのでしょうか?
xlsx形式のファイルはxmlをzipで固めたものです。
拡張子をzipに変えて開き、中の「_rels\.rels」に「Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"」という記述がありませんか?
もしzipで開けない、上記のファイルがない、記述がないとなるとPHPExcelはxlsxとして認識しません。ファイルが壊れていないか、暗号化されていないか確認してください。
もしファイルが開ける、記述もあるという場合、phpでzipがうまく開けないのかも知れません。
zipのライブラリやphpのバージョンが新しいか確認してみてはどうでしょう。
xlsx形式のファイルはxmlをzipで固めたものです。
拡張子をzipに変えて開き、中の「_rels\.rels」に「Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"」という記述がありませんか?
もしzipで開けない、上記のファイルがない、記述がないとなるとPHPExcelはxlsxとして認識しません。ファイルが壊れていないか、暗号化されていないか確認してください。
もしファイルが開ける、記述もあるという場合、phpでzipがうまく開けないのかも知れません。
zipのライブラリやphpのバージョンが新しいか確認してみてはどうでしょう。
ありがとうございました。
遅くなりましたが……
zipにも色々微妙な癖というか違いがある様で、microsoftのzipとphp(zlib?)のzipは相性というかそういうのが何かあるんですかね。
原因はよく分かりませんが、PHPExcelはPCLZipを同梱してて、そっちを使うことも出来るようです。
excelファイル開く前に
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
ってするみたいですので、試してみては。
https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/01-Getting-Started.md#php-complains-about-ziparchive-not-being-found
匿名回答1号 様 の回答を元の.zipファイルとして解凍してみました…
ローカル(ウィンドウズ上)では、問題なく開くことができ、_rels\.relsの存在も確認できました。
そこで、
今度は、サーバー上(OCNホスティング)で、ZipArchive()を使い.xlsxを解凍のみをおこなって見たところ21(ER_INCONS)が返ってきて、解凍できませんでした。
さらに、shell_exec('unzip '…)を使い解凍を試みたところ、解凍は、できたのですが、
xl\worksheets\sheet1.xmlの中に以下のようなXMLとして解釈できない記述ができてしまいます。
<c r="AA485" s="3"><v>9174</v></c><c r=">42"A485" s="1" t="ss="3"><v>9174</v> t="ss="3"><v>9174
ありがとうございました。
2015/12/30 10:52:02遅くなりましたが……
zipにも色々微妙な癖というか違いがある様で、microsoftのzipとphp(zlib?)のzipは相性というかそういうのが何かあるんですかね。
原因はよく分かりませんが、PHPExcelはPCLZipを同梱してて、そっちを使うことも出来るようです。
excelファイル開く前に
ってするみたいですので、試してみては。
2015/12/30 18:34:45https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Overview/01-Getting-Started.md#php-complains-about-ziparchive-not-being-found