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

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

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

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

PHP

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

Q&A

解決済

1回答

1843閲覧

PhpSpreadsheetにて、HTMLコンテンツからのExcelファイルの生成

user202102

総合スコア9

PhpSpreadsheet

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

PHP

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

0グッド

0クリップ

投稿2021/08/17 00:55

表題の通り、PhpSpreadsheetの公式ドキュメントのサンプルコードを元にHTMLコンテンツからのExcelファイルの生成し出力し開いてみたのですが、$secondHtmlStringの部分がExcelファイルのどこにも見当たらず、$firstHtmlStringのみ出力されている状態です。私のPHPのバージョンは7.3.28なのですが、これが影響しているのか、それとも記述に不備があるのでしょうか。原因がわからず途方に暮れております。

また、下記の記述は本来なら、別シートに$secondHtmlStringが書き込まれるという認識なのですが合っていますでしょうか。公式ドキュメントを読んでもどうしても判断出来ませんでした。

php

1$firstHtmlString = '<table> 2 <tr> 3 <td>Hello World</td> 4 </tr> 5 </table>'; 6$secondHtmlString = '<table> 7 <tr> 8 <td>Hello World</td> 9 </tr> 10 </table>'; 11 12$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html(); 13$spreadsheet = $reader->loadFromString($firstHtmlString); 14$reader->setSheetIndex(1); 15$spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet); 16 17$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls'); 18header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 19header('Content-Disposition: '.Util_Upload_Attachment::generate_content_disposition($_SERVER['HTTP_USER_AGENT'], 'write.xls', 'attachment')); 20header('Cache-Control: max-age=0'); 21$writer->save('php://output'); 22

環境

PHP 7.3.2
MacOS 11.2

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

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

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

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

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

m.ts10806

2021/08/17 02:16

どのように出ているのでしょう。画面キャプチャ提示してください。
guest

回答1

0

ベストアンサー

よく見ましょう。変数が異なっている(hsとshが逆です)のでマニュアル通り、後ろの例のように上書きされません。そのため、最初の事例のみ反映されることになります。

php

1$spreadhseet = $reader->loadFromString($secondHtmlString, $spreadsheet);

投稿2021/08/17 03:11

FKM

総合スコア3640

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

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

user202102

2021/08/17 04:47

サンプルコードをそのままコピペしておりました。ご指摘箇所を修正したら正常に動くようになりました。ありがとうございます。
FKM

2021/08/17 04:49

あの公式マニュアル、自分も一通り目を通してるんですがちょこちょこミスありますね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問