我需要通过PHP将XLS文件附加到电子邮件中。
问题是 - Spreadsheet_Excel_Writer
向浏览器发送HTTP标头然后发送内容。 Spreadsheet_Excel_Writer
API没有像get_content
这样的函数直接成为文件内容。我不想先保存文件,我只是想跳过这一步,直接将内容保存为附件。
有什么想法吗?
很多。
答案 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.1
到0.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');