Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2011, 21:50   #1
DJ DIMON
Пользователь
 
Аватар для DJ DIMON
 
Регистрация: 05.12.2008
Сообщений: 31
По умолчанию Excel и PHP

Нужна помощь в реализации следующей идеи. Смысл заключается, в том что неободимо читать excel файл с таблицей и выводить на сайте (html или php). В случаи если в файл вносится изменения, то и на сайте происходило обновление информации. Поиск в интернете привел на PHPExcel, скачал архив и распаковал, так куча разных классов и функций. Нашел статью http://www.web-junior.net/chtenie-ex...hhyu-phpexcel/ но никак не могу сообразить как это все реализовать и вообще возможно ли это сделать спомощью этого скрипта????
DJ DIMON вне форума Ответить с цитированием
Старый 06.10.2011, 22:07   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ну так второй пример("Итератор") из найденной вами статьи как раз и выполняет вашу задачу на 100% - читает xls-файл и выводит данные из него в виде HTML-таблицы.
Ничего же не мешает получать данные из ячеек в массивы - и использовать как вам нужно.
Что конкретно у вас не получается?
Покажите ваш код.

Архив с библиотекой содержит также множество скриптов-примеров, насколько я помню.
Отличная библиотека.
Andkorol вне форума Ответить с цитированием
Старый 07.10.2011, 10:34   #3
DJ DIMON
Пользователь
 
Аватар для DJ DIMON
 
Регистрация: 05.12.2008
Сообщений: 31
По умолчанию

архив с библиотекой полностью помещать же не нужно? я так понимаю нужны лишь 2 файла (из примера) Row.php и CellIterator.php поместил в папку со страницей, вставил на страницу код iterator.php предложенный в примере заменив лишь load("rate.xls") на load("../table/table.xls")

PHP код:
<?php
set_include_path
(get_include_path() .
PATH_SEPARATOR 'PhpExcel/Classes/');
include_once 
'PHPExcel/IOFactory.php';
$objPHPExcel PHPExcel_IOFactory::load("../table/table.xls");
$objPHPExcel->setActiveSheetIndex(0);
$aSheet $objPHPExcel->getActiveSheet();
echo 
'<table cellpadding="0" cellspacing="0">';
//получим итератор строки и пройдемся по нему циклом
foreach($aSheet->getRowIterator() as $row){
echo 
"<tr>\r\n";
//получим итератор ячеек текущей строки
$cellIterator $row->getCellIterator();
//пройдемся циклом по ячейкам строки
foreach($cellIterator as $cell){
//и выведем значения
echo "<td>".$cell->getCalculatedValue()."</td>";
}
echo 
"<tr>\r\n";
}
echo 
'</table>';
?>
на странице вывелось всего
setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); echo '
'; //получим итератор строки и пройдемся по нему циклом foreach($aSheet->getRowIterator() as $row){ echo "
\r\n"; //получим итератор ячеек текущей строки $cellIterator = $row->getCellIterator(); //пройдемся циклом по ячейкам строки foreach($cellIterator as $cell){ //и выведем значения echo "
".$cell->getCalculatedValue()."
"; } echo "
\r\n"; } echo '
'; ?>
DJ DIMON вне форума Ответить с цитированием
Старый 07.10.2011, 11:29   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от DJ DIMON Посмотреть сообщение
архив с библиотекой полностью помещать же не нужно? я так понимаю нужны лишь 2 файла (из примера) Row.php и CellIterator.php поместил в папку со страницей, вставил на страницу код iterator.php предложенный в примере заменив лишь load("rate.xls") на load("../table/table.xls")
Там в архиве есть файл "install.txt" - в нем указан способ инсталляции данной библиотеки:
Цитата:
Installation instructions
-------------------------

Installation is quite easy: copy the contents of the Classes folder to any location
in your application required
.

Example:

If your web root folder is /var/www/ you may want to create a subfolder called
/var/www/Classes/ and copy the files into that folder so you end up with files:

/var/www/Classes/PHPExcel.php
/var/www/Classes/PHPExcel/Calculation.php
/var/www/Classes/PHPExcel/Cell.php
...
Andkorol вне форума Ответить с цитированием
Старый 07.10.2011, 13:22   #5
DJ DIMON
Пользователь
 
Аватар для DJ DIMON
 
Регистрация: 05.12.2008
Сообщений: 31
Радость

скопировал файлы теперь www\Classes\.....
код следующий
PHP код:
<html>
<head>
<title>Iterator</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8"/>
</head>
<body>
<?php
set_include_path
(get_include_path() .
PATH_SEPARATOR 'PhpExcel/Classes/');
include_once 
'Classes/PHPExcel/IOFactory.php';
$objPHPExcel PHPExcel_IOFactory::load("table.xls");
$objPHPExcel->setActiveSheetIndex(0);
$aSheet $objPHPExcel->getActiveSheet();
echo 
'<table cellpadding="0" cellspacing="0">';
//получим итератор строки и пройдемся по нему циклом
foreach($aSheet->getRowIterator() as $row){
echo 
"<tr>\r\n";
//получим итератор ячеек текущей строки
$cellIterator $row->getCellIterator();
//пройдемся циклом по ячейкам строки
foreach($cellIterator as $cell){
//и выведем значения
echo "<td>".$cell->getCalculatedValue()."</td>";
}
echo 
"<tr>\r\n";
}
echo 
'</table>';
?>
</body>
</html>
выдает ошибку
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/WWW/Classes/PHPExcel/IOFactory.php on line 54

как я понимаю синтаксическая ошибка в IOFactory.php на 54 линии
вот она
PHP код:
private static $_searchLocations = array(
        array( 
'type' => 'IWriter''path' => 'PHPExcel/Writer/{0}.php''class' => 'PHPExcel_Writer_{0}' ),
        array( 
'type' => 'IReader''path' => 'PHPExcel/Reader/{0}.php''class' => 'PHPExcel_Reader_{0}' )
    ); 
Помоги пожалуйста разобраться
DJ DIMON вне форума Ответить с цитированием
Старый 07.10.2011, 13:50   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Проверяй пути к excel-документу и подключаемым файлам библиотеки:
Цитата:
$objPHPExcel = PHPExcel_IOFactory::load("../table/table.xls");
...
$objPHPExcel = PHPExcel_IOFactory::load("table.xls");
У тебя с путями что-то явно напутано:
Цитата:
set_include_path(get_include_path() .
PATH_SEPARATOR . 'PhpExcel/Classes/');
include_once 'Classes/PHPExcel/IOFactory.php';
Andkorol вне форума Ответить с цитированием
Старый 10.10.2011, 08:47   #7
DJ DIMON
Пользователь
 
Аватар для DJ DIMON
 
Регистрация: 05.12.2008
Сообщений: 31
По умолчанию

файлы расположены:
папка Classes - /WWW/Classes/
iterator - /WWW/
файл table.xls - /WWW/

Код iterator.php
PHP код:
<html>
<head>
<title>Iterator</title>
<meta http-equiv="content-type"
content="text/html;charset=utf-8"/>
</head>
<body>
<?php
set_include_path
(get_include_path() .
PATH_SEPARATOR 'Classes/PHPExcel');
include_once 
'Classes/PHPExcel/IOFactory.php';
$objPHPExcel PHPExcel_IOFactory::load("table.xls");
$objPHPExcel->setActiveSheetIndex(0);
$aSheet $objPHPExcel->getActiveSheet();
echo 
'<table cellpadding="0" cellspacing="0">';
//получим итератор строки и пройдемся по нему циклом
foreach($aSheet->getRowIterator() as $row){
echo 
"<tr>\r\n";
//получим итератор ячеек текущей строки
$cellIterator $row->getCellIterator();
//пройдемся циклом по ячейкам строки
foreach($cellIterator as $cell){
//и выведем значения
echo "<td>".$cell->getCalculatedValue()."</td>";
}
echo 
"<tr>\r\n";
}
echo 
'</table>';
?>
</body>
</html>
Ошибка на странице:
Код:
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/s/sait.ru/WWW/Classes/PHPExcel/IOFactory.php on line 54
DJ DIMON вне форума Ответить с цитированием
Старый 10.10.2011, 15:43   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

А если убрать это:
PHP код:
set_include_path(get_include_path() . 
PATH_SEPARATOR 'Classes/PHPExcel'); 
?
Andkorol вне форума Ответить с цитированием
Старый 10.10.2011, 19:53   #9
DJ DIMON
Пользователь
 
Аватар для DJ DIMON
 
Регистрация: 05.12.2008
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
А если убрать это:
PHP код:
set_include_path(get_include_path() . 
PATH_SEPARATOR 'Classes/PHPExcel'); 
?
не такая же история, таже самая ошибка
DJ DIMON вне форума Ответить с цитированием
Старый 10.10.2011, 21:59   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от DJ DIMON Посмотреть сообщение
не такая же история, таже самая ошибка
А у вас какая версия PHP установлена?
PHPExcel требует 5.2.0 и выше.
Если у вас версия ниже - в этом проблема.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
excel + php DeDoK PHP 1 06.11.2010 23:44
Открывка Excel документов в php feniks1991 PHP 5 19.10.2010 09:10
EXCEL & PHP - объединение ячеек arengin PHP 0 13.02.2010 16:27
PHP и EXCEL Valei PHP 5 05.05.2009 14:09
PHP & Excel LeoN PHP 2 02.09.2008 13:37