Spreadsheet_Excel_Writer получить содержимое файла

Мне нужно прикрепить XLS-файл к электронной почте через PHP. Проблема в - Spreadsheet_Excel_Writer отправьте заголовок HTTP в браузер, а затем содержимое. Spreadsheet_Excel_Writer API не имеет никаких функций, таких как get_content стать содержимым файла напрямую. Я не хочу сначала сохранять файл, я просто хочу перепрыгнуть через этот шаг, сохраняя содержимое непосредственно в виде вложения. Есть идеи?

Большое спасибо.

3 ответа

Решение

В Spreadsheet_Excel_Writer нет метода "записи в файл". Самое большее, вы можете отправить его непосредственно клиенту с ->send() метод. Это означает, что вы МОЖЕТЕ захватить вывод с помощью буферизации вывода PHP и захватить данные в виде строки, которую затем можно вставить в электронное письмо (например, через PHPMailer ->AddStringAttachment()).

Возможно, вы захотите изучить переход на PHPExcel, так как Spreadsheet_Excel_Writer по сути мертв в воде, за исключением нескольких мелких исправлений. PHPExcel поддерживает Excel 2007, в то время как S_E_W застрял в Excel 5.0 (начало 90-х). Он также имеет ->save() способ записи в файл.

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-> близко ();

$sXls = ob_get_contents();

ob_end_clean();

Хотя OP не хочет сначала сохранять файл, я искал способ вывода inline, а не вложения, используя ::send метод.

Груша Spreadsheet_Excel_Writer0.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');
Другие вопросы по тегам