Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] PHP Вызрузка данных в Excel, из БД (http://forum.oszone.net/showthread.php?t=202849)

zvezda_t 24-03-2011 08:13 1642545

PHP Вызрузка данных в Excel, из БД
 
Здравствуйте, уважаемые программисты!

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

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

Sham 24-03-2011 09:23 1642577

Если сохранять excel в виде XML (спецификации OpenXML), то можно по шаблону. Т.е. сохраните excel в виде XML (есть в списке опция). Потом откройте файл в текстовом редакторе - на основе того XML-кода делаете вывод в xls-файл из базы (будет обычный XML-файл, открываемый в excel).
Другой вариант - через COM...

PhilB 24-03-2011 16:57 1642948

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

mar 24-03-2011 17:06 1642958

Варианты без com для xls:
например, + в PEAR есть (или был?) - Spreadsheet/Excel/Writer.php
Это же, портированное в вариант без PEAR можно было бы найти в phpclasses

А если отчет без особых красивостей, то можно вообще использовать csv

zvezda_t 25-04-2011 13:27 1665397

Цитата:

Цитата PhilB
Далее открываете в excel, указывая разделитель. »

PhilB, а как мне его открыть в Excel?

zvezda_t 25-04-2011 14:07 1665418

Sham, через Com объекты у меня вообще не отображается(((
даже не открылся Excel
почему так?

PhilB 25-04-2011 19:40 1665582

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

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

PhilB 26-04-2011 14:44 1665939

Собственно, глянул сейчас Office 2007 и понял, почему вы не поняли как открыть. Ибо сам не понял, почему нельзя открыть через Файл -> Открыть. Может и можно, но это как то нетривиально и вовсе.
Единственный найденный способ: во вкладке "Данные" есть кнопка "Из текста" - там выбираете файл и импортируете. Интерфейс там сходный со скрином выше (идейно:)).

zvezda_t 27-04-2011 07:28 1666395

Сделала кнопку
PHP код:

print "<input type='button' name='pechat1' onClick=\"location.href='excel_file/dct_excel_1.php'\" value='Печать-Com'>"

dct_excel_1.php:
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, но в примере нашла только как отправить его в браузер через заголовки или как его сохранить на сервере.
PHP код:

//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 1667651

Цитата:

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

при чем тут страница, если нужен отдельный запрос на файл... делайте ссылку на этот скрипт, который отдает содержимое. Либо разруливайте выдачу с помощью параметров (например, ?get=excel)
Цитата:

Цитата zvezda_t
Вот иcпользуя Com объекты, можно же только сам объект в браузер отправить?
А если я класс PHPExcel использую, объект этого класса как мне в браузер отправить? »

в браузер нужно содержимое файла отправлять, с соотв. заголовками.


Время: 11:44.

Время: 11:44.
© OSzone.net 2001-