Вывести таблицу excel на страницу
Прислано: Loac
ср, 08/04/2009 - 11:20
Не самый элегантный, но зато очень просто способ вывести файл *.xls на страницу сайта.
Реализуется включением в тему пхп-скрипта php-excel-reader.
Шаги не относящиеся к Drupal:
- Скачиваем php-excel-reader;
- В файле excel_reader2.php меняем строку:
<?php $val = htmlentities($val); ?>на
<?php $val = htmlentities($val, ENT_COMPAT, $this->_defaultEncoding); ?>Иначе, могут быть проблемы с кирилицей.
Далее Drupal:
- Подключаем стандартный модуль Upload;
- Создаем тип данных для табличек;
- Создаем файл темизации для нового типа ноды;
- Файл excel_reader2.php кладем в папку с темой;
- В файл темизации добавляем код. Например, после
<?php print $content ?>:<?php
include_once "excel_reader2.php";
$docroot = $_SERVER["DOCUMENT_ROOT"];
foreach($files as $file) {
$data = new Spreadsheet_Excel_Reader($docroot . '/' . $file->filepath, FALSE, "UTF-8");
print $data->dump(TRUE, TRUE, 0);
}
?>
Если сайт лежит не в корне, подправьте путь: «'/'» -
Расскрашиваем по вкусу:
table.excel { border: 1px solid #CCC; border-collapse: collapse; } table.excel thead th, table.excel tbody th { background: #EEE; border: 1px solid #CCC; text-align: center; vertical-align: bottom; } table.excel tbody th { text-align: center; width: 20px; } table.excel tbody td { vertical-align: bottom; } table.excel tbody td { padding: 5px; border: 1px solid #EEE; }
Вот и все. Создаете ноду и прикрепляете *.xls файл.
ЗЫ: Пара слов о параметрах, задаваемых функциям php-excel-reader:
Spreadsheet_Excel_Reader([Путь к файлу]='', [сохранять оформление?]=true, [кодировка на выходе]='') dump([Вывести заголовок строк?]=false, [Вывести заголовок колонок?]=false, [Номер листа]=0, [Присвоить класс таблице]='excel')
| Прикрепленный файл | Размер |
|---|---|
| excel.png | 16.32 кб |
- Loac's blog
- Для комментирования войдите или зарегистрируйтесь
в мемориз
- Для комментирования войдите или зарегистрируйтесь
интересно получилось. модулей таких ещё не придумали?
- Для комментирования войдите или зарегистрируйтесь
распарсить xls интереснее, ИМХО
- Для комментирования войдите или зарегистрируйтесь
интересно получилось. модулей таких ещё не придумали?
Готовый модуль искал, но ничего путного не нашел.
- Для комментирования войдите или зарегистрируйтесь
Было бы хорошо если была возможность работы как в гугл.док!
А эта таблица в виде картинки выходит или хтмл? Как он отобразит таблицу, если в ней несколько листов?
- Для комментирования войдите или зарегистрируйтесь
Таблица будет в виде html.
Отобразит тот лист, который укажешь в параметре dump().
- Для комментирования войдите или зарегистрируйтесь
Я наверное очень тупой, но, подскажите пожалуйста, что означает:
«Создаем файл темизации для нового типа ноды;»
Нужно создать какой-то файл, с каким-то именем в папке с темой? Как он должен называться?
- Для комментирования войдите или зарегистрируйтесь
node-[ВашТипМатериала].tpl.php Лежать должен в папке Вашей темы. делается по аналогии с node-.tpl.php
- Для комментирования войдите или зарегистрируйтесь
отличное решение! спасибо!
- Для комментирования войдите или зарегистрируйтесь
Огромное спасибо! :)
Действительно для многих случаев удачное и простое решение.
Описанно, так же все толково - у меня все заработало с первого раза. :)
Только файл в 1.2 Мб тяжеловато открывало... :)
- Для комментирования войдите или зарегистрируйтесь
в закладки
- Для комментирования войдите или зарегистрируйтесь
человек на 80% состоит из жидкости, а у меня она вообще тормозная...
node-[ВашТипМатериала].tpl.php Лежать должен в папке Вашей темы. делается по аналогии с node-.tpl.php
node-[ВашТипМатериала].tpl.php на этот файл по идее должна быть ссылка, где она ?
далее затык на foreach($files as $file) {
warning: Invalid argument supplied for foreach() in /var/www/user_*******/data/www/мой сайт.ru/themes/ad_novus/page.tpl.php on line 67.
далее: Расскрашиваем по вкусу:
где, в каком файле, какое место ?
кажись все...
P.S. а если эксель с картинками, они будут видны ?
- Для комментирования войдите или зарегистрируйтесь
Я отвечал Chobo по файлу темизации.
Какая ссылка? Это файл в теме вашего сайта.
- Для комментирования войдите или зарегистрируйтесь
большое спасибо =)
оч полезная штука
- Для комментирования войдите или зарегистрируйтесь
в версии php-excel-reader-2.21 во втором шаге переменная $val = htmlentities($val); не окружена <?php ?>, соответственно ищем и заменяем без них(вдруг кто потеряет).
За инструкцию огромное спасибо, уже давно в закладках, но только сейчас проверил.
---
А как сделать перенос по словам в ячейке?
И есть может у кого интересная темизация таблицы(например,зебра для строк, столбцов)?
- Для комментирования войдите или зарегистрируйтесь
Делать dump() не всегда нужно. Можно показывать как обычную таблицу
<?php $data = & new Spreadsheet_Excel_Reader($filename,true,"CP-1251"); $num_row = ($data->rowcount($sheet_index=0)); $num_col = $data->colcount($sheet_index=0); while($i=0; $i <= $num_col; $i++) { $tblheader[] = array('data', $data->val(0,$i,0)); } ?>
точно также разбираем данные например в $tblbody;
<?php $output.= theme_table($tblheader, $tblbody); return $output; ?>
- Для комментирования войдите или зарегистрируйтесь
Чего-то я не врубаюсь, а как убрать нумерацию строк и столбцов ?
- Для комментирования войдите или зарегистрируйтесь
<?php
print $data->dump(FALSE, FALSE, 0);
?>или CSS
table.excel tbody th {
display: none;
}- Для комментирования войдите или зарегистрируйтесь
замечательный хинт, но так и не смог разобраться как спрятать вывод таблицы под "Анонс".
- Для комментирования войдите или зарегистрируйтесь
Добавить условие:
if ($page == 1) { // code... }
Если $page = 1, значит нода загружается полностью. Если 0, то ее тизер.
- Для комментирования войдите или зарегистрируйтесь
>>Создаем тип данных для табличек;
какой тип данных?
- Для комментирования войдите или зарегистрируйтесь
Помогите с CSS!!! Плиз... Не могу понять, почему нет цветового оформления текста, заливки и обрамления ячейки
- Для комментирования войдите или зарегистрируйтесь
в закладки
- Для комментирования войдите или зарегистрируйтесь
По сабжу: http://www.drupal.ru/node/67684
- Для комментирования войдите или зарегистрируйтесь
Большое спасибо. Стояла задача срочно подкачать в базу данные из xls - сработало на Ура!
Кстати с легкостью "втянул" файл размером 20М.
- Для комментирования войдите или зарегистрируйтесь














Комментарии