Вывести таблицу 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($valENT_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->filepathFALSE"UTF-8");
            print  
    $data->dump(TRUETRUE0);  
          }
    ?>

    Если сайт лежит не в корне, подправьте путь: «'/'»

  • Расскрашиваем по вкусу:
    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.png16.32 кб

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано batbug в ср, 08/04/2009 - 11:43.

в мемориз


Опубликовано sadmin в ср, 08/04/2009 - 12:27.

интересно получилось. модулей таких ещё не придумали?


Опубликовано beerman в ср, 08/04/2009 - 13:52.

распарсить xls интереснее, ИМХО


Опубликовано Loac в чт, 09/04/2009 - 05:18.

sadmin написал(а):

интересно получилось. модулей таких ещё не придумали?

Готовый модуль искал, но ничего путного не нашел.


Опубликовано Freedom в ср, 01/07/2009 - 17:54.

Было бы хорошо если была возможность работы как в гугл.док!
А эта таблица в виде картинки выходит или хтмл? Как он отобразит таблицу, если в ней несколько листов?


Опубликовано Loac в ср, 01/07/2009 - 19:02.

Таблица будет в виде html.

Отобразит тот лист, который укажешь в параметре dump().


Опубликовано Chobo в пт, 31/07/2009 - 19:51.

Я наверное очень тупой, но, подскажите пожалуйста, что означает:

«Создаем файл темизации для нового типа ноды;»

Нужно создать какой-то файл, с каким-то именем в папке с темой? Как он должен называться?


Опубликовано HIgor1968 в пн, 03/08/2009 - 11:18.

node-[ВашТипМатериала].tpl.php Лежать должен в папке Вашей темы. делается по аналогии с node-.tpl.php


Опубликовано DennisVV в ср, 19/08/2009 - 08:44.

отличное решение! спасибо!


Опубликовано kodo в пт, 23/10/2009 - 08:49.

Огромное спасибо! :)
Действительно для многих случаев удачное и простое решение.
Описанно, так же все толково - у меня все заработало с первого раза. :)
Только файл в 1.2 Мб тяжеловато открывало... :)


Опубликовано НовичОК в ср, 23/12/2009 - 18:17.

в закладки


Опубликовано lorgus в ср, 17/02/2010 - 09:15.

человек на 80% состоит из жидкости, а у меня она вообще тормозная...

HIgor1968 написал(а):

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. а если эксель с картинками, они будут видны ?


Опубликовано HIgor1968 в чт, 18/02/2010 - 11:12.

Я отвечал Chobo по файлу темизации.
Какая ссылка? Это файл в теме вашего сайта.


Опубликовано Dmitry Loki в пн, 08/03/2010 - 09:42.

большое спасибо =)
оч полезная штука


Опубликовано P.Selfin@drupal.org в пт, 02/07/2010 - 12:07.

в версии php-excel-reader-2.21 во втором шаге переменная $val = htmlentities($val); не окружена <?php ?>, соответственно ищем и заменяем без них(вдруг кто потеряет).
За инструкцию огромное спасибо, уже давно в закладках, но только сейчас проверил.
---
А как сделать перенос по словам в ячейке?
И есть может у кого интересная темизация таблицы(например,зебра для строк, столбцов)?


Опубликовано return в пт, 02/07/2010 - 20:46.

Делать 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;
?>


Опубликовано vitich в пт, 17/09/2010 - 12:58.

Чего-то я не врубаюсь, а как убрать нумерацию строк и столбцов ?


Опубликовано Loac в вс, 03/10/2010 - 07:16.

<?php
print  $data->dump(FALSEFALSE0);
?>

или CSS

table.excel tbody th {
  display: none;
}


Опубликовано toxxxa в вс, 07/11/2010 - 18:24.

замечательный хинт, но так и не смог разобраться как спрятать вывод таблицы под "Анонс".


Опубликовано Loac в пн, 08/11/2010 - 13:23.

Добавить условие:

if ($page == 1) {
  // code...
}

Если $page = 1, значит нода загружается полностью. Если 0, то ее тизер.


Опубликовано dplz в сб, 12/02/2011 - 15:23.

>>Создаем тип данных для табличек;
какой тип данных?


Опубликовано kisa_wp в вт, 22/02/2011 - 10:20.

Помогите с CSS!!! Плиз... Не могу понять, почему нет цветового оформления текста, заливки и обрамления ячейки


Опубликовано Jonny в ср, 16/03/2011 - 15:20.

в закладки


Опубликовано mail_ru@drupal.org в пн, 29/08/2011 - 06:38.

По сабжу: http://www.drupal.ru/node/67684


Опубликовано mralek в пт, 04/11/2011 - 08:00.

Большое спасибо. Стояла задача срочно подкачать в базу данные из xls - сработало на Ура!
Кстати с легкостью "втянул" файл размером 20М.


Ссылки партнёров