Продолжаем рассказывать о технологиях, используемых на нашем сервис email-маркетинга Pechkin-mail.ru .
Одной из ключевых задач любого сервиса, связанного с данными клиентов, является загрузка этих данных в сервис.
Для Печкина очень важно быстро и легко загружать адресные базы, содержащие адреса электронной почты, имена, фамилии и другие дополнительные данные для пользователя.
Что использовать в качестве инструмента?
В качестве базового стандарта, используемого при импорте адресных баз, мы взяли Microsoft Excel. Это объясняется просто:- это стандартный инструмент, который знают 100% пользователей компьютеров на базовом уровне.
Более того, в бизнесе это де-факто корпоративный стандарт и используется даже на рабочих компьютерах Mac или Linux.
- Практически все CRM, CMS, облачные или десктопные системы имеют экспорт в Excel или CSV, который путем простого пересохранения конвертируется в формат XLS или XLSX.
- Также известно, что «90% ошибок программного обеспечения расположены в полуметре от монитора».
Не в обиду обычным пользователям, но надо учитывать самый базовый уровень обучения и технической поддержки.
Для поддержки объяснения достаточно сказать «Скачать файл Excel», а не объяснить процедуру подготовки файла в необходимом формате.
Но здесь возникает сама проблема развития.
Наша боль как разработчиков
Эксель - это не опенсорсная разработка, а собственное решение.Формат данных, особенно в новых версиях после 2007 года (xlsx), нетривиален.
Печкин использует PHP, поэтому мы начали поиск библиотек, которые позволят решить эту проблему.
Но тут мы столкнулись с проблемой, что ряд библиотек не позволяют читать xlsx:
- php-читатель таблиц читает различные форматы (.
xls, .
ods И .
csv)
- PHP-ExcelReader (только xls)
- PHP_Excel_Reader (только xls)
- PHP_Excel_Reader2 (только xls)
- Программа чтения файлов XLS Только реклама и xls
- ПростойXLSX Судя по описанию умеет читать xlsx, однако автор ссылается только на xls
- PHP Excel Explorer Только коммерческие и xls
Мы использовали его несколько лет назад в Сервис смс-рассылок SMS24X7.ru .
Петя Соколов ( Петр_Соколов ), наш талантливый разработчик, написал обертку для этой библиотеки, исправляющую ряд ее недостатков и ошибок.
Библиотека, безусловно, интересная и развитая.
Но для Печкина использовать его стало невозможно спустя пару лет, когда и мы, и наши клиенты подросли — его катастрофические требования к ресурсам и колоссальные затраты времени на парсинг файлов.
Например, нередки случаи загрузки на сервис адресных баз > 100 000 строк со сложной структурой.
Что делать, если файл уже 500 000 строк и «весит» более 30 МБ?
А потом нас отпустили.
В поисках мы наткнулись на коммерческую библиотеку libxl после просмотра Результаты «ремесленный тест» на Stackoverflow. Библиотека написана на C++ и благодаря отличному объектно-ориентированному расширению для PHP от Илья Альшанецкий , прост в освоении и интеграции (например, переписывание нашего текущего решения с PHPExcel на LibXL заняло около 3 часов).
Что очень здорово, учитывая, что документации от разработчика расширения, к сожалению, нет и нужно использовать расширение Reflection. Процесс установки очень прост.
В результате компиляции вы получите файл excel.so в папке /usr/lib/php5/20090626/.cd /usr/local/src/ wget http://libxl.com/download/libxl.tar.gz tar zxfv libxl.tar.gz cd libxl-3.5.4.1/ ln -s include_c include cd .
/ wget https://github.com/iliaal/php_excel/archive/master.zip unzip master.zip cd php_excel-master/ .
/configure --with-excel --with-libxl-libdir=.
/libxl-3.5.4.1/lib64 --with-libxl-incdir=.
/libxl-3.5.4.1/include_c make make test make install
Теперь достаточно создать файл /etc/php5/conf.d/excel.ini с содержимым.
extension=excel.so
Проверим, установлен ли модуль, и перезапустим веб-сервер.
php -m | grep excel
service lighttpd restart
В коде тоже все очень просто.
Загрузите файл и прочитайте необходимые ячейки.
Например, вот так: $doc = new ExcelBook();
$doc->loadFile(‘example.xls’);
for($r=$sheet->firstRow();$r<=$sheet->lastRow();$r++){
Теги: #Электронный маркетинг #импорт из Excel #Excel #php #php_excel #libxl #информационная рассылка по электронной почте #php
-
Интернет-Маркетинг Полон Проблем И Наград
19 Oct, 24 -
Особенности Erp – Краткий Обзор
19 Oct, 24 -
Три Женщины Реактивные Расширения
19 Oct, 24 -
Google Обновил Календарь
19 Oct, 24 -
Замена Java На Scala. Базовое Приложение
19 Oct, 24