Как да чета/запиша както xlsx, така и xls файлове в Python?

Имам уеб приложение (базирано на Django 1.5), в което потребителят качва файл с електронна таблица.

Използвах xlrd за манипулиране на xls файлове и разгледах openpyxl, който твърди, че поддържа xlsx/xlsm файлове.

И така, има ли общ начин за четене/запис на xls и xlsx файлове?

Друг вариант може да бъде да конвертирате качения файл в xls и да използвате xlrd. За това разгледах gnumeric и ssconvert, това би било благоприятно, тъй като целият ми съществуващ код е написан с помощта на xlrd и няма да се налага да променям съществуващата кодова база.

Така че трябва ли да сменя библиотеката, която използвам, или да използвам решението за преобразуване?

Благодаря предварително.


person aliasav    schedule 22.06.2015    source източник
comment
Проверете дали xlwing отговаря на вашата цел. (xlwings.org)   -  person Ajit Vaze    schedule 22.06.2015


Отговори (1)


xlrd може да чете както xlsx, така и xls файлове, така че вероятно е най-лесно да го използвате. Поддръжката за xlsx не е толкова широка, колкото openpyxl, но трябва да е достатъчна.

Има риск от загуба на информация при конвертирането на xlsx в xls, тъй като xlsx файловете могат да бъдат много по-големи.

person Charlie Clark    schedule 22.06.2015
comment
Когато използвах xlrd, за да анализирам моите xlsx файлове, той хвърли грешка в твърдението, което по същество изключва xlrd. - person aliasav; 22.06.2015
comment
Не знам много за xlrd. Може да успеете да заобиколите грешката при твърдението, ако стартирате Python в оптимизиран режим. Може да искате да изпратите грешка. въпреки че заявка за изтегляне би била по-добра. Можете да опитате да стартирате файловете през отворен OpenOffice, за да ги нормализирате в единия или другия формат. В противен случай вероятно ще трябва да използвате и двете библиотеки. API са сходни, но се различават в някои важни области: по-специално, че openpyxl използва 1-индексиране. - person Charlie Clark; 22.06.2015
comment
Оказва се, че openpyxl не е съвместим с xls файлове, предполагам, че преобразуването е най-добрият ми залог за момента, все пак някой ден ще трябва да пренеса кода xlrd към openpyxl. - person aliasav; 22.06.2015
comment
openpyxl никога не е бил и вероятно никога няма да бъде съвместим с xls файлове. - person Charlie Clark; 22.06.2015
comment
Използвам xlrd, за да анализирам както .xls, така и .xlsx през цялото време. Ако получавате грешка, трябва да поискате помощ в пощенския списък и да предоставите пълното проследяване. - person John Y; 30.06.2015