2010-09-29 72 views
0

總之,我想要做的是,動態創建幾個工作表,填充數據庫結果中的數據。如何使用Pear Spreadsheet Writer在Excel中寫入動態創建的工作表?

到目前爲止,我越來越:

Fatal error: Call to undefined method PEAR_Error::write() in /mnt/hgfs/workspace/CCMS-Web/reports/file-excel.php on line 113 

當我試圖做到這一點:

$workbook = new Spreadsheet_Excel_Writer(); 

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

$ReportName = "Report Name"; 
while ($row = $Results->fetch_assoc()) { 
$worksheet_name = $row["data"]; 
$$worksheet_name =& $workbook->addWorksheet($campaign_name); 
$$worksheet_name->write($y, 0, $ReportName,$fmtTitle); 
} 

你以前做過嗎?這可能嗎?如果是這樣做是正確的方法是什麼?

回答

1

要回答我的問題,

,可以動態地創建電子表格。

但是您必須注意不要使用相同的名稱創建電子表格,否則會導致PEAR致命錯誤。

你應該檢查現有工作表像下面

$worksheets = $workbook->worksheets(); 
if (!in_array($worksheet_name,$worksheets)){ 
    $worksheet_name =& $workbook->addWorksheet($worksheet_name);  
} 

這是發生了什麼事對我來說,在上面提出的問題。

0

你有兩個

$$

在那裏

,但應該是唯一的一個。

而且,$$worksheet_name不是表對象,但一個PEAR_Error的,你需要單獨處理:

if (PEAR::isError($worksheet_name)) { 
    var_dump($worksheet_name); 
    die(); 
} 
+0

我使用的是可變的變量..即$$ WORKSHEET_NAME = $行[「數據」] – Rasiel 2010-09-30 14:24:21

+0

感謝約梨錯誤,我應該檢查這一點。 – Rasiel 2010-09-30 14:24:54

2

正如另外一個重要提示:如果您的工作表名稱長於31個符號(Excel也不支持這樣的長名稱),則可能出現錯誤。

$worksheet =& $workbook->addWorksheet("Some really long string, longer than 31 symbol");會導致同樣的錯誤

相關問題