初めてPHPExcelを利用してExcel出力を行ってみましたが
$writer->save('php://output');
で保存せずブラウザ経由で直接出力させようとすると
出力されたExcelな中身がおかしくなります。
文字化けされた内容で出力処理を記載したスクリプトファイルの中身が
表示されたような感じです。
事前にheaderでファイル名も指定していますが指定したファイル名ではなく、
スクリプトを実行しているPHPファイルの名前のxlsになります。
原因等わかる方いたら教えて下さい。
ちなみに以下の出力では正常にファイルが出力されました。
$writer->save('test.xls');
【環境】
PHPExcel 1.7.6
PHP 5.3.8
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
PHPExcelではありませんが、サーバにExcelが
インストールされているならOLEを使う方法が
あります。
//Excelをインスタンス化する
$app = new COM("Excel.Application");
//警告を出さない
$app->DisplayAlerts = false;
//Workbooksコレクションを取得する
$wbs = $app->Workbooks;
//Workbookオブジェクトを追加する
$wkb = $wbs->Add();
//WorkSheetsコレクションを取得する
$wss = $wkb->WorkSheets;
//1番目のWorkSheetオブジェクトを取得する
$wks = $wss->_Default(1);
//シート名を日本語にする
$n = mb_convert_encoding("名前","SJIS","UTF-8");
$wks->Name = $n;
//セル(Range)オブジェクトを取得する
$rng = $wks->Cells(1,1);
//セルに日本語を記入する
$n = mb_convert_encoding("内容","SJIS","UTF-8");
$rng->Value = $n;
//Workbookを名前を付けて保存する
$wkb->SaveAs("D:\\~");
//Excelを終了する
$app.Quit();
その他の操作はVBAによるマクロと同じです。
滅多に使わないプロパティの一部に日本語を使うと
オカシクなるものがありますが、よく使うものは
日本語対応はできています。
Excelのバージョンが上がっても、マクロの変更が
なければ修正無しで使えます。
No.2
- 回答日時:
>おそらくシート名の文字コードがおかしいのかと思い、シート名をSJISにしてみましたが
解決できておりません。
まずシート名を半角英数にしてみてエラーがでるかどうか確認
エラーがでないなら、シート名のSJISがうまくいっていない
エラーが出るならべつの理由
この回答への補足
ご回答有難うございます。
>まずシート名を半角英数にしてみてエラーがでるかどうか確認
>エラーがでないなら、シート名のSJISがうまくいっていない
>エラーが出るならべつの理由
シート名を半角にしたところ、
出力されたExcelは文字化けされた内容(エラーメッセージ)が表示されてしまいました。
No.1
- 回答日時:
PHPソースの文字コードがSJIS以外では?
私はDUALモデルをインスタンス化、つまり
OLEオートメーションでやっていますが、
PHPはEUC-JPなので、漢字はSJISにして
プロパティやメソッドに渡しています。
この回答への補足
ご回答有難うございます。
おっしゃる通りPHPソースはUTF-8になります。
とりあえずファイル名をSJISにして再度出力してみたところExcelの
ファイル名は指定通り出力されましたが今度は出力されたExcelに以下のような
内容が表示されていましました。
おそらくシート名の文字コードがおかしいのかと思い、シート名をSJISにしてみましたが
解決できておりません。
<br />
<b>Fatal error</b>: Uncaught exception 'Exception' with message 'Invalid character found in sheet title' in D:\php5\PHPExcel\Classes\PHPExcel\Worksheet.php:401
Stack trace:
#0 D:\php5\PHPExcel\Classes\PHPExcel\Worksheet.php(657): PHPExcel_Worksheet::_checkSheetTitle('?V?[?g')
#1 D:\Apache\Apache2.2\htdocs\test.php(119): PHPExcel_Worksheet->setTitle('?V?[?g')
#2 {main}thrown in <b>D:\php5\PHPExcel\Classes\PHPExcel\Worksheet.php</b> on line <b>401</b><br />
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP8を使うと、大量のWarningが...
-
phpでPEAR::DBを使っているので...
-
値の取り出し方について教えて...
-
index.phpって何ですか? 具体...
-
index.phpに入るには、どうすれ...
-
なんでブラウザでPHPを動かすた...
-
入力フォームの空白や改行を制...
-
どうして送信されないのでしょ...
-
phpでcookieがうまく保存されない
-
php 入力画面から確認表示画面...
-
PHPで画像の渡しが上手く行きま...
-
PHPとHTML+Xamppの掲示板で画像...
-
phpのメールフォームの完了画面...
-
PHPで今日の日付から3日後を表...
-
phpの imap_search で漢字コード
-
PHP と MySQL でテーブルの行数...
-
awsにApacheとPHPを入れて、何...
-
オススメのプログラミングスク...
-
MySQLの配置が変わったため、db...
-
PHPでのパスワード制限のセキュ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EclEmmaレポートのエクスポート...
-
PHPExcelバッファへの書き込み...
-
<meta charset="utf-8"><!-- 文...
-
mysql→EUC-JP、php→UTF-8の時の...
-
ファイルの文字コードを調べる...
-
PHP time()に関しての質問です
-
phpで動的タイトル
-
文字化けについて
-
phpログファイルの文字化けにつ...
-
GEEKLOG(ギークログ) 文字化け
-
batファイルでうまく動かないプ...
-
文字集合範囲外の文字とパーセ...
-
HTTPヘッダはメタタグにも記述...
-
onedrive にexcelファイルをア...
-
フォントの色を変えるには?
-
index.phpに入るには、どうすれ...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
PHP8を使うと、大量のWarningが...
-
別ファイルの変数を呼び出した...
おすすめ情報