Python Xlwings - повторяющиеся столбцы с форматом - PullRequest
0 голосов
/ 03 августа 2020

Я хочу создавать автоматизированные протоколы в Excel. В VBA это работает очень хорошо: вы можете нажать кнопку, ввести значения в некоторые поля ввода, и макрос сгенерирует протоколы.

Теперь я хотел бы сделать все это с помощью Python. С Xlswriter это, безусловно, возможно, но я хотел бы решить эту проблему с помощью Xlwings, но я не знаю, возможно ли это с этим?

Пока мне удалось скопировать все содержимое Excel лист.

import xlwings as xw

path_read = 'C:/Users/Public/test.xlsx'
path_write = 'C:/Users/Public/test_copy.xlsx'
wb = xw.Book(path_read)  
sht = wb.sheets[0] 
new_wb = xw.Book(path_write)    
new_wb.sheets.add("Temp", after=1) 
print(new_wb.sheets)
sht.api.Copy(Before=new_wb.sheets['Temp'].api)
new_wb.sheets['Temp'].delete()
new_wb.save(path_write)

Однако у меня на одном листе рядом лежат несколько журналов. Например, я хотел бы скопировать первые 10 столбцов, включая формат листа Excel, а затем снова вставить их на 2 столбца правее с форматом (шрифт, связанные ячейки и т. Д. c.) Так часто, как это было указано .

На данный момент я планирую записать такие значения, как имя файла, количество копий, серийный номер и т. Д. c. в качестве переменных в коде, но было бы неплохо, если бы вы могли использовать для этого поля ввода VBA.

Кто-нибудь знает, возможно ли это с xlwings? Или для этого лучше подойдет модуль xlswriter?

1 Ответ

0 голосов
/ 03 августа 2020

Чтобы немного прояснить свой вопрос, я приложил небольшой снимок экрана с примером.

В электронной таблице все столбцы должны быть скопированы и изменены.

К сожалению, это не работает с openpyxl из-за связанных ячеек. В противном случае я нахожу только примеры, когда отдельные ячейки копируются из одной таблицы в другую.

Я думаю, что копирование столбцов и их изменение - одна из стандартных операций в автоматизации Excel, не так ли? Если у кого-то есть идея, с какими модулями я могу легко выполнять такие операции и вносить соответствующие изменения, я был бы очень признателен

Дублирование столбцов

...