Как лучше всего создать файл XLS на PHP


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

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

РЕДАКТИРОВАТЬ

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

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

 21
Author: Metropolis, 2010-06-28

9 answers

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

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

 14
Author: Mark Baker, 2018-01-01 13:28:50

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

 12
Author: Pedro Gouveia, 2014-04-29 11:16:42

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

Смотрите сайт разработчика OpenXML Корпорации Майкрософт для получения подробной информации/спецификаций.

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

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

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

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

 3
Author: Robert Groves, 2016-05-09 19:59:00

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

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

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

 2
Author: Scott Saunders, 2016-05-09 20:00:38

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

 1
Author: cam8001, 2017-05-23 11:54:25
 1
Author: Davide Gualano, 2010-06-28 14:47:43

Отказ от ответственности: Я работаю в компании "Ожидаемое поведение", разработавшей DocRaptor.

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

Пример PHP DocRaptor

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

HTML для Excel с помощью DocRaptor

 1
Author: illbzo1, 2012-11-09 19:19:44

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

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

 0
Author: Julius A, 2010-06-28 14:49:07

Вы можете начать использовать эти файлы. Он создаст файл excel и поможет вам загрузить его. Загрузите код Souce или демо-версию здесь: 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++;
 }
 0
Author: Raj Sharma, 2013-12-30 16:28:51