人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

「PHPExcel.php」によってエクセルデータを解析しているのですが、
ファイルによって、以下のエラーが出て解析しなくなってしまいます。
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

回避策はないのでしょうか?

●質問者: 匿名質問者
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● 匿名回答1号
ベストアンサー

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のバージョンが新しいか確認してみてはどうでしょう。


匿名質問者さんのコメント
ありがとうございました。

匿名回答1号さんのコメント
遅くなりましたが…… 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


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ