Первое с чего хочется начать - это прежде всего для того, чтобы иметь возможность открывать прайс-лист в формате xls онлайн, необходимо его скачать на сайт и распаковать из zip-архива. Поступили следующим образом, создали скрипт на php, который бы скачивал архив в папку один раз в день и распаковывал его.
Скрипт на php самый примитивный:
<? // Скачиваем архив $url = 'http://www.1c.ru/ftp/pub/pricelst/price_1c.zip'; $path = './путь куда распаковываем прайс-лист/price_1c.zip'; file_put_contents($path, file_get_contents($url)); // распаковываем архив в эту же папку на сервере $zip = new ZipArchive; $res = $zip->open($path); if ($res === TRUE) { $zip->extractTo('./путь куда распаковываем прайс-лист/'); $zip->close(); echo 'ok'; } else { echo 'failed'; } ?>
В результате работы данного скрипта получим три файла в папке './путь куда распаковываем прайс-лист/'
- price_1c.zip
- price_1c.xls
Далее заходим на хостинг в административную панель и добавляем в cron новое задание, которое будет раз в день запускать этот скрипт.
В результате работы этого скрипта получим, всегда свежий прайс-лист фирмы 1С (их два, просто они разной структуры, но показывают одно и тоже, сгруппированы по разному), но уже на своем сайте.
Далее, необходимо открывать онлайн в регулярно распакованном архиве прайс-лист. Для этого случая используем онлайн просмотр документов. Я нашел три сервиса, каждый из которых обладает своими преимуществами и недостатками. Все они работают по принципу, просто открываем ссылку с заданным параметром, в котором передаем распакованный архив и запускается просмотр прайса.
Google Docs Viewer
Самый быстрый - это Google Docs Viewer. Но он же и самый простой, он не смог корректно открыть прайс 1С, т.к. в нем используются сгруппированные строки, которые отказались нормально отображаться. Запуск очень прост:
https://docs.google.com/viewer?url=https://softonit.ru/upload/price_1c.xls
Параметры запуска:
- url - что открыть.
- a — тип возвращаемого документа:
- “v” — будет отрыто приложение просмотра документа (это значение по умолчанию);
- “gt” — будет возвращен xml документ с распознанным текстом;
- “bi” — будет возвращено изображение страницы документа в формате PNG8 (параметр pagenumber обязателен);
- pagenumber — номер страницы (только при a=bi), может быть равен только существующей странице в документе;
- w — ширина страницы в px (только при a=bi и указанном параметре pagenumber), минимум 1, максимум 2400 (≈A4x300px/inch), по умолчанию 800 (≈A4x100px/inch);
- q — источник документа в кэш Google Search (замена параметру url);
- embedded — включение/выключение (значения соответственно true или false) встраиваемого в сторонние html-страницы (по умолчанию false); Можно встроить открытие в iframe.
Zoho Viewer
Этот вариант получше. Справился с открытием прайса 1С, все как положено, группировки увидел и их можно открывать.
Работает по ссылке:
https://sheet.zoho.com/sheet/view.do?url=https://softonit.ru/upload/price_1c.xls
- url - ссылка источник, которая будет открыта
- name имя открываемого документа
Office Online
Как ни крути, но самый лучший вариант - это все таки открытие в нативном приложении и/или сервисе.
Работает по ссылке:
https://view.officeapps.live.com/op/view.aspx?src=https://softonit.ru/upload/price_1c.xls
- src - ссылка источник, которая будет открыта
На этом сервисе, мы и остановились. Он работает достаточно быстро и видит группировки.
Надо отметить, что на 100% с заданием никто не справился, на скриншотах видно, что до оригинала не дотягивает никто. Ближе всего Office Online, но и у него проблемы с отображением шрифтов.