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_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');