Показать полную графическую версию : [решено] PHP Вызрузка данных в Excel, из БД
zvezda_t
24-03-2011, 08:13
Здравствуйте, уважаемые программисты!
Пожалуйста, посоветуйте мне самый лучший класс для работы с Excel ! :)
Мне нужно выгрузить данные из БД и сформировать отчет в виде excel на php.
Заранее огромное спасибо!
Если сохранять excel в виде XML (спецификации OpenXML), то можно по шаблону. Т.е. сохраните excel в виде XML (есть в списке опция). Потом откройте файл в текстовом редакторе - на основе того XML-кода делаете вывод в xls-файл из базы (будет обычный XML-файл, открываемый в excel).
Другой вариант - через COM (http://www.spravkaweb.ru/php/sovet/excelcom)...
Возможно проще создать простой csv файл.
Просто генерите простой файл, разделяя внутри строки данные разделителем (например, запятой). Далее открываете в excel, указывая разделитель.
Варианты без com для xls:
например, + в PEAR есть (или был?) - Spreadsheet/Excel/Writer.php
Это же, портированное в вариант без PEAR можно было бы найти в phpclasses (http://www.phpclasses.org/)
А если отчет без особых красивостей, то можно вообще использовать csv
zvezda_t
25-04-2011, 13:27
Далее открываете в excel, указывая разделитель. »
PhilB, а как мне его открыть в Excel?
zvezda_t
25-04-2011, 14:07
Sham, через Com объекты у меня вообще не отображается(((
даже не открылся Excel
почему так?
У вас должен получиться что-то типа:
--------------
1,2,3,4
3,c,4,3
-------------
Между линий приведен пример содержмого файла.
Насколько я помню, если у файла расширение csv он предложит его импортировать (независимого от того в проводнике или из excel Файл->Открыть). Майкрософтского офиса нет, но у вас должно быть что-то типа 1.png. (это OpenOffice)
Собственно, глянул сейчас Office 2007 и понял, почему вы не поняли как открыть. Ибо сам не понял, почему нельзя открыть через Файл -> Открыть. Может и можно, но это как то нетривиально и вовсе.
Единственный найденный способ: во вкладке "Данные" есть кнопка "Из текста" - там выбираете файл и импортируете. Интерфейс там сходный со скрином выше (идейно:)).
zvezda_t
27-04-2011, 07:28
Сделала кнопку
print "<input type='button' name='pechat1' onClick=\"location.href='excel_file/dct_excel_1.php'\" value='Печать-Com'>";
dct_excel_1.php:
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Add(); // Добавляем новый документ
$rangeValue = $xls->Range("A1");
$rangeValue->Value = "В выделенном блоке текст будет жирный, подчеркнутый, наклонный";
$rangeValue = $xls->Range("A2");
$rangeValue->Value = "Шрифт будет иметь высоту 12";
$rangeValue = $xls->Range("A3");
$rangeValue->Value = "Имя шрифта - Times New Roman";
При нажатии на кнопку в браузере (IE6) открывает пустое окно и никакой реакции.
Что не так?
Вот иcпользуя Com объекты, можно же только сам объект в браузер отправить?
А если я класс PHPExcel использую, объект этого класса как мне в браузер отправить?
У меня получилось создать документ Excel используя класс PHPExcel, но в примере нашла только как отправить его в браузер через заголовки или как его сохранить на сервере.
//1)отправляем в браузер через заголовки
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
//2)сохраняем
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
Через заголовки не могу, у меня на этой страничке еще много чего не нужного выводиться...
Как же мне его открыть?
Через заголовки не могу, у меня на этой страничке еще много чего не нужного выводиться...
Как же мне его открыть? »
при чем тут страница, если нужен отдельный запрос на файл... делайте ссылку на этот скрипт, который отдает содержимое. Либо разруливайте выдачу с помощью параметров (например, ?get=excel)
Вот иcпользуя Com объекты, можно же только сам объект в браузер отправить?
А если я класс PHPExcel использую, объект этого класса как мне в браузер отправить? »
в браузер нужно содержимое файла отправлять, с соотв. заголовками.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.