Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2016 18:52:17

Zodt
Зарегистрирован: 2016-03-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

Всем доброго времени суток. Зашел в тупик в поиске команды для автоматического подбора ширины колонки в excel
Пробовал так, но ругается…

import csv
import openpyxl
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
with open('myfile.txt') as f:
for line in csv.DictReader(f, delimiter=':'):
ws.append([line['fio'],int(line['o']),int(line['ko']),int(line['kr']),int(line['kdb']),round(int(line['ko'])*int(line['o'])/int(line['kr']),1),round(int(line['kdb'])/int(line['kr']),1)])

#ws.columns('A:G').EntireColumn().AutoFit()# Ругается именно на эту строку, которая, собственно и должна отвечать за автоподбор.

wb.save("My-Excel-File-1.xlsx")

Во время поиска решения проблемы нашел даже то, как реализуется данная команда на Delphi 7 (ws.Range.Columns.AutoFit), но как эту же команду правильно написать на Python 3.4.4 так и не нашел… Если кто-то сталкивался с такой проблемой и знает как ее решить, подскажите как быть. С меня + к Вашей карме за помощь

P.S. программа считывает данные из .txt файла, заносит их в словарь, кое-что вычисляет(см.код) и выводит все в excel таблицу.
P.S.S. не спрашивайте на кой это надо и какому “умному” человеку такое пришло в голову - это такое своеобразное РГР по программированию

Отредактировано Zodt (Март 2, 2016 18:56:44)

Офлайн

#2 Март 2, 2016 20:54:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

Zodt
Ругается именно на эту строку
Надо написать как ругается.
Zodt
как реализуется данная команда на Delphi 7
А с чего вы взяли что данная функциональность есть в openpyxl.
Вы нашли это в документации?
https://openpyxl.readthedocs.org/en/2.3.3/
А что такое
Zodt
РГР
?
Zodt
P.S.S. не спрашивайте на кой это надо и какому “умному” человеку такое пришло в голову
Раз просите, промолчу скрипя зубами. :)

Это похоже на функциональность .net интерфейса. Смотрите доки по экселу и win32com



Отредактировано doza_and (Март 2, 2016 20:55:50)

Офлайн

#3 Март 2, 2016 21:43:38

Zodt
Зарегистрирован: 2016-03-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

doza_and
“Надо написать как ругается.”
Ошибка такая:
TypeError: ‘turtle’ object is not callable

doza_and
“А что такое РГР”
Решебно-Графическая Работа, короче говоря что-то типа домашки… правда на пол семестра

doza_and
“Это похоже на функциональность .net интерфейса. Смотрите доки по экселу и win32com”
Нашел такой вариант, который добавляет(точнее должен добавлять) макрос в сам excel файл на автоподбор ширины колонок.

xl = win32.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
ss = xl.Workbooks.Add()
sh = ws or ws2
xlmodule = ss.VBProject.VBComponents.Add(1)  # vbext_ct_StdModule
sCode = '''sub VBAMacro()
       msgbox "VBA Macro called"
      end sub'''
xlmodule.CodeModule.AddFromString(sCode)

Правда, если запустить прогон, вставив этот кусок кода, но нылезает ошибка, которая меня, вправду, ввела в ступор:
pywintypes.com_error: (-2147352567, 'Ошибка.', (0, 'Microsoft Excel', 'Программный доступ к проекту Visual Basic не является доверенным\n', 'xlmail.chm',0,-2146827284), None)

Отредактировано Zodt (Март 2, 2016 21:45:10)

Офлайн

#4 Март 3, 2016 08:28:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

Zodt
TypeError: ‘turtle’ object is not callable
Круто. Надо будет попробовать. Неужели такое можно получить?
Думаю вам будет проще ручками написать выравниватель ширины столбцов. А то увязнете в .net как в паутине.



Офлайн

#5 Март 6, 2016 13:52:31

Zodt
Зарегистрирован: 2016-03-02
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

doza_and
Думаю вам будет проще ручками написать выравниватель ширины столбцов.
А есть идеи как этого добиться?

Офлайн

#6 Апрель 29, 2016 15:51:00

vmeshche
Зарегистрирован: 2016-04-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Автоподбор ширины колонки в Excel | Library:openpyxl

привет. Вот рабочий пример

#create COM object
excel = Dispatch('Excel.Application')
#disable alerts
wb = excel.Workbooks.Add()
sheet = wb.Worksheets.Add()
sheet.Range('A' + str(1)).value = 'Some text1'
sheet.Range('B' + str(1)).value = 'Some text2'
sheet.Columns('A:B').EntireColumn.AutoFit()
#save as
wb.SaveAs("1.xlsx")
#close workbook
wb.Close()
#close Com object
excel.Quit()

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version