PHPExcel: HTML в Excel, запись удаления CSS в файл Excel

Я хочу экспортировать (принудительно загрузить) HTML (с CSS) в лист EXCEL, на данный момент я использую библиотеку PHPExcel для выполнения этого, она генерирует файл excel, но удаляет CSS (используя встроенные с тегами html), может ли кто-нибудь помочь мне , что как сохранить CSS в листе Excel.

Я использую этот код, но я также хочу сохранить CSS и принудительно загрузить

//html
$html = "<table> 
<thead> <tr> <td colspan='2'> <h1> Main Heading </h1> <td> </tr> </thead>
<tbody>
<tr> 
  <th style='background:#ccc; color:red; font-size:15px'> Name <th> 
  <th style='background:#ccc; color:red; font-size:15px'> Class <th> 
</tr> 
<tr> 
  <td style='background:#fff; color:green; font-size:13px'> Jhon <th> 
  <td style='background:#fff; color:gree; font-size:13px'> 9th <th> 
</tr> 
</tbody>

</table>";

// Put the html into a temporary file
$tmpfile = time().'.html';
file_put_contents($tmpfile, $html);

// Read the contents of the file into PHPExcel Reader class
$reader = new PHPExcel_Reader_HTML; 
$content = $reader->load($tmpfile);  

// Pass to writer and output as needed
$objWriter = PHPExcel_IOFactory::createWriter($content, 'Excel2007');
$objWriter->save('excelfile.xlsx');

// Delete temporary file
unlink($tmpfile);

person Qazi    schedule 09.12.2014    source источник


Ответы (1)


В настоящий момент вы не можете читать стили из разметки HTML, если не переписываете PHPExcel HTML Reader для обработки стилей; он просто еще не поддерживается. Если вы создаете электронную таблицу из HTML, возможно, вам следует пересмотреть ее создание непосредственно из нового объекта PHPExcel, который дает вам доступ ко всем функциям PHPExcel.

Чтобы отправить в браузер, отправьте на php://output с соответствующими заголовками, как показано в Examples/01simple-download-xlsx.php и описано в разделе документации разработчика под названием Redirect output to a client’s web browser

person Mark Baker    schedule 10.12.2014
comment
Привет, @Mark за это предложение, если только вы не переписываете PHPExcel HTML Reader для обработки стилей; Не могли бы вы дать мне ссылку или код, который обрабатывает весь HTML с помощью CSS и т. Д.? - person Qazi; 10.12.2014
comment
Прелесть Open Source: это файл HTML Reader ... он называется HTML.php, и вы можете найти его в папке Classes/PHPExcel/Reader ... он вообще не обрабатывает CSS, только основные элементы HTML, таблицы и свойства rowspan / colspan ячеек таблицы - person Mark Baker; 10.12.2014
comment
Значит, мне нужно написать новый код для CSS? Верно ? Если да, можете ли вы привести мне простой пример, который помогает мне читать CSS из HTML, а затем помещать его в Excel? - person Qazi; 10.12.2014
comment
Если бы я мог привести вам пример, это было бы потому, что я сам уже написал этот код, и в этом случае он уже будет частью PHPExcel .... но вы можете взглянуть на этот запрос на вытягивание, который прилагает некоторые усилия для чтения информации о стиле из html. - person Mark Baker; 10.12.2014
comment
Не понял код запроса на вытягивание. На самом деле я новичок. Не могли бы вы подробнее рассказать о нем или какой-нибудь рабочий пример? - person Qazi; 10.12.2014
comment
Нет, я больше не могу вдаваться в подробности .... если бы у меня был рабочий пример, он, вероятно, уже был бы частью библиотеки PHPExcel - person Mark Baker; 10.12.2014
comment
Откуда на самом деле берется ваш HTML? Вы строите это где-нибудь в своем сценарии? - person Mark Baker; 10.12.2014
comment
Я создал общий метод, я передаю необходимые параметры, а затем он отображает запрошенный HTML-код, после чего я добавляю этот HTML-код во временный файл и следую методам PHPExcel, чтобы прочитать его и создать файл xlsx. Но в файле Excel отсутствует файл css. - person Qazi; 10.12.2014
comment
Возможно, вам следует пересмотреть подход, который вы применяете к этому, и просто создать новый объект PHPExcel и заполнить его своими данными вместо генерации HTML .... это то, что делает большинство людей - person Mark Baker; 10.12.2014
comment
Извините, я не понял последний комментарий. Приведите пример. Если можете? - person Qazi; 10.12.2014
comment
Документация PHPExcel наполнена примерами ... и есть целая папка с именем /Examples, в которой есть множество примеров того, как создать файл Excel. - person Mark Baker; 10.12.2014
comment
до библиотеки PHPExcel я использовал ручной способ (заголовки и т. д.), см. заголовок ниже (Pragma: public); заголовок (Cache-Control: must-revalidate, post-check = 0, pre-check = 0); заголовок (Cache-Control: private, false); заголовок (Content-Type: application / vnd.ms-excel); заголовок (Content-Disposition: attachment; filename = abc.xls); echo $ html; - person Qazi; 10.12.2014
comment
Попробуйте прочитать некоторую документацию и посмотреть некоторые примеры использования PHPExcel. - person Mark Baker; 10.12.2014
comment
вручную создать правильный файл Excel, но теперь проблема в том, что всякий раз, когда я открываю экспортированный файл Excel в Office 2013, появляется окно с предупреждением, формат файла и расширение точки zbc.xls не совпадают. файл может быть поврежден или небезопасен, если вы не доверяете его источнику. Вы все равно хотите его открыть? Подскажите, как избавиться от этого предупреждения? требуется ли какой-либо специальный заголовок для открытия файла xls в Office 2013? без предупреждения? - person Qazi; 10.12.2014
comment
Используйте правильное расширение для записывающего устройства, которое вы используете: Excel2007 Writer создает .xlsx файл в формате OfficeOpenXML, Excel5 Writer создает .xls файл в формате BIFF - person Mark Baker; 10.12.2014
comment
Я пробовал этот (вручную, а не php excel) заголовок (Content-Type: application / vnd.openxmlformats-officedocument.spreadsheetml.sheet); но сгенерированный файл не открывается - person Qazi; 10.12.2014