Последнее обновление: 18.05.2012 в 02:00
Подпишись на RSS
rss Подпишитесь на RSS, чтобы всегда быть в курсе событий.

Комментарии

Присоединяйтесь к обсуждению
  • Denis: Попробуйте обновить кэш
  • porcelanosa: У меня почему-то ничего не появилось — т.е. после применения к странице шаблона — ничего не...
  • Mark Hamstra: I used Google Translate to read this post, and just wanted to add that those issues should have been...
  • безимени: все было бы прекрасно если бы не гигантское количество грамматических ошибок. Серьезно. Глаза режет :(
  • Vasiliy Ivanov: Уже есть рабочий плагин, если готовы заняться — ради бога.=) Напишите только в разработчики...
1 Январь 2010 · Без рубрики

Читайте так же:Снова про книгу о MODxИнтересное наблюдениеС новым годомРазговором с начальством навеянноСамооборона 100%

Bookmark and Share

11 Февраль 2011 · MODx, Проэкты

Некоторое время назад я уже писал про этот сайт. Идеи по поводу улучшения сайта у Геннадия были уже давно, а с выходом новой версии MODx было принято решение полностью переписать сайт на новый движок. Тем более, что был разработан новый дизайн. В сентябре прошлого года начались работы по созданию нового сайта, при этом новую версию [...]

Bookmark and Share

loom-studio на Free-lance.ru
25 Июнь 2011

Отображаем в MODx Evo данные из excell

Раннее, я уже упоминал библиотеку для работы с Excel файлами PHPExcel. Недавно пришлось для нескольких сайтов возможность отображения данных из Excel файла. Далее этот процесс расписан по шагам. Для профессионалов эта статья вероятно не откроет ни чего нового, но вот для тех, у кого есть время только на ответы она может быть полезной

Итак, для начала скачиваем последнюю версию библиотеки и распаковываем её на своем компьютере. Далее на сервере в папке assets создаем новую папку lib и копируем туда папку Classes, из распакованного архива.
Заходим в админку и создаем новый TV-параметр с именем xlsFile, типом File и подключаем его к нужным нам шаблонам, жмем «сохранить».
После этого создаем новый сниппет с именем showXls и следующим содержимым.

<?php
require_once 'assets/lib/Classes/PHPExcel/IOFactory.php';
//получить имя файла с таблицей
$xls=$modx->getTemplateVarOutput(array('xlsFile'),$modx->documentIdentifier);
$xls=$xls['xlsFile'];
//имя файла с  таблицей в формате html
$htm=str_replace('.xlsx','.htm',$xls);
//читаем данные из xlsx файла
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($xls);
// и записываем их в html
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');
$objWriter->setSheetIndex(0);
$objWriter->save(str_replace('.xlsx', '.htm', $xls));
// получаем данные из html файла
$table=file_get_contents($htm);
// получаем и обрабатываем таблицу стилей
$style=preg_match('|(<style [^>]+>[^<]+<\/style>)|',$table,$matches);
$style=str_replace(array('display:none;','visibility:hidden','*display:none','visibility:collapse;'),'',$matches[1]);
echo $style;
//получаем собственно ваму таблицу и выводим её
$output=substr($table,strpos($table,'<body>'),strpos($table,'</body>')-strpos($table,'<body>'));
$output=str_replace('border="0" cellpadding="0" cellspacing="0"','border="1" cellpadding="1" cellspacing="1"',$output);
//$header=$modx->getObject('modChunk',array('name'=>'tableHeader'));
echo $output;
?>

Сохраняем сниппет, и в шаблоне или в поле content документа в месте, где должна находиться таблица вставлем вызов.
[!showXls!].
Идем во фронтенд и смотрим на результаты.
Несколько замечаний.
1) В данном примере, файл используемый для отображения должен быть сохранен в формате MS Excel 2007 XML
2) после редактирования xlsx файла и сохранения в нем оказывается 256 строк и 256 столбцов в не зависимости от того сколько ячеек заполнено в действительности. По этому редактируйте xls файл и сохраняйте как xlsx(по крайней мере если используете LibreOffice).
Конечно у данног решения полно недостатков и всё можно написать по другому. По этому жду ваших отзывов, комментариев и предложений

Bookmark and Share

Читайте так же:



  • Eagel_nest

    Parse error: syntax error, unexpected T_STRING in wwwmanagerincludesdocument.parser.class.inc.php(814) : eval()’d code on line 21
    Помогите разобраться!)

    • http://loom-studio.net Denis

      Вопрос, ошибка в моем коде или у вас проблемы с установкой, если у вас скиньте, как вы подключаете сниппет на адрес loomst на gmail.com

    • http://loom-studio.net Denis

      Извиняюсь, это был мой косяк забыл закоментировать строчку.

  • http://www.blod.topsector.ru/ Виктор Черкасов

    не дошло до меня, куда файл Excel ложить и как его отобразить или сослаться на него

    • http://loom-studio.net Denis

      Для привязки и отображения файла используется переменная xlsFile при создании или редактировании документа укажите в ней какой файл надо отображать

  • Eagle_nest

    background-color:white — можно ли убрать это правило в выводимых результатах?

Мы плетем паутину
Создание сайтов для меня это не просто работа, это то, что больше всего мне нравится в этой жизни. Я постояно учусь новому и кое-что попадает на страницы этого блога. Сюда же я выкладываю свои мысли о жизни. Заходите, читайте, спрашивайте. Или пишите на loomst[at]gmail[dot]com

Twitter

Наш микроблог на Twitter

Рубрики

Поиск информации по категориям

Счетчик

Статистика сайта
Яндекс.Метрика