Pull to refresh

Comments 57

выступлю в роли грамарнаци.
«Обрабываем Excel файлы, используя Python» или «Обработка Excel файлов с использованием Python»
Благодарю за подсказку — исправил.
еще хорошо бы сделать подсветку кода. есть известный на хабре syntax highlighter, есть мой paste.ly
Спасибо за сервис.
Так пост смотрится значительно лучше.
Спасибо, пригодилось — только что поставили мне такую задачу — чтение и запись Excel файлов.
Вам была поставлена задача сделать это именно питоном?
ИМХО с помощью ВБА это все делается быстрее, легче и правильнее.
У меня стояла задача работать с excel файлами под ОС FreeBSD.
Это кусочек серверной части.
ИМХО использовать VB* хоть для чего-то само по себе извращение, какое поискать ещё надо.
Для макросов в офисе и .vbs скриптов — вполне.
Хм, сомнительное удовольствие после perl и bash использовать VBS. Да и просто сомнительное удовольствие использовать VBS.
Вполне допускаю, ибо перл и баш никогда не использовал. Просто поддерживая один из проектов столкнулся с .vbs скриптами, запускаемыми через SQL Agent (я думаю, линуксоиды дружно сплюнули). И ничего, через месяц даже стал находить в этом какой-то смысл!
имхо любой инструмент имеет право на существование,
и для любого инструмента найдутся задачи, которые им удобно решать
А почему нельзя было просто файл скопировать?
потому что надо было из файла удалить те строки, которые не удовлетворяют заданное условие.
А есть что-нить хорошее, для вордовских файлов? Гос учреждения требують...=(
UFO just landed and posted this here
UFO just landed and posted this here
Есть Microsoft Office WebApps, которые интегрируются с SharePoint — и на портале можно прямо через браузер и смотреть и редактировать и ворд, и ексель, и даже аксесс. Это IMHO интереснее, чем простая конвертация в HTML.
У Microsoft все продукты между собой взаимосвязаны. Но что делать если на сервере стоит не Windows Server. А поднимать Mono и разворачивать SharePoint для задачи совсем не актуально.
<sarcasm&bt;Поднять Windows Server на виртуалке!</sarcasm&bt;
На самом деле тогда действительно остается только конвертить. Хотя использовать для этого тяжелющий OpenOffice — это IMHO как из пушки по воробьям. Уж лучще какие-нибудь более легкие решения использовать — вот типа как библиотеки из топика.
>Поднять Windows Server на виртуалке!… тогда действительно остается только конвертить.

Это у вас получается из пушки по воробьям, а человек просто решил поставленную задачу
Задачу-то он решил, но вот как бы сервак не «просел» под такой нагрузкой.
UFO just landed and posted this here
Начиная с офиса 2007 Мелкомягкие продавили новый формат документа OpenXML, точнее не то что бы он был новый есть замечательный формат ODF который теже мелкомягкие проигнорировали, но суть не в этом, OpenXML это по сути zip архив в котором лежат обычные xml файлы, теперь не нужно корячится чтобы создать/изменить документ офиса, можно воспользоваться всем функционалом презентаций, електронных таблиц и документов просто изменив xml внутри архива, а как это сделать читаем стандарт OpenXML на 4тысячи страниц). Благо Микрософт вставил туда уйму примеров…
К сожалению не все еще пользователи перешли на офис 2007 и выше. Поэтому задачи по созданию xls файлов еще актуальны.
Да, но и он уже довольно распространен, и писать под него уже нужно, и самое важное — гораздо приятнее.
Думаю это будет следующей задачей. Конечно же нужно идти в ногу со временем.
UFO just landed and posted this here
У Джоэла в послелдей книге есть цела глава о том почему не стоит программно писать в файлы формата xls, doc и т.д. — почитайте любопытно.
Вам действительно не подходил стандартный svc формат?
В целом стать хорошая, спасибо — либа может оказаться полезной многим.
угу, cvs + awk — никаких xls
Ну раз пошла такая пьянка: 'svc', 'cvs' — Comma Separated Values — csv.
Проблема в том что пользователи отправляют на вход файлы разных форматов.
Один из форматов, которые необходимо поддерживать как раз Excel.
Система также понимает txt и csv формат.
И на выходе пользователи хотят видеть данные в том формате,
в котором они подали их на вход. Но уже обработанные.
Проблема в том, что при выходе новой версии ms office нужно будет обновлять соответствующие пакеты на сервере. Не факт, что либа к тому времени будет еще поддерживаться или же обновления придется ждать значительное время. А сказать, что «мы не поддерживаем версию ms office выше N» сродни тому чтобы сказать «мы не поддерживаем xls». Ну и говоря, что вы поддерживаете формат xls — вы тем самым подписываетесь под тем, что весь функционал из исходного документа будет перенесен в результирующий. Это так? Макросы, диаграммы и.т.д?
Вероятность наличия макросов и диаграмм в исходном документе мала.
Данное решение не поддерживает перенос всего этого.
Скорее формат xls используется пользователями, как привычный формат
формирования данных в таблицы. Пользователи не заботятся о том, в каком формате они сохранили данные. Это решение было призвано облегчить им немного жизнь.
Не могу с Вами не согласится по поводу поддержки формата xls.
в новых же версиях он уже не xls, а xlsx.
За наводку на книгу спасибо, почитаю.
UFO just landed and posted this here
UFO just landed and posted this here
Читайте туториал по ссылке выше. Там всё просто и понятно разобрано.
Главное не надо приходить на #python и #pythonua, если у вас там что-то не работает в symbian. Очень просим.
Моногоуважаемые, подскажите пожалуйста простой способ превращать xls в csv utf-8 средствами питона?
Как то так, но работу скрипта не проверил:
import xlrd
fp = open("my.csv","wb")
rb = xlrd.open_workbook('my.xls')
sheet = rb.sheet_by_index(0)
for rownum in range(sheet.nrows):
    row = sheet.row_values(rownum)
    c_row=[]
    for c_el in row:
        c_row.append(c_el)
    fp.write(";".join(c_row))
fp.close()
Все же для записи CSV лучше использовать docs.python.org/library/csv.html т.к. всякие экранирования символов и т.п. нужны на случай если в ячейке вдруг попадется точка с запятой/запятая
Как раз вовремя — решаю подобную задачу. Спасибо.
А еще была библиотека pyExcelerator, правда ее автор забросил
По этой причине я и выбрал использование библиотек xlrd, xlwt и xlutils. И если я не ошибаюсь, то xlwt вышла из pyExcelerator. Только исправили все баги.
В прошлом году стояла подобная задача: есть некий excelевский шаблон со всевозможными стилями, картинками и формулами. Его нужно использовать как основу для отчетов.

Выявились проблемы:
1) xlrd не умеет понимать формулы и картинки.
2) xwlt не может менять документы.
Таким образом, чтобы постороить отчет его необходимо полностю написать в объектах xwlt, но так как xlrd не умеет полностью прочитать шаблон, эта задача становится невозможной.

В итоге поставленную задачу решили по средсвам Apache POI

Прошу меня поправить, если я не прав и сейчас поведение библиотеки изменилось.
Насчет формул сказать толком ничего не могу.
Потому что не попадались. Но вопросы по формулам читал в процессе поиска информации.
Насчет картинок так и есть, после создание копии посредством xlutils.copy картинки пропадают.
формулы так и не сделали (
Так и не смог понять, по какому там принципу округление работает. У меня вместо n-значного числа его нормализованное представление. Буду признателен за советы.
округление зависит от формата ячейки.
операции над ячейками осуществляются до применения форматирования.
Atlete, спасибо за статью, готовое решение сэкономило час-другой времени.
Рад что вам помогло. Есть похожее решение для работы с xlsx файлами. Правда я не уверен что это стоит отдельной статьи.
А как можно при создании документа xlwt, сделать внутри одной ячейки принудительный перенос строки.

Например:
ws.write(0, 0, 'Test1 Test2')

Что бы в одной ячейки было записано:
Test1
Test2

К сожалению сейчас не на чем попробовать, но попробуйте добавить \n.
Спасибо, уже разобрался. Да так и нужно. Просто когда добавлял, строки съезжали, а ниже не посмотрел, думал не работает. Сейчас разобрался.
Sign up to leave a comment.

Articles