• ベストアンサー

【Spreadsheet_Excel_Writer】の【repeatRows】について

Spreadsheet_Excel_Writerを使ってクライアントにデータをエクセルファイルで ダウンロードさせたいと思っているのですが【repeatRows】の設置が思うようにできません。 以下のようにするときちんと繰り返し印刷されるのですが出来上がったファイルが サーバー側に保存されてしまいます。 *********************************************************** require_once 'Spreadsheet/Excel/Writer.php'; $workbook = new Spreadsheet_Excel_Writer('test.xls'); $worksheet =& $workbook->addWorkSheet(); $worksheet->write(0,0,"ヘッダ"); $worksheet->repeatRows(0); *********************************************************** 以下のようにすると繰り返し印刷されないのですがクライアント側にダウンロードされます。 *********************************************************** require_once 'Spreadsheet/Excel/Writer.php'; $workbook = new Spreadsheet_Excel_Writer(); $worksheet =& $workbook->addWorkSheet();  $workbook->send('test.xls'); $worksheet->write(0,0,"ヘッダ"); $worksheet->repeatRows(0); *********************************************************** 検索で調べましたがわかりませんでした。 【repeatRows】が設定され、クライアント側にダウンロードされるにはどこを修正すればよろしいでしょうか? PHPのバージョンは 4.3.8 です。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>説明不足でした、申し訳ございません。 >closeしています。 っというか、わたしの書いたソースで問題なく印刷ヘッダの印刷は されるはずです。おためしいただいていますか? 元ソースをどのくらい省略したかは存じませんが、省略した部分に ヘッダを打ち消すような処理がはいっている可能性もないとはいえません。

13B-RE
質問者

お礼

解決しました。 エクセルでダウンロードするとき、ダイアログに【開く】と【保存】があるのですがいきなり【開く】にすると【repeatRows】だけ反映されないようです。 【保存】してから開くと反映されました。 yambejpさんにアドバイスいただいた、 >ヘッダを打ち消すような処理がはいっている可能性もないとはいえません ですが、別のところ(setHPagebreaks)の設定で役立たせていただきました(^^ お返事が遅くなって申し訳ありませんでした。 ありがとうございました!!

13B-RE
質問者

補足

>っというか、わたしの書いたソースで問題なく印刷ヘッダの印刷は >されるはずです。おためしいただいていますか? 試しましたがだめでした。 >元ソースをどのくらい省略したかは存じませんが、省略した部分に >ヘッダを打ち消すような処理がはいっている可能性もないとはいえません なるほど! 確認してみます! ありがとうございます!

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.3

単に掲示部分では略されているだけかもしれませんが、【repeatRows】の設定とは関係なく、 $workbook->send('test.xls'); の有無だけの問題では有りませんか? Spreadsheet_Excel_Writerでは、sendメソッドを使ってファイル名を指定しないとダウンロード用のヘッダー出力をしないはずです。

13B-RE
質問者

補足

出力はされるのですが一部の設定が反映されなかったのです。 何とか解決いたしました。 ありがとうございました。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

単純にcloseすればいいのかも <?PHP require_once 'Spreadsheet/Excel/Writer.php'; $workbook = new Spreadsheet_Excel_Writer(); $worksheet =& $workbook->addWorkSheet(); $workbook->send('test.xls'); $worksheet->write(0,0,"ヘッダ"); $worksheet->repeatRows(0); $workbook->close(); ?> ちなみにrepatRowsは印刷が複数ページにまたがった場合に 各ページにヘッダを印刷する機能で、$worksheet->freezePanes()や $worksheet->setHeader()とは違いますのでご注意ください

13B-RE
質問者

補足

遅くなりました<(_ _)> 説明不足でした、申し訳ございません。 closeしています。 記述は結構長くなっているので違いがある冒頭部分だけを抜き出しました。