Форум сайта python.su
Для работы с 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 $”, то тоже не поможет.
Как же задать денежный формат?
Офлайн
А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?
Офлайн
4kpt_IIIЗачем другой модуль?
А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?
Офлайн
RucheyПокажите текст ошибки
Если же в питоне пропишу self.wb.ActiveSheet.Range(cells).NumberFormat = “#,##0.00 $”
Офлайн
Для меня остается секретом зачем использовать денежный формат, но все же гляньте здесь:
XlsxWriter format
Офлайн
Ruchey
Зачем другой модуль?
Отредактировано 4kpt_III (Июль 28, 2015 17:58:23)
Офлайн
PooHFile “C:\Python33\lib\site-packages\win32com\client\dynamic.py”, line 560, in __setattr__
Покажите текст ошибки
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
Офлайн
А Вы его пробовали?
Вы уже задали как минимум 2 вопроса, на которые сами смогли-бы ответить…
P.S. И да. По-сравнению с кодом, который получается с использованием xlsxWriter - это уродство
Отредактировано 4kpt_III (Июль 28, 2015 20:19:14)
Офлайн