Найти - Пользователи
Полная версия: Работа с файлами xls (Excel) - какие библиотеки изучать?
Начало » Python для новичков » Работа с файлами xls (Excel) - какие библиотеки изучать?
1 2
JOHN_16
Если нужны только данные, т.е. содержание ячеек, то можно обойтись малой кровью
import pyexcel
import pyexcel.ext.xls
all_data = pyexcel.get_records(file_name='file.xls')
Полученная all_data это список словарей - оч просто работается с таким представлеием данных. С сохранением в новый xls файл также проблем не должно возникнуть, см. документацию.
cf4
Добрый день.
При использовании xlwt возникли проблемы: при записи в файл xls сбиваются строки, файл записывается с ошибками, появляются какие-то нечитаемые символы.
Если просто для теста записываю следующее, то никаких ошибок не возникает. Все сохраняется и отображается корректно:
from xlwt import *
wb=Workbook()
ws=wb.add_sheet('new')
i=0
for row in range(100):
    i+=1
    ws.write(i,0,row)
wb.save('new.xls')

Но когда я начинаю писать в xls данные из базы данных, начинаются вышеописанные проблемы.
Уже пробовал приводить все получаемые из БД значения к типу string, обрезать возможные пробельные символы и символы перевода строки методом strip(). Но результат от этого не меняется.

Еще столкнулся с проблемой записи в xls при помощи модуля xlwt значений типа timedelta.

Кстати, пробовал юзать модуль pyexcel, проблема от того не решилась.
В какую сторону можно копнуть? А то уже голову себе поломал.
4kpt_III
Вы должны определить в каких данных возникают ошибки. Без этого никак не получится найти корень “вселенского зла”.
doza_and
Могу посоветовать посмотреть пакет pandas. Он позволяет проводить экспорт в xls
cf4
Вы должны определить в каких данных возникают ошибки. Без этого никак не получится найти корень “вселенского зла”.
Однозначно знаю, что при записи в xls списка, содержащего переменные типа timedelta, возникают такие ошибки. Но как увидел позже на stackoverflow, модуль xlwt некорректно работает с объектами типа timedelta.
После этого пробовал из свойства seconds объекта timedelta вычислить часы, минуты и секунды в виде простых целочисленных переменных. При записи все равно коряво отображается в xls.
Иногда и при экспорте простых строковых переменных, типа ФИО, типа datetime или time, могут возникать такие ошибки.

Могу посоветовать посмотреть пакет pandas. Он позволяет проводить экспорт в xls
Пролистал документацию, но что-то ничего не увидел про экспорт в excel.


И что самое интересное и странное одновременно, эта корявость не постоянна, иногда бывает экспорт проходит без ошибок и все отображается корректно.
4kpt_III
cf4
Именно из-за этих косяков я пересел на XlsxWriter…
boligolov
cf4
Попробуйте библиотеку xlwings.
cf4
4kpt_III
Спасибо огромное за рекомендацию! Поставил XlsxWriter, заменил в строке импорта старый модуль на новый и даже код толком править не пришлось.
С необходимыми мне типами работает на ура! Отображается все корректно. +Большие возможности по форматированию содержимого.
В общем оч счастлив )

P.S. Жаль, что раньше не наткнулся на эту библиотеку, хотя вроде столько всего разного по этой теме пересмотрел. Сэкономил бы себе огромное количество нервов и времени…

boligolov
Спасибо за рекомендацию, пока буду пользоваться вышеописанной библиотекой, всем устраивает, да и методы и свойства все знакомые.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB