Какой лучший способ создать файл XLS в PHP - PullRequest
21 голосов
/ 28 июня 2010

В настоящее время я пытаюсь найти лучший способ создания файла .xls из PHP. Мне кажется, что все, что мне нужно сделать, это изменить тип содержимого заголовка на «application / vnd.ms-excel», а затем выводить данные в формате через запятую. Это лучший способ сделать это?

Спасибо за любую помощь!
Метрополис

EDIT

Было бы плохо просто выводить данные в виде HTML? У меня уже есть класс, который я хотел бы расширить для этой проблемы, поэтому я предпочел бы держаться подальше от стороннего решения. Мне просто нужно знать, каким будет наилучший способ вывода данных, чтобы максимально использовать этот формат файла.

После просмотра PHPExcel, похоже, это лучшее решение для этой проблемы. Я ценю все ваши ответы, и я бы дал три правильных ответа, если бы смог. Но за голоса придётся сделать :))

Ответы [ 9 ]

15 голосов
/ 28 июня 2010

Зависит от того, хотите ли вы файл CSV или файл XLS. Файл XLS может включать информацию о форматировании для ячеек, а также блокировку строк / столбцов, защиту и другие функции, которые невозможны в файле CSV. Кроме того, имейте в виду, что Excel не правильно поддерживает содержимое в кодировке UTF-8 при открытии файлов CSV.

Если вы хотите отформатированный файл XLS, тогда вам нужна библиотека, такая как PhpSpreadsheet , которая может записать файл с таким форматированием, или COM, если ваш сервер работает под Windows с установленным Excel

14 голосов
/ 29 апреля 2014

это довольно просто, потому что 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!

3 голосов
/ 28 июня 2010

Вы можете использовать один из форматов XML , который понимает Microsoft Office.

Подробнее см. Сайт Microsoft OpenXML Developer .

Существует библиотека под названием PHPExcel , с которой вы можете ознакомиться, чтобы помочь вам в этом.

Конечно, все зависит от того, что вы подразумеваете под:

"получить максимальную отдачу от этого формата файла"

Если у вас просто простые таблицы без форматирования, CSV-файлы могут быть всем, что вам нужно; однако, если вы хотите использовать больше функций электронной таблицы, я бы порекомендовал взглянуть на OpenXML.

2 голосов
/ 28 июня 2010

Вы можете просто вывести html, и новые версии Excel прочтут его. Я не знаю, сколько форматирования вы можете сделать с ним.

Если вам нужна типизация данных, расширенное форматирование или формулы, я добился успеха с PHPExcel .

Я предпочитаю записывать файлы CSV. CSV - это очень простой формат для записи и простое преобразование из существующих сценариев HTML-таблиц. Он также имеет преимущество в том, что его читают многие программы для работы с электронными таблицами, не принадлежащие Microsoft. Если вы можете сделать CSV предпочтительным форматом файла для вашего веб-приложения, вы будете получать вознаграждение, когда вам придется принимать электронную таблицу в качестве входных данных. Гораздо проще читать и анализировать файл CSV, чем файл Excel.

1 голос
/ 09 ноября 2012

Отказ от ответственности: я работаю в Expected Behavior, компании, которая разработала DocRaptor.

Тем не менее, вы можете использовать DocRaptor для генерации файлов XLS из HTML. DocRaptor - это проект Ruby on Rails, но вы можете использовать его с PHP. Вот наш пример PHP:

Пример PHP с DocRaptor

Вот еще одна ссылка на домашнюю страницу DocRaptor:

HTML в Excel с DocRaptor

1 голос
/ 28 июня 2010

Посмотрите на этот пакет PEAR: Электронная таблица Excel Writer

1 голос
/ 28 июня 2010

Попробуйте XLS файл оболочки , аля этот пост на SO.

0 голосов
/ 30 декабря 2013

Вы можете начать использовать эти файлы. Это создаст файл Excel и поможет вам скачать его. Загрузите код Souce или демоверсию здесь: http://purpledesign.in/blog/to-generate-excel-using-php/

Вы можете добавить такие строки в

01-простая загрузка-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++;
 }
0 голосов
/ 28 июня 2010

Да, это один из возможных способов - если вам нужен простой CSV-файл, который откроется в MS Excel.

Если вам нужен богатый файл XLS, есть много вариантов, включая использование сторонних DLL, таких как CarlosAg.ExcelXmlWriter.dll, для создания файла XLS. Вы можете искать образцы использования этой библиотеки в сети или Смотрите здесь

...