有人使用过Pear: Spreadsheet_Excel_Writer吗?
Formatting Tutorial列出了一个类似于我正在处理的脚本:(已删除)
<?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。
[编辑]抱歉,我以为我已经在某个地方提到了这个...这是我被指派修复的其他人的脚本。
答案 0 :(得分:3)
以下是一些示例代码:
<?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()
测试回复。
答案 1 :(得分:1)
目前还不是很清楚,但我认为send命令只会创建具有正确内容类型和文件名的标头。你必须事后发送数据
$tmpDocument = '/path/to/tmp/file.xls';
$workbook = new Spreadsheet_Excel_Writer($tmpDocument);
/ *用于生成XLS文件的代码* /
$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);
答案 2 :(得分:0)
send()发送缓存控制标头和内容类型标头,但不发送内容。 根据我的理解,当调用$ workbook-&gt; close()时,内容就是sendt。
答案 3 :(得分:0)
使用此选项在浏览器中下载工作表
$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();
答案 4 :(得分:0)
您需要在$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();