• ベストアンサー

【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 です。 よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
  • 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しています。 記述は結構長くなっているので違いがある冒頭部分だけを抜き出しました。

関連するQ&A

  • PHP Spreadsheet Excel Writer

    PHP 「Spreadsheet Excel Writer」について 「Spreadsheet Excel Writer」を使ってエクセルファイルを出力したいのですが。 セルに「SUMIF関数」を入力すると、出力されたエクセルには「Syntax error: ,, lookahead: , current char: 12」と 入力されておりこの関数が使えなくて困っています。 手順の詳細は下記です。 $workbook = new Spreadsheet_Excel_Writer("./test.xls"); $worksheet =& $workbook->addWorksheet('week report'); $worksheet->write(0,0,"初月課金"); $worksheet->write(1,0,"初月無料"); $worksheet->write(2,0,"初月無料"); $worksheet->write(3,0,"初月無料"); $worksheet->write(4,0,"初月無料"); $worksheet->write(0,1,100); $worksheet->write(1,1,100); $worksheet->write(2,1,100); $worksheet->write(3,1,100); $worksheet->write(4,1,100); $worksheet->writeFormula(10, 0,"=SUMIF(A1:A5,\"=初月課金\",B1:B5)"); $workbook->close(); どうやったら正常に関数が入力できるか、どなたか教えてください。 宜しくお願いします

    • 締切済み
    • PHP
  • Spreadsheet_Excel_Writer

    require_once("Spreadsheet/Excel/Writer.php"); この一行のみで、以下のメッセージが出力されます。 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/Spreadsheet/Excel/Writer/Workbook.php on line 180 Deprecated: Assigning the return value of new by reference is deprecated in /opt/lampp/lib/php/Spreadsheet/Excel/Writer/Workbook.php on line 189 環境に問題があるのでしょうか? ヴァージョンは 0.9.1ですが、0.9.1でも同様になります。

    • ベストアンサー
    • PHP
  • エクセルへの書き出し

    サンプル本を片手に作業しています。 PHPでexcelデータを作る場合、以下のようなソースがあります。 <? //依存モジュールの読み込み require_once 'Spreadsheet/Excel/Writer.php'; //エクセルシートのオブジェクトを作成 $workbook = new Spreadsheet_Excel_Writer(); //test02.xlsとしてダウンロードを開始するようHTTPヘッダーを送信 $workbook -> send('test02.xls'); //1枚目のワークシートを作成 $worksheet1 =& $workbook -> addWorksheet('社員名簿'); //データを書き出し $worksheet1 -> write(0,0,'名前'); $worksheet1 -> write(0,1,'年齢'); $worksheet1 -> write(0,2,'出身地'); $worksheet1 -> write(1,0,'鈴木太郎'); $worksheet1 -> write(1,1,'32'); $worksheet1 -> write(1,2,'北海道'); $worksheet1 -> write(2,0,'青山辰夫'); $worksheet1 -> write(2,1,'24'); $worksheet1 -> write(2,2,'青森'); //Excelシートの送信 $workbook -> close(); ?> この場合、Excelは指定した名前で生成されるのでしょうか、 それとも、あらかじめ作成したExcelへ書き込みするのでしょうか?

    • ベストアンサー
    • PHP
  • 複数のExcelファイルを生成

    いつもお世話になっています。 <環境> Red Hat Enterprise Linux ES v.4 PHP 4.4.2(cli) PHPからExcelファイルを操作するのに エラーが起こってしまっています。 test.php ---------------------------------------- // 新規ワークブックを生成 $WorkBook1 = new Spreadsheet_Excel_Writer('test1.xls'); // 新規ワークシートを生成 $WorkSheet2 =& $WorkBook1->addWorksheet('sheet1'); // 一回閉じる $WorkBook1->close(); // 新規ワークブックを生成 $WorkBook2 = new Spreadsheet_Excel_Writer('test2.xls'); // 新規ワークシートを生成 $WorkSheet2 =& $WorkBook2->addWorksheet('sheet2'); // 閉じる $WorkBook2->close(); としているのですが・・・ Fatal error: Call to undefined function: close() in /usr/local/lib/php/Spreadsheet/Excel/Writer/Workbook.php on line 407 上記のようにライブラリでエラーになってしまいます。 複数のExcelファイルをtest.phpで作成することはできないのでしょうか? すみませんが、ご教授お願いいたします。

    • 締切済み
    • PHP
  • excel mobile ファイル作成?

    いつもお世話になっております。 モバイル携帯で、「Excel Mobile」を使いたいのでgoogleで検索で 下記サンプルを実行しました。 結果、モバイル携帯上ではexcelファイルが一覧表示されましたが、 開くと「ファイル形式が正しくないため、・・・」となってしまい、 ダメでした。 何方か、「Excel Mobile」形式での作成方法をご存知でしたら、ご教授頂けるとありがたいです。 ---------サンプル------------------------- <?php require_once'Spreadsheet/Excel/Writer.php'; $workbook = new Spreadsheet_Excel_Writer(); $tablename = "sampletable"; $worksheet =& $workbook->addWorksheet($tablename); $format =& $workbook->addFormat(); $format->_font_name = mb_convert_encoding("MS UI Gothic", "shift_jis"); for($i=0;$i<100;$i++){ for($j=0;$j<100;$j++){ $worksheet->write($i,$j,"test"); // セルに書き込み } } $workbook->send("test.xls"); // test.xlsに書き込み。 $workbook->close(); ?> -------------------------------------------------------- 以上、よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPのinclude_pathについて

    以下はPEARでExcelファイルを作成し、ダウンロードするプログラムです。 <?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('sample3-1.xls'); $worksheet =& $workbook->addWorksheet('サンプル'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sample3-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?> このプログラムを実行すると、 Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 というエラーメッセージが出ます。 php.iniには、PEARのパッケージをインストールした際に ;***** Added by go-pear include_path=".;C:\php-5.2.17-Win32-VC6-x86\pear" ;***** と記述されているにも関わらず、エラーメッセージのpathはinclude_path='.;C:\php5\pear'となっており、原因がわかりません。 php.iniはC:\WINDOWSの直下に置いてあります。 PHPのバージョンはphp-5.2.17-Win32-VC6-x86で、Cドライブの直下にインストールしています。 WebサーバーはIISです。 eclipseを使っており、バージョン?はpleiades-e3.6-php_20110326です。 また、phpinfoのinclude_pathはLocalとMasterの両方が.;C:\php5\pearとなっています…。 Configuration File (php.ini) Path C:\WINDOWS Loaded Configuration File C:\WINDOWS\php.ini この2つはこの様になっており、これは2つの場所は一致していないといけないのでしょうか? 解決手段がまったくわかりません。 何かこのエラーについてわかることがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • phpExcelReaderの使い方について

    phpExcelReaderをダウンロード、解凍し、解凍されたデータ内の「Excel」フォルダを、 [C:\php\PEAR\Spreadsheet\] (ExcelWriterを使用しているので、Spreadsheetフォルダが存在します) に入れました。そして、30行目辺りに、 [require_once 'Spreadsheet/Excel/oleread.inc';] と追加しました。 上記の手順で使えるようになると思っていたのですが、どうも使えないようです。 PHPの構文内では、まず初めにreader.phpをrequire onceで呼び出しているのですが、 failed to open stream、Failed opening requiredのエラーが出てしまいます。 何か間違った点等ありましたら、ご指摘をいただければと思います。 最後に、reader.php読み出しまでの構文とエラー内容を書いておきます。 読み出し部-------------- <?php require_once("Spreadsheet/Excel/reader.php"); $xls = new Spreadsheet_Excel_Reader(); $xls->setOutputEncoding('UTF-8'); //以下Excel処理... ------------------------- エラー内容--------------- Warning: require_once(Spreadsheet/Excel/reader.php) [function.require-once]: failed to open stream: No such file or directory in C:\【phpパス】.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/reader.php' (include_path='.;C:\php\pear;c:\php\includes') in C:\【phpパス】.php on line 2 -------------------------

    • ベストアンサー
    • PHP
  • Spreadsheet::WriteExcelについて教えてください。

    Windows2000 IE6.0 Perl5.005_03 Spreadsheet-WriteExcel-0.33 Parse-RecDescent-1.80 質問ですが、CGIとして実行すると「サーバーが見つかりません」 になってしまいます。エクセルファイルは正常に作成はできているようです。 use Spreadsheet::WriteExcel;をコメントにして実行すると移動したいURLに 飛ぶことができるのですが、当然ながらEXCELファイルは作成されません。 どのようにしたらよいのでしょうか・・・ print "Location: 移動したいURL\n\n"; print '<html><body>'; print '<br><br>'; print '<table align = "center">'; print '<tr>'; print '<td><font size = 5 ; color = blue>'; print "EXCEL書き出し"; print '</font></td>'; print '</tr>'; print '</table>'; print '</body></html>'; use Spreadsheet::WriteExcel; my $workbook = Spreadsheet::WriteExcel->new("perl.xls"); $worksheet = $workbook->addworksheet(); $format = $workbook->addformat(); $format->set_bold(); $format->set_color('red'); $format->set_align('center'); $col = 0; $row = 0; $worksheet->write($row, $col, "Hi Excel!"); $worksheet->write(1, $col, "Hi Excel!", $format); $worksheet->write(2, $col, 1.2345); $worksheet->write(3, $col, '=SIN(PI()/4)'); print 'Content-type: text/html' ."\n\n"; print <<EOF; <html><head><title>test</title></head><body>Ah!</body></head></html>

    • ベストアンサー
    • CGI
  • Spreadsheet_Excel_Writerのインストール

    初心者プログラマーです。 今、cakephp1.2を使って開発してるんですが、データの一覧が表示されている画面でその情報をExcelに出力したい言われていて、調べた結果 Spreadsheet_Excel_Writerを使って出力しようと思うんですが、インストールのやり方が分かりません(汗) コマンドプロンプトからインストールするんでしょうか? コマンドプロンプトを起動してどのディレクトリに移動して、どのようなコマンドを打てばいいんでしょうか? 初歩的な質問だとは分かってるんですが、分からないので宜しくお願いします! PHPのバージョンはPHP5になります。

    • 締切済み
    • PHP
  • Excelに画像挿入

    いつもお世話になっています。 <環境> Red Hat Enterprise Linux ES v.4 PHP 4.4.2(cli) PEARのSpreadsheet_Excel_Writerを使ってExcelの操作をしています。 画像を挿入したいのですが エラーのなってしまって、困っています。 どなたかご教授お願いいたします。 $logo = '/home/ユーザ名/public_html/img/logo.bmp'; // 新規ワークブック作成 $WorkBook = new Spreadsheet_Excel_Writer($BookName); // 新規ワークシート作成 $WorkSheet =& $WorkBook->addWorksheet("sheet1"); // 一応パーミッションの変更もしてみた chmod($BookName, 0777); // 画像挿入 $WorkSheet->insertBitmap(1, 6, $logo); 出来上がった、Excelファイルを見てみると /home/ユーザ名/public_html/img/logo.bmp doesn't appear to be a valid bitmap image. となっていて、画像の挿入ができていません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう