如何使用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(); }