我需要通过 PHP 将 XLS 文件附加到电子邮件中。问题是 -Spreadsheet_Excel_Writer
将 HTTP 标头发送到浏览器,然后是内容。Spreadsheet_Excel_Writer
API没有任何像get_content
直接成为文件内容的功能。我不想先保存文件,我只想跳过这一步,直接将内容保存为附件。有任何想法吗?
多谢。
我需要通过 PHP 将 XLS 文件附加到电子邮件中。问题是 -Spreadsheet_Excel_Writer
将 HTTP 标头发送到浏览器,然后是内容。Spreadsheet_Excel_Writer
API没有任何像get_content
直接成为文件内容的功能。我不想先保存文件,我只想跳过这一步,直接将内容保存为附件。有任何想法吗?
多谢。
Spreadsheet_Excel_Writer 中没有“写入文件”方法。最多可以通过->send()
方法直接发送给客户端。这意味着您可以使用 PHP 的输出缓冲捕获输出,并将数据作为字符串抓取,然后可以将其插入到电子邮件中(例如通过 PHPMailer 的->AddStringAttachment()
)。
您可能想研究切换到PHPExcel,因为 Spreadsheet_Excel_Writer 基本上是死在水中,减去一些小错误修复。PHPExcel 支持 Excel 2007,而 S_E_W 则停留在 Excel 5.0(90 年代初)。它还有一种->save()
写入文件的方法。
require_once '电子表格/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'); $工作簿->关闭(); $sXls = ob_get_contents(); ob_end_clean();
尽管 OP 不想先保存文件,但我一直在寻找一种使用该方法输出内联而不是附件的::send
方法。
PEAR Spreadsheet_Excel_Writer
0.1
to0.9.4
构造函数支持一个$filename
参数。[原文 0.1]
和[原文 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');