Найти - Пользователи
Полная версия: win32com.client Excel
Начало » Автоматизация бизнеса » win32com.client Excel
1
Ruchey
Для работы с 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 $”, то тоже не поможет.
Как же задать денежный формат?
4kpt_III
А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?
Ruchey
4kpt_III
А не проще собрать xlsx каким-то сторонним модулем типа xlwt или xlsxwriter или …?
Зачем другой модуль?
Какой модуль не выбери, столкнёшься с чем-то.
Этот модуль тоже прекрасно работает. Пока столкнулся с денежным форматом.
Даже, если взять другой модуль, то как там поставить денежный формат ячейки?
PooH
Ruchey
Если же в питоне пропишу self.wb.ActiveSheet.Range(cells).NumberFormat = “#,##0.00 $”
Покажите текст ошибки
4kpt_III
Для меня остается секретом зачем использовать денежный формат, но все же гляньте здесь:

XlsxWriter format
4kpt_III
Ruchey
Зачем другой модуль?

Затем, что он будет кросплатформенным. А Ваше решение будет работать только на винде
Плюс оно как минимум жутко выглядит. Я бы такой код себе в систему не впилил
Ruchey
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
Чем особо будет отличаться с другим модулем?
4kpt_III
А Вы его пробовали?
Вы уже задали как минимум 2 вопроса, на которые сами смогли-бы ответить…

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