2008-10-13 79 views
2

有沒有人用過Pear: Spreadsheet_Excel_WriterPHP PEAR Spreadsheet_Excel_Writer發送一個空文件

Formatting Tutorial列出了一個腳本類似於我的工作:(下調)

<?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文件傳輸。現在,似乎沒有錯誤出現,但下載的文件完全是空的(即使在十六進制編輯器中)。

因此...
哪裏(在什麼類/方法)$workbook二進制應該寫?或者,我是否誤解了這一切?

注意:我真的不知道Spreadsheet_Excel_Writer正在使用什麼版本;來源不包含這些有用的信息。
我可以告訴你的版權是2002-2003;所以,從0.1到0.6的任何地方。

[編輯]對不起,我以爲我在某處說過這個。這是別人的腳本,我已被分配到修復。

回答

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()來測試響應。

+0

感謝有關ISERROR線索。猜猜我假定PEAR對象會像其他的那樣拋出異常。 ;) – 2008-10-13 23:42:54

0

send()發送緩存控制標題和內容類型標題,但不發送內容。 內容是sendt,據我所知,當$ workbook-> close()被調用時。

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(); 
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(); 
1

這不是很清楚,但我認爲,send命令只創建與正確的內容類型和文件名頭。您必須將數據發送後,東西LIK

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

/*代碼生成XLS文件*/

$workbook->close(); 
$workbook->send('Report.xls'); 
readfile($tmpDocument); 
相關問題