Существует ли библиотека для работы с файлами Excel .xlsb (BIFF12) без (медленного) COM API (Interop)? - PullRequest
4 голосов
/ 10 марта 2012

В Интернете я обнаружил множество библиотек для работы с файлами Excel 2007/2010, некоторые из которых не зависят от COM-интерфейса MS Office. Некоторые бесплатно, некоторые за (много) денег. Большинство, если не все, поддерживают старый двоичный формат .xls (Excel 97-2003 BIFF8), а также недвоичный Office Open XML .xlsx, но .xlsx загружается в 4 раза дольше [1] , чем .xlsb и .xls поддерживает только 256 столбцов.


[1] .xlsx также сохраняет в 2 раза медленнее, чем .xlsb. Я проверил это на сгенерированном рабочем листе с 10 000 строк * 1 000 столбцов = 10 000 000 (10 ^ 7) ячеек простых цепочек =…+1 формул:

╭─────────────╥────────┬────────╮
│              ║ .xlsx  │ .xlsb  │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s   │  43s   │
├──────────────╫────────┼────────┤
│ saving time  ║ 115s   │  61s   │
├──────────────╫────────┼────────┤
│ file size    ║  91 MB │  65 MB │
╰─────────────╨────────┴────────╯

Тест был выполнен на компьютере под управлением Windows 7 с процессором Core2Duo 2,3 ГГц, 4 ГБ ОЗУ и жестким диском SATA II со скоростью 5400 об / мин; компьютер был несколько загружен другими процессами.

Ответы [ 3 ]

1 голос
/ 25 июня 2014

Если вы предпочитаете использовать библиотеку Java, я предлагаю использовать Aspose.Cell .Но вы должны заплатить от $ 999.

Другая альтернатива - использовать утилиту командной строки libreoffice , для чтения файла xlsb вы должны сначала преобразовать ее в csv.Из терминала:

libreoffice --headless --convert-to csv your_csv_file.csv --outdir /path/csv

А для конвертирования кодировки с использованием UTF-8:

iconv -f ISO-8859-1 -t UTF-8 your_csv_file.csv > new_file_csv.csv

это было наилучшее решение, которое я нашел до сих пор, если вы не можете вызвать встроенную функцию Microsoft Office для обработкиФайл XLSB.

0 голосов
/ 12 марта 2012

Текущие стабильные версии LibreOffice (3.5.0) и OpenOffice.org (3.2.0) могут читать .xlsb, , но не записывать it.

(так что мне это не поможет, но) если кому-то нужен бесплатный модуль для чтения .xlsb и у него есть какое-то время, он может попробовать те, что в этих Open Source проектах ' хранилища.

Можно также проверить другие проекты пакета FOSS Office на предмет того, реализовали ли они что-то подобное. Если вы это сделаете, пожалуйста, опубликуйте результаты здесь.

0 голосов
/ 12 марта 2012

Aspose.Cells имеет добавлена ​​ поддержка .xlsb, но, вероятно, не (пока) полный набор функций.

IЯ почти уверен (по нескольким причинам), что они не используют COM.

Aspose.Cells стоит 1000 $ и выше.Бесплатные пробные версии доступны .

Есть альтернативы?

...