質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

7512閲覧

phpexcel 2007形式のダウンロードで

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2016/05/20 15:53

環境: windows7
PHP: 5.4
Apache: 2.4

PHP EXCELで、Excel2007形式で作成でき、それを
ダウンロードさせると($writer->save('php://output');)
Excel起動時に、「output.xlsxには読み取れない内容が含まれています。このブック内容を回復しますか?...」と表示されてしまいます。

$book = new \PHPExcel(); $book->getActiveSheet()->setTitle('テスト'); header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="output.xlsx"'); header('Cache-Control: max-age=0'); $writer = \PHPExcel_IOFactory::createWriter($book, 'Excel2007'); $writer->save('php://output');

一方、PHP EXCELで、Excel2007形式で作成したファイルをダウンロードではなく、サーバーに保存し、それを開くと、上記メッセージはでませんでした。

$book = new \PHPExcel(); $sheet = $book->getActiveSheet(); $sheet->setCellValue('A1', 'テスト'); // xlsx: Excel2007~ $writer2007 = \PHPExcel_IOFactory::createWriter($book, 'Excel2007'); $writer2007->save('08-excel2007.xlsx');

ダウンロードで、Excel起動時に、前述のメッセージがでないようにしたいのですが、原因はなになりますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ダウンロードしたxlsファイルをテキストエディタで開いたさいにphpエラー等が入っていませんか?
それぽい表示がなければヘッダーが原因と勝手に決めつけて、下記でどうでしょうか。

php

1header("Pragma: public"); 2header("Expires: 0"); 3header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 4header("Content-Type: application/force-download"); 5header("Content-Type: application/octet-stream"); 6header("Content-Type: application/download"); 7header("Content-Disposition: attachment;filename=name.xlsx"); 8header("Content-Transfer-Encoding: binary");

かなり昔に作ったものなので解説するのは厳しいのですが、同様にExcel2007をダウンロードするプログラムを作成したときに使ったヘッダーです。

投稿2016/05/20 16:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/05/20 16:13

ありがとうございます! 上記も試してみてもダメでなんだかと思いましたが、 テキストで開く!を教えていただいたおかげで、 開いた所、htmlが出力されていて、 exit();が抜けていることに気づきました! ありがとうございます!勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問