2

誰もPear: Spreadsheet_Excel_Writerを使用しましたか?

フォーマットのチュートリアルには、私が使用しているものに似たスクリプトがリストされています: (縮小)

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$worksheet =& $workbook->addWorksheet();
$worksheet->write(0, 0, "Quarterly Profits for Dotcom.Com");

$workbook->send('test.xls');
$workbook->close();
?>

これについて私がこれまでに理解していると思うことは...
$workbook->send('test.xls');Excelファイル転送用にヘッダーを設定します。現在、エラーは発生していないようですが、ダウンロードされたファイルは完全に空です (16 進エディターでも)。

それで...バイナリ
はどこに(どのクラス/メソッドで)$workbook書かれるべきですか?それとも、私はそれをすべて誤解していますか?

: Spreadsheet_Excel_Writer のどのバージョンが使用されているかは正直わかりません。ソースにはそのような有用な情報は含まれていません。
著作権は2002-2003です。したがって、バージョン 0.1 から 0.6 のどこかです。

[編集] 申し訳ありませんが、どこかで言及したと思います..これは、私が修正するように割り当てられた他の誰かのスクリプトです。

4

5 に答える 5

3

サンプルコードは次のとおりです。

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer('test.xls');
$worksheet =& $workbook->addWorksheet('My first worksheet');
if (PEAR::isError($worksheet)) {
    die($worksheet->getMessage());
}
$workbook->close();
?>

手始めに、ワークシートに名前を付けて、ファイルを直接(なしで)書き込んでみてくださいsend()

また、呼び出すすべてのメソッドで、 を使用して応答をテストしてPEAR::isError()ください。

于 2008-10-13T22:01:54.070 に答える
1

あまり明確ではありませんが、send コマンドは正しいコンテンツ タイプとファイル名を持つヘッダーのみを作成すると思います。後でデータを送信する必要があります。

$tmpDocument = '/path/to/tmp/file.xls';
$workbook = new Spreadsheet_Excel_Writer($tmpDocument);   

/* XLS ファイルを生成するコード */

$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);
于 2011-01-20T03:16:51.403 に答える
0

これを使用して、ブラウザにワークシートをダウンロードします

$workbook = new Spreadsheet_Excel_Writer(); // <-- leave parantheses empty
$workbook->send($DownloadFileName);
// Your fancy spreadsheet generating code
$workbook->close();

そして、これをファイルに書き込みます。

$workbook = new Spreadsheet_Excel_Writer($SaveFileName);
// Your fancy spreadsheet generating code
$workbook->close();
于 2009-08-24T18:13:50.260 に答える
0

でワークシートに名前を付ける必要があります$worksheet =& $workbook->addWorksheet();
以下のコードを確認してください。

require_once 'Spreadsheet/Excel/Writer.php';

//Create a workbook
$workbook = new Spreadsheet_Excel_Writer(); //() must be empty or your downloaded file will be corrupt.

// Create a worksheet 
$worksheet =& $workbook->addWorksheet('test'); <-- You forgot to name your worksheet in your code, yours is "addWorksheet()"

// The actual data 
$worksheet->write(0, 0, 'Name'); 
$worksheet->write(0, 1, 'Age'); 
$worksheet->write(1, 0, 'John Smith'); 
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31); $worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);

// send HTTP headers 
$workbook->send('prueba.xls');

// Let's send the file
$workbook->close();
于 2009-10-15T19:48:31.043 に答える
0

send() はキャッシュ制御ヘッダーとコンテンツ タイプ ヘッダーを送信しますが、コンテンツは送信しません。$workbook->close() が呼び出されると、コードからわかるように、コンテンツは送信されます。

于 2008-10-13T22:21:31.707 に答える