导出到excel-PHP PEAR Spreadsheet_excel_Writer发送一个空文件


export to excel - PHP PEAR Spreadsheet_Excel_Writer sending an empty file

有人使用过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文件传输设置标题。现在,似乎没有出现任何错误,但下载的文件完全是空的(即使在十六进制编辑器中也是如此)。

所以
$workbook二进制文件应该写在哪里(在什么类/方法中)?或者,我是不是误解了这一切?

注意:我真的不知道使用的是什么版本的Spreadsheet_Excel_Writer;消息来源没有包括这样有用的信息
我可以告诉你版权是2002-2003;因此在版本0.1到0.6的任何地方。

[编辑]对不起,我好像在什么地方提到过这个。。这是别人的脚本,我被指派来修复。

下面是一些示例代码:

<?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()测试响应。

这不是很清楚,但我认为send命令只会创建具有正确内容类型和文件名的标头。之后你必须用类似的东西发送数据

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

/*生成XLS文件的代码*/

$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);

send()发送缓存控制头和内容类型头,但不发送内容。正如我从代码中了解到的,当调用$workbook->close()时,内容是sendt。

使用此功能下载浏览器中的工作表

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

您需要将工作表命名为$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();