如何使用Pear Spreadsheet Writer在Excel中写入dynamic创build的工作表?

总之,我想要做的是,dynamic地创build几个工作表,填充数据库结果的数据。

到目前为止我得到:

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); } 

你以前做过吗? 这可能吗? 如果是这样做是正确的方式?

这里还有一个重要的注意事项:如果您的工作表名称长于31个符号 (Excel也不支持这样的长名称),则可能会出现错误。

$worksheet =& $workbook->addWorksheet("Some really long string, longer than 31 symbol"); 会造成同样的错误

回答我自己的问题,

可以dynamic地创build电子表格。

您必须注意不要使用相同的名称创build电子表格,否则会导致PEAR致命错误。

你应该检查下面的现有工作表

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

在上面提出的问题中,这是发生在我身上的事情。

你有两个

$$

在那里,但那应该只有一个。

此外, $$worksheet_name不是$$worksheet_name表对象,而是需要分别处理的PEAR_Error:

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