Я подаю HTML в файл Excel, выполнив:
header('Content-type: application/excel');
header('Content-Disposition: attachment; filename=testfile.xls');
$html = "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">
<head>
<!--[if gte mso 9]>
<xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name>Sheet1</x:Name>
<x:WorksheetOptions>
<x:Print>
<x:ValidPrinterInfo/>
</x:Print>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml>
<![endif]-->
</head>
<body>
<table>
<thead><tr><th>Header</th></tr></thead>
<tbody><tr><td>Values</td></tr></tbody>
</table>
</body>
</html>";
echo $html;
Это создает файл Excel с 1 листом, но мне нужен второй лист. Так что я сделал, чтобы дублировать
<x:ExcelWorksheet>
<x:Name>Sheet2</x:Name>
<x:WorksheetOptions>
<x:Print>
<x:ValidPrinterInfo/>
</x:Print>
</x:WorksheetOptions>
</x:ExcelWorksheet>
и просто использовал другое имя. Это сработало, как и ожидалось, но теперь я не знаю, как поместить данные во второй лист. Есть ли способ для меня, чтобы указать, какой лист <table>
должен идти в?
Я искал вокруг немного и нашел этот а также этот.
Решения по первой ссылке используют XML вместо HTML, и я был бы согласен с этим, но я не мог заставить многострочное отображение правильно отображаться, потому что я не могу настроить строку для автоматического подгонки высоты в зависимости от содержимого. Это показывает только первую строку.
Вторая ссылка говорит о MHTML (Multipart HTML), но я не мог понять это.
Задача ещё не решена.
Других решений пока нет …