2

有人用过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 的任何地方。

[编辑] 抱歉,我以为我在某处提到过这个。这是别人的脚本,我被分配修复。

4

5 回答 5

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().

于 2008-10-13T22:01:54.070 回答
1

不是很清楚,但我认为发送命令只创建具有正确内容类型和文件名的标题。之后您必须发送数据,例如

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

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

$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);
于 2011-01-20T03:16:51.403 回答
0

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

于 2008-10-13T22:21:31.707 回答
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();
于 2009-08-24T18:13:50.260 回答
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();
于 2009-10-15T19:48:31.043 回答