Вы читаете gv0zdik

Previous Entry | Next Entry

PHP, подружим PHP и Excel

php excelПо просьбам читателей сегодня пишу пост о дружбе MS Excel'я и PHP , сразу скажу чтобы потом не закидали камнями что дружат они ущербно , минут десять я потратил, чтобы найти разработку с помощью которой можно создавать excel'евские таблицы и ещё около часа искал класс с помощью которого это можно будет прочитать )) Начну с создания таблицы.



Есть класс под названием Excel Writer с помощью которого можно с лёгкостью создать excel'евский файлик вот таким образом
<?php

    include("excelwriter.inc.php");
    $excel=new ExcelWriter("myXls.xls");
    if($excel==false)   
        echo $excel->error;
    $myArr=array("Name","Last Name","Address","Age");
    $excel->writeLine($myArr);
    $myArr=array("Sriram","Pandit","23 mayur vihar",24);
    $excel->writeLine($myArr);
   
    $excel->writeRow();
    $excel->writeCol("Manoj");
    $excel->writeCol("Tiwari");
    $excel->writeCol("80 Preet Vihar");
    $excel->writeCol(24);
   
    $excel->writeRow();
    $excel->writeCol("Harish");
    $excel->writeCol("Chauhan");
    $excel->writeCol("115 Shyam Park Main");
    $excel->writeCol(22);

    $myArr=array("Tapan","Chauhan","1st Floor Vasundhra",25);
    $excel->writeLine($myArr);
   
    $excel->close();
    echo "data is write into myXls.xls Successfully.";
?>

В папке со скриптом у меня появился файл myXls.xls , который открылся двумя экселями 2007 и 2003
php excel














Скачать класс:
http://www.phpclasses.org/browse/download/zip/package/2037/name/excelwriter-2004-12-30.zip
http://slil.ru/26310473

Для того чтобы читать таблицы созданные в excel'е вам понадобиться класс под названием Spreadsheet Excel Reader , для его работы необходим модуль PEAR, но на линукс хостинге у меня всё работало и так, без дополнительных установок. Еще в файле Excel/reader.php 31 строчку я заменил с
require_once 'Spreadsheet/Excel/Reader/OLERead.php';
на
require_once 'Excel/oleread.inc';
Пример у меня выглядел следующим образом:
<?php
require_once ('Excel/reader.php');

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('cp-1251');
$data->setUTFEncoder('mb'); $data->read('filename.xls');

echo ('<table>');
 for ($i = 1; $i < = $data->sheets[0]['numRows']; $i++)
 {
  echo('<tr>');
   for ($j = 1; $j < = $data->sheets[0]['numCols']; $j++)
   {
    echo ('<td>'.$data->sheets[0]['cells'][$i][$j].'</td>');
   }
  echo('</tr>');
 }
 echo ('</table>');
?>

Скрипт отлично распарсил созданный мною файл и выдал на экран такую же таблицу только в HTML'е.
Скачать класс:
http://downloads.sourceforge.net/phpexcelreader/phpExcelReader.zip

Я бы не советовал организовывать серьёзные проекты на классе Spreadsheet Excel Reader  , т.к. во время поиска увидел массу людей не довольных его работой, он плохо справляется с файлами состоящих из нескольких листов или с вычисляемыми полями. Встретил одну коммерческую разработку, которая творит чудеса и даже разбивает результат по листам ,вот демо проекта.

Блогун - монетизируем блоги

Метки:

Comments

( 15 комментариев — Оставить комментарий )
stuudent
7 ноя, 2008 08:38 (UTC)
хм, а в свое время ридера так и не нагуглил. пасиба )
pashkash
7 ноя, 2008 09:10 (UTC)
может, интересно..
когда искал подобное решение для генерации отчётов статиcтики продаж в бинарных xls - единственное, что удовлетворило моим требованием оказалось:
http://www.codeplex.com/PHPExcel/Wiki/View.aspx?title=Examples&
referringTitle=Home

до него перебрал классов 6 или 7.. но на этом остановился.. его и рекомендую, ибо остальные либо криво работают с русскими буквами в старых OpenOffice, либо имеют ограничение на размер xls.. и если почитать историю проектов - можно понять почему, а вот последний найденный - все требования выдержал.. )
gv0zdik
7 ноя, 2008 09:15 (UTC)
Re: может, интересно..
Спасибо возьму на заметку.
Для чтения последняя коммерческая разработка хороша , правда стоит 67 баксов.
pashkash
7 ноя, 2008 09:18 (UTC)
Re: может, интересно..
ну этот может и читать и писать и много какие версии понимать и даже, кажется, рисовать и перерабатывать в pdf - судя по классам, но последнее не надо было - соотв не проверял.. )
diesel_ks
7 ноя, 2008 09:16 (UTC)
большое спасибо,
сегодня потестирую классы :)
gv0zdik
7 ноя, 2008 11:42 (UTC)
Ну извините , более новые решения за деньги только.
diesel_ks
7 ноя, 2008 11:55 (UTC)
кстати, касательно ридера.
Я специально попросил людей что бы был 1 лист и не было формул.
С такими файлами проблем вроде не должно быть ?
gv0zdik
7 ноя, 2008 12:12 (UTC)
Нет , сегодня сам проверял отлично распознаёт.
infernal_knight
7 ноя, 2008 14:51 (UTC)
Без COM объектов? Под линухой оба работают?? Искал когда-то библиотеку для DOC файлов без COM объектов - так и не нашел...
gv0zdik
8 ноя, 2008 13:23 (UTC)
Под линухом , оба работают без КОМЫ ))
kaleva
7 ноя, 2008 14:55 (UTC)
Было, делал, использовал.
Кто возьмёт в продакшн, запаситесь свечками антигеморроидальными.

По итогам проекта, я за программно-аппаратный комплекс: csv-файл + офис-менеджер.

Exel умеет :)
kaleva
7 ноя, 2008 14:57 (UTC)
Поясню на всякий случай: Exel умеет делать импорт и экспорт в csv-формат.
(Удалённый комментарий)
gv0zdik
4 дек, 2008 09:13 (UTC)
Это запросто может быть , эти классы очень сырые и не стабильные , но к сожалению других нет или только за $$$
(Удалённый комментарий)
gv0zdik
5 дек, 2008 06:37 (UTC)
Сейчас открыл из оперы 9.62 , всё работает
( 15 комментариев — Оставить комментарий )

Latest Month

Февраль 2012
Вс Пн Вт Ср Чт Пт Сб
   1234
567891011
12131415161718
19202122232425
26272829   
Разработано LiveJournal.com
Designed by Lilia Ahner