Spreadsheet_Excel_Writer获取文件内容

时间:2010-07-31 02:13:46

标签: php spreadsheet-excel-writer

我需要通过PHP将XLS文件附加到电子邮件中。 问题是 - Spreadsheet_Excel_Writer向浏览器发送HTTP标头然后发送内容。 Spreadsheet_Excel_Writer API没有像get_content这样的函数直接成为文件内容。我不想先保存文件,我只是想跳过这一步,直接将内容保存为附件。 有什么想法吗?

很多。

3 个答案:

答案 0 :(得分:4)

Spreadsheet_Excel_Writer中没有“写入文件”方法。您最多可以使用->send()方法将其直接发送给客户端。这意味着您可以使用PHP的output buffering捕获输出,并将数据作为字符串获取,然后将其插入到电子邮件中(例如,通过PHPMailer的->AddStringAttachment())。

您可能希望调查切换到PHPExcel,因为Spreadsheet_Excel_Writer基本上已经死了,减去了一些小错误修复。 PHPExcel支持Excel 2007,而S_E_W则停留在Excel 5.0(90年代初)。它还有一个->save()方法来写入文件。

答案 1 :(得分:3)

require_once 'Spreadsheet/Excel/Writer.php';

ob_start();

$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8, 'utf-8');
$worksheet =& $workbook->addWorksheet('sheet 1');
$worksheet->setInputEncoding('utf-8');

$worksheet->write(0, 0, 'test');
$worksheet->write(1, 0, 'test2');

$workbook->close();

$sXls = ob_get_contents();

ob_end_clean();

答案 2 :(得分:0)

尽管OP不想先保存文件,但我一直在寻找一种使用::send方法输出内联而不是附件的方法。

PEAR Spreadsheet_Excel_Writer 0.10.9.4构造函数支持$filename参数。 [sic 0.1]  和[sic 0.9.4]

提供后,在实例化对象上调用Spreadsheet_Excel_Writer::close方法,会将生成的电子表格输出到指定的路径。

$workbook = new Spreadsheet_Excel_Writer('/path/to/output/file.xls');
//...
$workbook->close();

$data = file_get_contents('/path/to/output/file.xls'); 
//or file_get_contents($workbook->_filename);
unlink('/path/to/output/file.xls');