Войти

Показать полную графическую версию : [решено] PHP Вызрузка данных в Excel, из БД


zvezda_t
24-03-2011, 08:13
Здравствуйте, уважаемые программисты!

Пожалуйста, посоветуйте мне самый лучший класс для работы с Excel ! :)
Мне нужно выгрузить данные из БД и сформировать отчет в виде excel на php.

Заранее огромное спасибо!

Sham
24-03-2011, 09:23
Если сохранять excel в виде XML (спецификации OpenXML), то можно по шаблону. Т.е. сохраните excel в виде XML (есть в списке опция). Потом откройте файл в текстовом редакторе - на основе того XML-кода делаете вывод в xls-файл из базы (будет обычный XML-файл, открываемый в excel).
Другой вариант - через COM (http://www.spravkaweb.ru/php/sovet/excelcom)...

PhilB
24-03-2011, 16:57
Возможно проще создать простой csv файл.
Просто генерите простой файл, разделяя внутри строки данные разделителем (например, запятой). Далее открываете в excel, указывая разделитель.

mar
24-03-2011, 17:06
Варианты без 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
почему так?

PhilB
25-04-2011, 19:40
У вас должен получиться что-то типа:
--------------
1,2,3,4
3,c,4,3
-------------
Между линий приведен пример содержмого файла.

Насколько я помню, если у файла расширение csv он предложит его импортировать (независимого от того в проводнике или из excel Файл->Открыть). Майкрософтского офиса нет, но у вас должно быть что-то типа 1.png. (это OpenOffice)

PhilB
26-04-2011, 14:44
Собственно, глянул сейчас 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__));

Через заголовки не могу, у меня на этой страничке еще много чего не нужного выводиться...
Как же мне его открыть?

Sham
29-04-2011, 18:41
Через заголовки не могу, у меня на этой страничке еще много чего не нужного выводиться...
Как же мне его открыть? »
при чем тут страница, если нужен отдельный запрос на файл... делайте ссылку на этот скрипт, который отдает содержимое. Либо разруливайте выдачу с помощью параметров (например, ?get=excel)
Вот иcпользуя Com объекты, можно же только сам объект в браузер отправить?
А если я класс PHPExcel использую, объект этого класса как мне в браузер отправить? »
в браузер нужно содержимое файла отправлять, с соотв. заголовками.




© OSzone.net 2001-2012