【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

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 です。

よろしくお願いします。

A 回答 (3件)

>説明不足でした、申し訳ございません。


>closeしています。

っというか、わたしの書いたソースで問題なく印刷ヘッダの印刷は
されるはずです。おためしいただいていますか?

元ソースをどのくらい省略したかは存じませんが、省略した部分に
ヘッダを打ち消すような処理がはいっている可能性もないとはいえません。

この回答への補足

>っというか、わたしの書いたソースで問題なく印刷ヘッダの印刷は
>されるはずです。おためしいただいていますか?
試しましたがだめでした。

>元ソースをどのくらい省略したかは存じませんが、省略した部分に
>ヘッダを打ち消すような処理がはいっている可能性もないとはいえません
なるほど!
確認してみます!
ありがとうございます!

補足日時:2007/07/05 08:50
    • good
    • 0
この回答へのお礼

解決しました。
エクセルでダウンロードするとき、ダイアログに【開く】と【保存】があるのですがいきなり【開く】にすると【repeatRows】だけ反映されないようです。
【保存】してから開くと反映されました。

yambejpさんにアドバイスいただいた、
>ヘッダを打ち消すような処理がはいっている可能性もないとはいえません
ですが、別のところ(setHPagebreaks)の設定で役立たせていただきました(^^
お返事が遅くなって申し訳ありませんでした。
ありがとうございました!!

お礼日時:2007/07/12 11:09

単に掲示部分では略されているだけかもしれませんが、【repeatRows】の設定とは関係なく、


$workbook->send('test.xls');
の有無だけの問題では有りませんか?

Spreadsheet_Excel_Writerでは、sendメソッドを使ってファイル名を指定しないとダウンロード用のヘッダー出力をしないはずです。

この回答への補足

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

補足日時:2007/07/12 11:09
    • good
    • 0

単純に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()とは違いますのでご注意ください

この回答への補足

遅くなりました<(_ _)>

説明不足でした、申し訳ございません。
closeしています。

記述は結構長くなっているので違いがある冒頭部分だけを抜き出しました。

補足日時:2007/07/04 10:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報