Как [Перевод] Рубин доступа к файлам Excel

Разбор файлов Excel с Рубином

 BY: MATT NEDRICH    перевод: Helper 7001   

    В этой статье я буду судить на нескольких языках библиотеки доступа к файлам на 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-- может слишком много. Когда я изучал эти различные библиотеки, действительно потратили много времени, чтобы выяснить их функции и ограничения. Я нашел следующие вопросы полезные для библиотеки для исследования:

  1. Что Excel Поддержка файлов формата?
  2. Поддержка чтения или записи, или чтения и записи поддерживаются?
  3. Я могу поддерживать большие файлы? Быстро?
  4. Должен ли я прочитать файл? Вы можете поддерживать потоковый режим?

В зависимости от применения, эти проблемы несколько или все может быть очень важным.

Выберите соответствующую библиотеку

В следующей таблице приведены шесть различных функций Рубин 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文件提供些许地指引。如果你正在使用一种我没有提到的库,并且你很喜欢它,请务必告知我。

рекомендация

отwww.cnblogs.com/dajianshi/p/11613060.html
рекомендация