PHP PEAR电子表格\u Excel\u写入程序发送空文件

PHP PEAR电子表格\u Excel\u写入程序发送空文件,php,export-to-excel,pear,Php,Export To Excel,Pear,有人用过吗 列表中列出了一个与我正在使用的脚本类似的脚本:(精简) 到目前为止我对它的理解… $workbook->send('test.xls')设置Excel文件传输的标题。现在,似乎没有出现错误,但下载的文件是完全空的(即使在十六进制编辑器中) 所以… $workbook二进制文件应该写在哪里(在哪个类/方法中)?还是我完全误解了 注意:我真的不知道正在使用什么版本的电子表格\u Excel\u Writer;这些来源不包括这些有用的信息。 我可以告诉你版权是2002-2003年;因此

有人用过吗

列表中列出了一个与我正在使用的脚本类似的脚本:(精简)


到目前为止我对它的理解…
$workbook->send('test.xls')设置Excel文件传输的标题。现在,似乎没有出现错误,但下载的文件是完全空的(即使在十六进制编辑器中)

所以…
$workbook
二进制文件应该写在哪里(在哪个类/方法中)?还是我完全误解了

注意:我真的不知道正在使用什么版本的电子表格\u Excel\u 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()发送缓存控制头和内容类型头,但不发送内容。
我从代码中了解到,当调用$workbook->close()时,内容是sendt。

使用它在浏览器中下载工作表

$workbook = new Spreadsheet_Excel_Writer(); // <-- leave parantheses empty
$workbook->send($DownloadFileName);
// 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();
require_once'Spreadsheet/Excel/Writer.php';
//创建工作簿
$workbook=新的电子表格\u Excel\u Writer()//()必须为空,否则下载的文件将损坏。
//创建工作表
$worksheet=&$workbook->addWorksheet('test');写(0,0,'名称');
$worksheet->write(0,1,'年龄');
$worksheet->write(1,0,'John Smith');
$worksheet->write(1,1,30);
$worksheet->write(2,0,'johannschmidt');
$worksheet->write(2,1,31)$工作表->写入(3,0,'Juan Herrera');
$worksheet->write(3,1,32);
//发送HTTP头
$workbook->send('prueba.xls');
//让我们发送文件
$workbook->close();

这不是很清楚,但我认为send命令只会创建具有正确内容类型和文件名的标题。你必须在事后发送数据,比如

$tmpDocument = '/path/to/tmp/file.xls';
$workbook = new Spreadsheet_Excel_Writer($tmpDocument);   
/*生成XLS文件的代码*/

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

谢谢你提供关于伊瑟罗的线索。我猜想PEAR对象会像其他对象一样抛出异常电子表格\u Excel\u编写器是PHP4代码。在这种情况下,约定是错误的。:)
$tmpDocument = '/path/to/tmp/file.xls';
$workbook = new Spreadsheet_Excel_Writer($tmpDocument);   
$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);