PHP Parse Excel с несколькими листами - PullRequest
3 голосов
/ 14 марта 2012

В настоящее время у меня есть файл Excel (.htm), который я использую в качестве шаблона для отчетов по счетам. Как только пользователь выбирает счет-фактуру и нажимает «Отправить», шаблон анализируется с информацией о счете-фактуре, и приглашение позволяет пользователю сохранить файл на своем компьютере в виде файла Excel (.xls).

Мне нужно разрешить пользователю выбирать несколько счетов. Каждый выбранный счет должен быть проанализирован на отдельном листе.

Что я сделал до сих пор: Я отредактировал шаблон и создал sheet2 из данных, скопированных в sheet1, но получаю ошибку.

Есть ли способ выбрать, какой лист я бы хотел проанализировать? Какой-нибудь совет относительно возможно более простого способа сделать это?

Это готовит мой выходной файл

//Prepare the output file
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
header("Pragma: public");

1 Ответ

1 голос
/ 15 марта 2012

Вы не можете автоматически преобразовать разметку HTML в файл Excel, просто отправив соответствующие заголовки в браузер. То, что вы делаете, по-прежнему отправляет пользователю файл HTML, и MS Excel будет прощать и открывать его (но это MS Excel, который выполняет синтаксический анализ / преобразование разметки HTML в формат, который он может понимать и отображать), а не заголовки что вы отправляете ... обратите внимание, что самые последние версии MS Excel могут при этом выдавать предупреждающее сообщение, а не лучший пользовательский опыт.

Когда MS Excel анализирует / конвертирует файл HTML, он только когда-либо обрабатывает разметку в один рабочий лист; поэтому, если вы не измените способ работы над созданием реального файла Excel, вы не сможете создать файл, который будет считываться как две или более таблицы MS Excel.

Список библиотек, способных создавать «настоящие» файлы Excel, можно найти в ответе на на этот вопрос . Мой собственный предпочтительный вариант - использовать PHPExcel (я предвзят, я ведущий разработчик). Однако вам нужно будет переписать ваш шаблон как шаблон Excel, а не как HTML ... дорожная карта на предстоящий год включает в себя возможность анализа HTML в Excel, и это позволит создавать несколько рабочих листов из нескольких «страниц» HTML , но эта опция еще не доступна (вероятно, не раньше, чем в июне).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...