0

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

多谢。

4

3 回答 3

4

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

您可能想研究切换到PHPExcel,因为 Spreadsheet_Excel_Writer 基本上是死在水中,减去一些小错误修复。PHPExcel 支持 Excel 2007,而 S_E_W 则停留在 Excel 5.0(90 年代初)。它还有一种->save()写入文件的方法。

于 2010-07-31T02:34:26.810 回答
3
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();
于 2011-05-04T15:51:20.727 回答
0

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

PEAR Spreadsheet_Excel_Writer 0.1to0.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');
于 2018-06-29T15:47:38.020 回答