phpによるExcel形式でのダウンロードプログラムを作っているのですが、どうしても分からない部分があり、質問させて頂きます。
下記のphpコードでExcel形式でのダウンロードを試みているのですが、Firefoxでは問題なく動作するのですが、IE6だと普通に
htmlとしてブラウザに表示されてしまいます。
最初は他のヘッダーが出力されてしまっているのかと思い、
header("Content-Type: application/vnd.ms-excel")の前に
headers_sent()関数を挿入してチェックしてみたのですが、
falseが返ってきており、問題はなさそうでした。
php.iniでもsession.auto_startは0で設定しています。
原因が分かる方、どなたかご教示お願いできませんでしょうか。
宜しくお願いします。
環境:WindowsXP IE6sp2
---hogehoge.php-----------
<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=hoge.xls");
$aaa = '<html><head><title>hogehoge</title></head><body>';
$aaa .= '<table border="1"><tr><td>aaaaabb</td></tr>';
$aaa .= '<tr><td>aaaaacccc</td></tr></table></body></html>';
print $aaa;
exit;
?>
No.1ベストアンサー
- 回答日時:
#これをダウンロードしてExcelファイルになるんでしょうか?
ブラウザに返しているContent-TypeはExcelですが、中身はhtmlですよね?IEはContent-Typeを重視しないので中身がhtmlだとhtmlで扱ってしまうと思います。
普通は
<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=hoge.xls");
readfile("hoge.xls");
?>
といった書き方になると思いますが・・
この回答への補足
ご回答ありがとうございます。
プログラムは↓
http://www.bricklife.com/weblog/000051.html
のサイトにあった方法を参考に書いてみました。
それで、結果的にはアパッチの再起動をしたところ
IE6でも今現在は問題なくphpで書いたtableを、Excelで保存して、
開くことが出来ました。が、何故アパッチの再起動をしたら解決したのかが分からないのと、IE7では動作が不安定("開く" or "保存"のダイアログは開くが、保存を実行すると待機状態になり、一度キャンセルし、
再度実行すると今度はうまく行きます。2回目以降はずっと何度やってもうまく行く。。。)という状況であります。
やはり、Excelのhtml読み込み機能を使って、htmlをExcelで見るのは
無理があるのでしょうか?
No.2
- 回答日時:
#正直なんでそんな無理をしないといけないのかがわかりません。
「Excelにhtmlのテーブルを読み込ませる」というのは、かなり閲覧環境を選びませんか?イントラ環境であればいいでしょうけど・・ひょっとしてイントラ向けのスクリプトでしょうか?(でもそれならIEやOfficeのバージョンは固定でしょうしねぇ・・)。
動的に作成しないといけないのであればCSV、そうでなければ普通のExcelファイルという「間違いなく動作する」方法を選択すべきだと思います。
ご回答ありがとうございます。
おっしゃる通りイントラでのスクリプトなんですが、対象ブラウザーが
IE6,IE7なんですよね。要望がCSVではなくセルに色を付けたり、
簡単な罫線を表示させたいということだったので、
何か方法はないかと試していたんですが。
まあ、ExcelWriterモジュールとかを使用すれば動的に作成する
ことは可能なんですけど、あれはバグがあったりするので、
あまり使いたくはないなと思っていたので。
確かに、間違いなく動作する方法を選択するべきですね。
これで、この質問を閉じたいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- HTML・CSS 自身のHPにYouTube動画を貼り付けるのが出来なくなり困ってます 1 2022/11/11 10:44
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- HTML・CSS テーブルタグのセルの幅の一部だけを指定 1 2023/03/12 12:02
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
社内イントラネットのHPにアク...
-
訪問回数ごとに違うページを表...
-
階層の少ないページ作り
-
すごく初歩的な質問です
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
Subversionのリポジトリの削除
-
拡張子php画像をjpg画像等に変...
-
PHPのif文でその処理を途中で抜...
-
バッチを用いたフォルダの自動移動
-
別ファイルの変数を呼び出した...
-
FTPコマンドでディレクトリごと...
-
form actionで二つ送信先を指定...
-
さくらレンタルサーバーでPHPが...
-
ftpでアップロードが出来ない
-
.phpと.incファイルの違いはな...
-
TSVファイルをCSV形式に変換したい
-
【file_exists】ファイルが存在...
-
別PHPファイルに変数を渡す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HPを開くとダウンロードページ...
-
index.phpって何ですか? 具体...
-
社内イントラネットのHPにアク...
-
phpで大量のhtmlを任意の順番で...
-
PHPでの複数ファイル出力
-
CGIでHTMLファイルのPHP部分を...
-
phpコードの戻り値をhtmlファイ...
-
ヒアドキュメントの中で別ファ...
-
HTMのファイルをPHPに変換す...
-
VScode文字の色の変更について
-
php excelダウンロード
-
public_htmlと同じ階層にあるフ...
-
拡張子をhtmlにすることのメリ...
-
PHPの結果をhtmlで保存する方法
-
トップページURLのみで下層ペー...
-
phpのheader関数でページ移動さ...
-
PHP プルダウンからの選択 ペ...
-
file_get_contentsでcss読み込み
-
file_get_contents()の動きが読...
-
includeで読み込んだ内容を変数...
おすすめ情報