
初めて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ランキング
-
mysql→EUC-JP、php→UTF-8の時の...
-
PHPでCSVファイルのデータを表...
-
ファイルの文字コードを調べる...
-
php.iniのエンコーディングの設...
-
phpをオフラインで動かしたい
-
phpでお問い合わせフォームを作...
-
初めまして、
-
ファイルシステム関数関係
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
引数を正しく読み込む方法
-
session_startでクッキー範囲を...
-
プログラミング作業効率を上げ...
-
microSDの装着による連続待受時...
-
Content-Typeが機能していない?
-
PHPを
-
ファイル(PDF・エクセル・ワー...
-
ブラウザのページキャッシュ機...
-
写真をアップロードできるスク...
-
「クラウドにアップロード」」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォームからPOSTされた値をXML...
-
PHPExcelバッファへの書き込み...
-
文字コードの問題??
-
下記のように文字化けするので...
-
ファイルの文字コードを調べる...
-
EclEmmaレポートのエクスポート...
-
自作cgiのページがIE10で文字化...
-
IIS5.1です。PHPをブラウザで開...
-
phpフォームで文字化け
-
ホームページでの文字化けにつ...
-
[HTML-PHP]あるPHPファイルだけ...
-
PHPでセッション導入後に初めて...
-
フォーム入力のエンコーディン...
-
PHP time()に関しての質問です
-
別のサーバーのテキストファイ...
-
phpログファイルの文字化けにつ...
-
mysql→EUC-JP、php→UTF-8の時の...
-
DBから取得したデータについて
-
文字化けについて
-
PHP+MySQLの文字化けで悩んでい...
おすすめ情報