Разбор файлов Excel с Рубином
В этой статье я буду судить на нескольких языках библиотеки доступа к файлам на Ruby Excel. Я буду обсуждать несколько существующих библиотек Ruby, для доступа к файлам Excel в различных форматах. Эта статья сосредотачивается больше на чтение файлов Excel, но и с изменениями / записи файлов Excel немного больше обсуждения.
Если вы не можете ждать , чтобы увидеть код, перенесите на моем Github представить проект , проект имеет некоторые фрагменты кода для чтения файлов Excel, которые упомянуты в этой статье.
Типы файлов Excel
Перед тем, как попасть в различные библиотеки Ruby, но давайте поговорим о файлах Excel. Важно определить тип файлов Excel, которые вы собираетесь использовать. Есть два основных типа: устаревшие файлы и новый формат OOXML файл введен в Microsoft Office 2007.
Существует хорошее описание различий в Википедии. Tldr; версия о том , что формат файла наследие включает в себя файлы со следующими расширениями:
Расширение имени файла | объяснение |
---|---|
.xls | Традиционный формат файла Excel |
.xlt | Шаблон Excel традиционный формат |
.xlm | Формат файла Excel с традиционным кодом макроса |
Microsoft Excel 2007 отказался от унаследованного двоичного формата и переключился на Open Office XML формат (OOXML) , который используется сегодня. Эти файлы используют следующие расширения:
Расширение имени файла | объяснение |
---|---|
.xlsx | Файл OOXML Excel |
.xlst | Шаблон файла OOXML Excel |
.xlsm | OOXML Excel файл с макросами |
Определите , какой формат файла Excel (традиционный формат или формат OOOXML) очень важно , что вы будете участвовать. Если вы используете программное обеспечение работы Excel часто может превратить идти между различными форматами, но в моем случае файл Excel получен из внешнего формата файла и не может контролировать, но я не хочу полагаться на ручной формат преобразование. И нет никакой необходимости, современный формат .xlsx обычно не может использовать другое программное обеспечение для доступа к электронной таблице, например: а нумерует и LibreOffice .
библиотека Excel в Рубине
Есть много рубина библиотеки для доступа к Excel-- может слишком много. Когда я изучал эти различные библиотеки, действительно потратили много времени, чтобы выяснить их функции и ограничения. Я нашел следующие вопросы полезные для библиотеки для исследования:
- Что Excel Поддержка файлов формата?
- Поддержка чтения или записи, или чтения и записи поддерживаются?
- Я могу поддерживать большие файлы? Быстро?
- Должен ли я прочитать файл? Вы можете поддерживать потоковый режим?
В зависимости от применения, эти проблемы несколько или все может быть очень важным.
Выберите соответствующую библиотеку
В следующей таблице приведены шесть различных функций Рубин Excel для доступа к библиотеке:
кладезь | разрешение | 支持.xlsx |
支持.xls |
способность |
---|---|---|---|---|
axlsx | С | да | нет | записывать |
rubyXL | С | да | нет | читай пиши |
РОО | С | да | да | читать |
ручей | С | да | нет | читать |
таблица | GPLv3 | нет | да | читай пиши |
simple_xlsx_reader | С | да | нет | читать |
Исходя из ваших потребностей, из которых один или несколько библиотек, могут быть в состоянии помочь. Рассмотрим следующие сценарии использования:
Написать .xlsx файл
Если вам нужно написать axslx является хорошим выбором . Он поддерживает написать значение ячейки , генерируемые диаграммы. Если вам нужна легкая библиотека, rubyXL является хорошим вариантом. .xlsx文件,
Читать .xlsx файл
Если вам просто нужно прочитать файл, вы можете rubyXL, Роо, Крик и выбрать среди simple_xlsx_reader. ИЙ является очень популярным выбором, потому что он также поддерживает традиционный ручей и simple_xlsx_reader явно более искусный в обработке больших файлов. Если вы хотите от чтения потока данных (а не файл), rubyXL стал единственным выбором. .xlsx
.xls格式。然而,如果你关注速度,
IO
.Xlsx файл читать и писать
Если вам нужно читать и писать .xlsx
файлы, у вас есть два варианта. Вы можете использовать rubyXL, он поддерживает чтение и запись. Другой вариант заключается в том , что вы можете использовать две различные библиотеки, один для чтения, другой для записи .
Чтение и запись файлов Excel традиции
Для того, чтобы поддержать традиционный .xls
формат будет иметь больше ограничений. Если вам нужно только поддерживать традиционную таблицу, она поддерживает чтение и запись. Если нужна поддержка вы можете выбрать Ий , как поддержку чтения традиционного формата также поддерживает современные форматы. .xls,我推荐
.xlsx格式,我更推荐选择第二个gem来做此事......除非你仅仅需要读取功能,这样的话
Хорошая новость заключается в том , в конечном счете ли вы выбрать вид библиотеки, откройте файл и читать код очень прост, и использовать различные библиотеки выглядят очень похожи. Например, здесь является использование ручья коды.
требуется 'Крик' Учебное пособие = Крик :: Book.new 'путь / к / file.xlsx' рабочих листов = workbook.sheets worksheets.each делать | лист | worksheet.rows.each сделать | ряд | row_cells = row.values # сделать что - то с row_cells конца конца
Я представить проект на GitHub, есть пример кода использует библиотеку для чтения .xlsx каждого.
производительность
Если вам нужно прочитать огромное количество данных в файлах Excel, вы можете сравнить производительность соответствующей библиотеки. Я быстро установил несколько грязной программу тестирования производительности коды, апробированную в таблице выше четырех видов можно прочитать . .xlsx格式的库
Я создал образец .xlsx文件,分别含有
500,10000,50000,200000 и 500000 строк данных. Затем я запускаю код для чтения каждого файла (т.е. читать каждую строку в файле данных). Различные библиотеки Каждый образец файла для чтения код может быть повторно здесь получены.
Я прочитал каждую отдельную библиотеку файлы запускаются три раза, записывая среднее время (за изменения времени прохода не велико).
rubyXL 和 roo性能大体相当, 读取500000行的Excel文件需要2分多钟。 creek 和simple_xlsx_reader 则都快的多了,只需要不足一分钟就能读取 500000行的Excel文件。
我希望本文能为你使用Ruby语言访问Excel文件提供些许地指引。如果你正在使用一种我没有提到的库,并且你很喜欢它,请务必告知我。