PHPEXCELで出力したExcel(xlsx)ファイルを開いた際にエラーが発生します・・・
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 5,769
前提・実現したいこと
PHPEXCELを使用してxlsx(2007以降形式)のファイルを出力したいと考えております。
発生している問題・エラーメッセージ
PHPEXCELを使用してxlsxファイルを作成後、作成されたファイルを開くと
「一部の内容に問題が見つかりました。可能な限りの内容を・・・・」
と出て、「はい」をおすと、「削除されたレコード:/xl/workbook.xml テーマ(ブック)」と表示され、データは表示されるのですが、警告・エラーがでてしまい困っています。
terateilにのっている過去記事等も見させていただきましたが、
//PHPExcelファイルの読み込み
include_once ( DIR . '/Classes/PHPExcel.php');
include_once ( DIR . '/Classes/PHPExcel/IOFactory.php');
// Excel2007形式(xlsx)テンプレートの読み込み
$reader = PHPExcel_IOFactory::createReader('Excel2007');
$excel = $reader->load( DIR . '/template.xlsx' );
// シートの設定
$excel->setActiveSheetIndex(0);//何番目のシートか
$sheet = $excel->getActiveSheet();//有効になっているシートを代入
// セルに値を入力
$sheet->setCellValue('A8', 'こんにちは!');//A1のセルにこんにちは!という値を入力
// Excel2007形式で出力する
$writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$file_name = 'output.xlsx';//ダウンロードさせるファイル名
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//ダウンロードの指示
header("Content-Disposition: attachment; filename=$file_name");//ダウンロードするファイル名
$writer->save('php://output');
exit; // これ入れてください
上記ソースコードで問題なく動くという意見がみられました。
実際に上記ソースコードを試しましたが、問題は解決しませんでした。
セルに埋め込む値をEUCからUTF8に度々変換して出力しておりますが、文字コード等関係はあるのでしょうか。
該当のソースコード
業務の性質上ソースコードを載せることができません(小規模な会社ですが、情報の持ち出しはNGとされているため)
試したこと
文頭でも述べましたが、terateilの過去記事や、excel特有のエラーを調べたり、phpexcelの仕様も確認したりしました。
しかし、なかなか目的とする回答がみつけられなかった次第です。
補足情報(言語/FW/ツール等のバージョンなど)
開発言語:PHP
PHPEXCELバージョン:1.8.0
出力excel形式:xlsx
実際にexcelを開くofficeのバージョン:2013
長くなりましたが、こちらの現象にこころあたりのあるかたがいらっしゃいましたら、ご回答いただけると非常に助かります。
よろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
$writer->save() を行う直前に、ob_end_clean() を呼び出して出力バッファを空にしておかないとまずい場合があったように記憶しています。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
その出力されたxlsxの中身を見てみればわかるのではないでしょうか。
よくあるのが、エラーが発生して、エラーのログが書きだされ、開けない場合があります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.12%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/02/11 12:42
ありがとうございました。
php_zipがphp5.2.9より前は正常に動作しないみたいです。
2017/02/11 15:45
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);