Как лучше всего создать файл XLS в PHP
В настоящее время я пытаюсь выяснить, как лучше всего создать a .xls файл из PHP. Мне кажется, что все, что мне нужно сделать, это изменить тип содержимого заголовка на "application/vnd.ms-excel", а затем вывести данные в формате, разделенном запятыми. Это лучший способ сделать это?
Спасибо за любую помощь!
Метрополис
EDIT
Было бы плохо просто вывести данные в виде HTML? У меня уже есть класс, который я хотел бы расширить для этой задачи, так что я бы предпочитайте держаться подальше от стороннего решения. Мне просто нужно знать, каким будет лучший способ вывода данных, чтобы получить максимальную отдачу от этого формата файла.
После просмотра PHPExcel это кажется лучшим решением для этой проблемы. Я ценю все ваши ответы и дал бы три правильных ответа, если бы мог. Но до голосов придется доделать :)
9 ответов:
Зависит от того, нужен ли вам файл CSV или файл XLS. Файл XLS может включать информацию о форматировании ячеек, а также блокировку строк/столбцов, защиту и другие функции, которые невозможны в файле CSV. Кроме того, имейте в виду, что Excel неправильно поддерживает содержимое в кодировке UTF-8 при открытии CSV-файлов.
Если вам нужен форматированный файл XLS, то вам нужна библиотека, такая как PhpSpreadsheet, которая может записать файл с таким форматированием, или COM, Если вы работаете на сервере в Windows с установленным Excel
Это довольно просто, потому что excel поддерживает html-код. Поэтому вам просто нужно добавить заголовок в верхней части файла.. а затем Эхо ваш html-код!
header ( "Content-type: application/vnd.ms-excel" ); header ( "Content-Disposition: attachment; filename=foo_bar.xls" ); echo "<table><tr><th>Header1</th></tr><tr><td>value1</td></tr></table>";Это создаст файл excel!
Можно использовать один из форматов XML, понятных Microsoft Office.
Смотрите сайт MicrosoftOpenXML Developer для получения подробной информации.
Есть библиотека под названием PHPExcel, на которую вы можете посмотреть, чтобы помочь вам в этом.
Конечно, все это зависит от того, что вы подразумеваете под:
"извлеките максимум пользы из этого формата файла"
Если у вас просто есть простые таблицы без форматирования, CSV-файлы могут быть всем, что вам нужно; однако, если вы хотите использовать больше возможностей электронной таблицы, я бы рекомендовал взглянуть на OpenXML.
Вы можете просто вывести html, и более новые версии Excel будут читать его. Я не знаю, сколько форматирования вы можете сделать с ним, хотя.
Если вам нужен ввод данных, богатое форматирование или формулы, я добился успеха с PHPExcel.
Я предпочитаю записывать CSV-файлы. CSV-это очень простой формат для записи и легкого преобразования из существующих сценариев таблиц html. Он также имеет то преимущество, что его можно читать с помощью широкого спектра программ электронных таблиц, не являющихся microsoft. Если ты можно сделать CSV формат файла выбора для вашего веб-приложения, вы будете пожинать плоды, когда вы должны принять электронную таблицу в качестве входных данных. Гораздо проще читать и анализировать CSV-файл, чем файл Excel.
Попробуйте XLS файловую оболочку, ala этот пост на SO.
Взгляните на этот пакет PEAR: электронная таблица Excel Writer
Отказ от ответственности: я работаю в компании Expected Behavior, которая разработала DocRaptor.
Тем не менее, вы можете использовать DocRaptor для создания XLS-файлов из HTML. DocRaptor-это проект Ruby on Rails, но вы можете использовать его с PHP. Вот наш пример PHP:
Вот еще одна ссылка на домашнюю страницу DocRaptor:
Да, это один из возможных способов - Если вам нужен простой CSV-файл, который откроется в Ms Excel.
Если вам нужен богатый файл XLS, есть много вариантов, включая использование сторонних библиотек DLL, таких как ' CarlosAg.ExcelXmlWriter.dll ' для создания файла XLS. Вы можете найти примеры использования этой библиотеки dll в сети или Посмотреть здесь
Вы можете начать использовать эти файлы. Он создаст файл excel и поможет вам загрузить его. Скачать нужный код или демо здесь : http://purpledesign.in/blog/to-generate-excel-using-php/
Вы можете добавить такие строки в
01-simple-download-xlsx.php
$objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'Roll') ->setCellValue('B1', 'Name') ->setCellValue('C1', 'Total Classes') ->setCellValue('D1', 'Class Attended') ->setCellValue('E1', 'Percentage');Вы можете печатать данные из такой базы данных, используя цикл while.
$i=2; while ($row = $database->fetch_array($result)) { $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A'.$i, $row[0]) ->setCellValue('B'.$i, $row[1]) ->setCellValue('C'.$i, $row[2]) ->setCellValue('D'.$i, $total) ->setCellValue('E'.$i, round(($row[2]/$total)*100)); $i++; }
Comments