Уведомления

Группа в Telegram: @pythonsu

#1 Июль 28, 2015 16:52:30

Ruchey
Зарегистрирован: 2014-05-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

win32com.client Excel

Для работы с Excel использую библиотеку win32com.client.
Надо задать формат ячейки. Для этого используется self.wb.ActiveSheet.Range(cells).NumberFormat = n, где n это строка содержащая формат.
Например, self.wb.ActiveSheet.Range(cells).NumberFormat = ‘0,00’ - числовой формат.
Мне надо задать денежный формат. В скрипте VBS я писал так: .ActiveSheet.Cells(LastRow, 8).NumberFormat = “#,##0.00 $”, задавал значение формата “#,##0.00 $”. Такой же формат задаёт макрос экселя.
Если же в питоне пропишу self.wb.ActiveSheet.Range(cells).NumberFormat = “#,##0.00 $”, то будет ошибка. Даже, если изменю на “# ##0,00 $”, то тоже не поможет.
Как же задать денежный формат?

Офлайн

#2 Июль 28, 2015 17:05:04

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

win32com.client Excel

А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?

Офлайн

#3 Июль 28, 2015 17:07:34

Ruchey
Зарегистрирован: 2014-05-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

win32com.client Excel

4kpt_III
А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?
Зачем другой модуль?
Какой модуль не выбери, столкнёшься с чем-то.
Этот модуль тоже прекрасно работает. Пока столкнулся с денежным форматом.
Даже, если взять другой модуль, то как там поставить денежный формат ячейки?

Офлайн

#4 Июль 28, 2015 17:51:01

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

win32com.client Excel

Ruchey
Если же в питоне пропишу self.wb.ActiveSheet.Range(cells).NumberFormat = “#,##0.00 $”
Покажите текст ошибки



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Июль 28, 2015 17:53:46

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

win32com.client Excel

Для меня остается секретом зачем использовать денежный формат, но все же гляньте здесь:

XlsxWriter format

Офлайн

#6 Июль 28, 2015 17:57:40

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

win32com.client Excel

Ruchey
Зачем другой модуль?

Затем, что он будет кросплатформенным. А Ваше решение будет работать только на винде
Плюс оно как минимум жутко выглядит. Я бы такой код себе в систему не впилил

Отредактировано 4kpt_III (Июль 28, 2015 17:58:23)

Офлайн

#7 Июль 28, 2015 19:45:49

Ruchey
Зарегистрирован: 2014-05-26
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

win32com.client Excel

PooH
Покажите текст ошибки
File “C:\Python33\lib\site-packages\win32com\client\dynamic.py”, line 560, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
pywintypes.com_error: (-2147352567, ‘Ошибка.’, (0, ‘Microsoft Excel’, ‘Нельзя установить свойство NumberFormat класса Range’, ‘xlmain11.chm’, 0, -2146827284), None)

4kpt_III
А Ваше решение будет работать только на винде. Плюс оно как минимум жутко выглядит.
Это для приложения только для винды. На счёт жуткого вида ничего не скажу. К примеру, вот часть кода:
            self.wb.ActiveSheet.Range(cells).HorizontalAlignment = h
self.wb.ActiveSheet.Range(cells).VerticalAlignment = v
self.wb.ActiveSheet.Range(cells).WrapText = w
self.wb.ActiveSheet.Range(cells).NumberFormat = n
Чем особо будет отличаться с другим модулем?

Офлайн

#8 Июль 28, 2015 20:02:38

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

win32com.client Excel

А Вы его пробовали?
Вы уже задали как минимум 2 вопроса, на которые сами смогли-бы ответить…

P.S. И да. По-сравнению с кодом, который получается с использованием xlsxWriter - это уродство

Отредактировано 4kpt_III (Июль 28, 2015 20:19:14)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version