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

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

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

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

Q&A

解決済

1回答

4124閲覧

PHPExcelで XMLWriter not found のエラーが解決できません

pgm_bakabon

総合スコア61

PHP

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

0グッド

0クリップ

投稿2019/12/02 12:39

前提・実現したいこと

お世話になっております。
PHPExcel で Excelファイルを作成しています。
処理を実行した際に XMLWriter not found のエラーが解決できません。
こちらの解決方法がご存知でしたらご教示ください。

補足情報(FW/ツールのバージョンなど)

OS: macOS High Sierra 10.13.6
PHP: 5.3

環境・条件

環境
OS: macOS High Sierra 10.13.6
PHP: 5.3

条件
PHPのバージョンを上げてPhpSpreadsheetにするのは、プロジェクトの環境でできません。

発生している問題・エラーメッセージ

PHP Fatal error: Class 'XMLWriter' not found in プロジェクトのpath/vendor/phpoffice/phpexcel/Classes/PHPExcel/Shared/XMLWriter.php on line 37

該当のソースコード(実行プログラム)

php

1require_once '../vendor/phpoffice/phpexcel/Classes/PHPExcel.php'; 2require_once '../vendor/phpoffice/phpexcel/Classes/PHPExcel/IOFactory.php'; 3 4// Excelを作成する 5$objExcel = new PHPExcel(); 6 7// シートの設定 8$objExcel->setActiveSheetIndex(0); 9$objSheet = $objExcel->getActiveSheet(); 10 11// A1セルに「テスト」という文字列を設定 12$objSheet->setCellValue('A1', 'テスト'); 13 14// Excelのダウンロード 15$objWriter = PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007'); 16header("Pragma: public"); 17header("Expires: 0"); 18header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 19header("Content-Type: application/force-download"); 20header("Content-Type: application/octet-stream"); 21header("Content-Type: application/download"); 22header("Content-Disposition: attachment;filename=" . "TestDownload.xlsx"); 23header("Content-Transfer-Encoding: binary "); 24$objWriter->save('php://output'); // ← ここの処理でエラーが発生するプログラムが呼ばれます

該当のソースコード(エラーのプログラム)

php

1class PHPExcel_Shared_XMLWriter extends XMLWriter // ← ここが36行目 2{ // ← ここが37行目 3 省略 4}

試したこと

試したこと①

以下の記事を参考に、
yum install php-xml をやってみましたが、
Mac環境ということもあり、 command not found: yum のエラーが出ます。

2013.09.12 PHPExcelを使ってエクセルを出力
https://deep-blog.jp/engineer/phpexcel/

2014.10.10 PHPExcelのXMLWriter.phpエラー
https://okesys.net/2014/10/10/phpexcel%E3%81%AExmlwriter-php%E3%82%A8%E3%83%A9%E3%83%BC/

試したこと②

Mac環境なので、 homebrew で試してみましたが、 php-xml はパッケージにないようです。
brew install php-xml

エラーメッセージ

Error: No available formula with the name "php-xml" ==> Searching for a previously deleted formula (in the last month)... Error: No previously deleted formula found. ==> Searching for similarly named formulae... Error: No similarly named formulae found. ==> Searching taps... ==> Searching taps on GitHub... Error: No formulae found in taps.

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

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

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

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

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

guest

回答1

0

ベストアンサー

Macだと古いバージョンのPHPにはxmlが入っていないので、対応していませんし、yumコマンドもないので手の打ちようがないようです。なので、xlsファイル形式で保存するように妥協するのがベストかと。

xlsファイルならxmlを使ってないので、保存できたはずです。

投稿2019/12/03 09:48

FKM

総合スコア3608

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

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

pgm_bakabon

2019/12/03 10:06

FKM様 ご回答ありがとうございます。 このphp-xmlが必要なエラーは、PHPExcelの問題ではなく、保存形式の問題なのですね。 writerTypeにxls形式の"Excel5"を設定してsaveしたところエラーは起きませんでした。 xlsでしたら先に進めそうです。 要件を確認してxlsでOKならこのまま進めようかなと思います。 もしxlsxではないと難しい場合は "PHP_XLSXWriter" を使ってみようかなとも思っています。
FKM

2019/12/03 11:34

もうひとつは、中にVBAを埋め込んで、開いたxlsファイルに対してxlsxで保存させるという荒技もありますかね。
pgm_bakabon

2019/12/03 11:37

ありがとうございます。 荒技ですね(笑) xlsx指定されて "PHP_XLSXWriter" がうまくいかなかったら荒技を押してみますm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問