Tag Archives: Excel

Дизайн интерьеров

Конвертирование .xls в .csv в Linux

Для того, чтобы сконвертировать .xls в .csv, прибегнем к помощи утилиты xls2csv, установить которую в CentOS Linux можно, выполнив в командной строке следующую команду:

После успешной установки xls2csv, попробуем конвертировать наш файл .xls в .csv, для дальнейшего разбора данных. Для конвертации выполним команду:

Как вы уже наверное догадались, file.xls — это исходный файл в формате Excel, а file.csv — это полученный файл в результате конвертации.

После выполнения последней команды, вы сможете получить все данные, присутствующие в файле file.xls, в файле .csv, согласно формату csv (данные разделенные запятой).

 

P.S. Данная утилита с некоторых пор стал входить в пакет catdoc. Поэтому, чтоб установить, теперь нужно выполнить команду:

 


Источник: http://www.ithowto.ru/329-konvertirovanie-xls-v-csv-v-linux.html

Дизайн интерьеров

Реализация быстрого импорта из Excel на PHP

Мы продолжаем рассказывать о технологиях, используемых на нашем сервисе email-маркетинга Pechkin-mail.ru. Одной из ключевых задач любого сервиса, связанного с данными клиентов, является загрузка этих данных на сервис. Для Печкина очень важно быстро и без проблем для пользователя загружать адресные базы, содержащие email-адреса, имена, фамилии и другие дополнительные данные.

то использовать в качестве инструмента?

В качестве базового стандарта, используемого при импорте адресных баз, мы взяли Microsoft Excel. Объясняется это просто:

  • это стандартный инструмент, которым на базовом уровне владеют 100% пользователей компьютеров. Более того, в бизнесе — это де-факто корпоративный стандарт и используется даже, если на рабочих компьютерах Mac или Linux.
  • Практически все CRM-, CMS-, облачные или десктопные системы имеют экспорт в Excel или CSV, который простым пересохранением приводится к формату XLS или XLSX.
  • Известно также, что “90% ошибок ПО сидит в полуметре от монитора”. Не в обиду будет сказано рядовым пользователям, но мы должны учитывать самый базовый уровень подготовки и тех. поддержке для объяснения достаточно сказать “Загрузите Excel-файл”, а не объяснять процедуру подготовки файла в нужном формате.

Проблему пользователей при импорте адресных баз сняли. Но тут возникает уже проблема непосредственно разработки.

Наша боль, как разработчиков

Excel — это не open-source разработка, а проприетарное решение. Формат данных, особенно в новых версиях после 2007 года (xlsx), нетривиален. На Печкине используется PHP, поэтому мы начали поиск библиотек, которые позволят нам решить данную задачу. Но тут столкнулись с проблемой, что целый ряд библиотек, не позволяют читать xlsx:

  • php-spreadsheetreader reads a variety of formats (.xls, .ods AND .csv)
  • PHP-ExcelReader (xls only)
  • PHP_Excel_Reader (xls only)
  • PHP_Excel_Reader2 (xls only)
  • XLS File Reader Коммерческая и xls only
  • SimpleXLSX Из описания способен читать xlsx, однако, автор ссылается только на xls
  • PHP Excel Explorer Коммерческая и xls only

Обратила на себя наше внимание библиотека PHPExcel. Ее мы использовали еще несколько лет назад в сервисе sms-рассылок SMS24X7.ru. Петя Соколов (Petr_Sokolov), наш талантливый разработчик, написал обертку для этой библиотеки, исправляющую ряд ее недостатков и багов.

Библиотека, безусловно, интересная и развитая. Но для Печкина ее использовать стало невозможно уже через пару лет, когда выросли и мы и наши клиенты — ее катастрофическая требовательность к ресурсам и огромное время парсинга файлов. Например, нередки случаи загрузки на сервис адресных баз > 100 000 строк со сложной структурой. А если файл уже 500 000 строк и “весит” больше 30Мб?

И тут нас отпустило…

В процессе поисков мы наткнулись на коммерческую библиотеку libxl, увидев результаты “кустарного benchmark” на Stackoverflow.

Библиотека написана на C++, а благодаря великолепному объектно-ориентированному расширению для PHP от Ilia Alshanetsky, легка в освоении и интеграции (например, переписать наше текущее решение с PHPExcel на LibXL заняло около 3 часов). Что очень классно, учитывая, что, к сожалению, документации от разработчика расширения нет и необходимо пользоваться расширением Reflection.

Процесс установки очень прост.

В результате компиляции вы получите файл excel.so в папке /usr/lib/php5/20090626/. Теперь достаточно создать файл /etc/php5/conf.d/excel.ini с содержимым.

Проверим установился ли модуль и перезагрузим веб-сервер.

В коде все тоже очень просто. Подгружаете файл и читаете необходимые ячейки. Например, вот так:

 

Полученные результаты производительности

Отсутствие потребности в оперативной памяти (в процессе загрузки файла и его чтения) приятно порадовало.

06cbbe1e4598038cb5b16350059aa079 А вот и прирост скорости загрузки excel-файла и его чтения на различных размерах адресных баз.

c549159dbbee487c12bef0eb5eaa0ae0Данные тесты проводились на xlsx-файлах с N подписчиками в один стоблец с email. Реальные же адресные базы еще больше и сложнее и преимущество в скорости и потреблении памяти выглядит еще значительнее.

Стоимость библиотеки 199$ за девелоперскую лицензию, но, поверьте, это того стоит. Безусловно рекомендуем всем, кто сталкивается с проблемой импорта Excel-файлов на свой сервис.


Источник: http://habrahabr.ru/company/pechkin/blog/224207/

Разработка и создание сайтов, интернет-магазинов, веб-приложений, порталов, лэндингов, мобильных приложений (Киев)

3D визуализация и дизайн

Скрипт для Excel для переноса информации из Depoer в Oberone

Автор: Рудюк С . А.
https://corp2.net

E-Mail: rs@corp2.net

С некоторых пор, все счета открытые в Depoer должны быть перенесены в Oberone. Для этого, предназначена программка Undepoer, которая частично формирует Excel-файл на основании базы данных Depoer.
Пользователям приходится для того, чтоб корректно перенести информацию вручную добавлять строчку, вносить управляющую компанию ценными бумагами, а уже после этого — закачивать информацию. Все было бы хорошо, если бы счетов (строк в Excel-файле) было не много, но обычно это много-много тысяч… Понятное дело, в момент таких действий пользователь может допустить механическую ошибку, чем свести свои старания на нет. Не говоря уже о том, что тратится огромное количество времени…

Для того, чтоб облегчить жизнь пользователя, мы разработали макрос, который выполняет такую работу:
— Добавляет строку для каждого счета.
— Заполняет информацию о управляющем бумагами.

Текст данного макроса:

Sub Макрос1()
Rows(«3:3»).Select

NumRows = 2495
NumRows = NumRows*2 

For x = 2 To NumRows+1

If (x Mod 2) = 0 Then
  ActiveCell.Rows.EntireRow.Select
  Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
End If

If (x Mod 2) = 0 Then
Cells(x+1, 1).FormulaR1C1 = «Тут заполняем информацию в 1-й ячейке»
Cells(x+1, 2).FormulaR1C1 = «Заполняем код компании»
Cells(x+1, 3).FormulaR1C1 = «Заполняем название компании»
Cells(x+1, 4).FormulaR1C1 = «Заполняем название компании«
End If
ActiveCell.Offset(1, 0).Select

Next

End Sub

Автор: Рудюк С . А. https://corp2.net