Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > Excel-To-Php: вывод *.xls средствами php в html


Автор: Zmiuko 3.2.2010, 00:50
Ребят, проблема вот в чем. Мне необходимо вывести файл *.xls в html-таблицу.

Пробовал и phpExcelReader. Но проблема упирается в отсутствии возможности работы с PEAR.
Пробовал и PHP Excel parser pro 4.5. Но никак не осилю с помощью него мало-мальски нормальную таблицу вывести: примеров практически ноль.
Пробовал и Excel Explorer v2.3 Pro. Проблема в том, что скрипт очень стар, весь сыпется, проще осилить PHP Excel parser pro 4.5.
Пробовал и php excel reader 2.21 . исправил проблему is deprecated . Исправил много ошибок связанных с указанием классов. Но не понимает русской кодировки и книг в Excel.

Нашел реализацию модуля прайс-листов для Joomla http://joomlaforum.ru/index.php/topic,99100.0.html, demo представлено на http://yarbb.ru/index.php?option=com_excel&Itemid=57&catg=1&prslst=1 . Но никак не могу осилить: переписать модуль под свой сайтик.

Помогите с реализацией модуля прайс-листов, хотя бы с последним скриптом. С Joomla просто никогда не сталкивался. Спасибо заранее.

Автор: comtat 3.2.2010, 00:58
Цитата(Zmiuko @  3.2.2010,  00:50 Найти цитируемый пост)
Пробовал и php excel reader 2.21 . исправил проблему is deprecated . Исправил много ошибок связанных с указанием классов. Но не понимает русской кодировки и книг в Excel.

Использовал и никаких проблем не было..
А насчет кодировки то это 
Код

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('windows-1251');

Автор: Zmiuko 3.2.2010, 00:59
Но книги, то есть листы данный класс не выводит?

Добавлено через 5 минут и 17 секунд
Не помогает указание var $_defaultEncoding = "windows-1251"; , вывод:    ñåðåáðî, ñåðûé

Добавлено через 7 минут и 55 секунд
Вместо серебро, серый выводит ñåðåáðî, ñåðûé 

Автор: comtat 3.2.2010, 01:07
Цитата(Zmiuko @  3.2.2010,  00:59 Найти цитируемый пост)
Но книги, то есть листы данный класс не выводит? 

Не может такого быть..
Код

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('windows-1251');
$data->read("example.xls");
$errorLog = array();

for($sheet=0; $sheet < count($data->sheets); $sheet++){
    echo '<b>List #'.$sheet.'</b><br />';
    foreach($data->sheets[$sheet]['cells'] as $cell){
        echo $cell[1].'<br />';    
    }
}

Если есть необходимость могу прислать все целиком

Автор: Zmiuko 3.2.2010, 01:10
Буду признателен. Пришли пожалуйста. Может использую не ту версию или код класса уже испортил.

Автор: comtat 3.2.2010, 01:13
Сам реадер взял http://code.google.com/p/php-excel-reader/

Автор: Zmiuko 3.2.2010, 01:25
Большое спасибо. 

Кстати, у меня php 5.3 и выходили ошибки:

Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\javagrid\www\php-excel-reader-2.21\excel_reader2.php on line 916

Deprecated: Function split() is deprecated in Z:\home\javagrid\www\php-excel-reader-2.21\excel_reader2.php on line 844


Правильно ли я разрешил проблему исправив split() на explode() и изменив в строке 916 $this->_ole =& new OLERead(); =& new на = new ?

Автор: katie 16.3.2010, 14:20
Никто не может скинуть саму либу Spreadsheet/Excel/Reader/ из пакета PEAR? Я так понял они её больше не поддерживают. По крайней мере я не смог найти. Может конечно я идиот.. 

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

Автор: nerezus 16.3.2010, 15:50
Код

<?

header('Content-Type: text/html; charset=windows-1251');
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: no-store, no-cache, must-revalidate');
header('Cache-Control: post-check=0, pre-check=0', FALSE);
header('Pragma: no-cache');
header('Content-transfer-encoding: binary');
header('Content-Disposition: attachment; filename=1.xls');
header('Content-Type: application/x-unknown');

?>
<table>
    <tr>
        <td>жожо</td>
        <td>бебебе</td>
    </tr>
    <tr>
        <td>o_O</td>
        <td>=)</td>
    </tr>
</table>

Автор: sarmano 4.4.2010, 01:42
comtat, не мог бы подсказать по твоему примеру, как сделать вывод через

Цитата

echo $data->dump($row_numbers=false,$col_letters=false,$sheet=0,$table_class='');


Попробовал твой файл все выводит на русском, но в этом примере нет, крякозябры только.
:(

Автор: companerob 6.5.2010, 09:21
sarmano, Там какойто косяк в самой функции dump. Строка 635 в excel_reader2.php -  $val = htmlentities($val); закоменть ее и все работает.

Автор: varona 29.7.2010, 11:56
в программировании полный новичёк, подскажите:
так и не понял, как сделать чтобы кирилица поддерживалась.
и ещё вопрос, можно ли проводить поиск по строкам в полученном html файле

Более подробно:
есть таблица ексель, с позициями прайс листа, необходимо что бы он выводился по клику в меню и по этому прайсу производился поиск.
спасибо.

Автор: boodi 20.10.2010, 14:30
PHPExcell - с кириллицей отлично работает...

Автор: Edka23 12.10.2012, 22:24
Цитата(Zmiuko @ 3.2.2010,  01:25)
Большое спасибо. 

Кстати, у меня php 5.3 и выходили ошибки:

Deprecated: Assigning the return value of new by reference is deprecated in Z:\home\javagrid\www\php-excel-reader-2.21\excel_reader2.php on line 916

Deprecated: Function split() is deprecated in Z:\home\javagrid\www\php-excel-reader-2.21\excel_reader2.php on line 844


Правильно ли я разрешил проблему исправив split() на explode() и изменив в строке 916 $this->_ole =& new OLERead(); =& new на = new ?

Совершенно верно сделано новые версии php отказались от таких функций и такого синтаксиса для создания нового объекта.
Помогите решить проблемы:
1 Как заставить этот скрипт читать не только .xls старых версий оффиса но и новых 2007 -2010 которые сохраняют фаилы с расширение .xlsx они на много меньше весят это экономит трафик и загрузку страници.
2 не могу понять в чем проблема если скачиваю с сайта документ например .xls а потом его редактиру и если нажимать не на сохранить прост, а через сохранить как и там даже если выбрать версию 97-2003 то скрипт не может прочитать документ пишет что докумен такой не сог прочитать The filename price/mano.xls is not readable.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)