У меня есть 3 файла Excel со столбцом данных в ячейках с A1 по A10 (« Исходные ячейки ») в каждой книге (на листе 1 в каждой книге). Я хотел бы скопировать данные из исходных ячеек в новую рабочую книгу, но данные должны каждый раз перемещаться в новый столбец.
Например:
- Исходные ячейки в файле 1 должны быть скопированы в ячейки с A1 по A10 в новой книге;
- Исходные ячейки в файле 2 должны быть скопированы в ячейки с B1 по B10 в новой книге; и
- исходные ячейки в файле 3 должны быть скопированы в ячейки с C1 по C10 в новой рабочей книге.
Я изо всех сил пытаюсь найти лучший способ настроить "j" в мой код на каждой итерации. Я также не уверен, что самый чистый способ - запускать каждую функцию для разных исходных файлов.
Все предложения о том, как сделать этот код более чистым, также будут оценены, потому что я признаю, что в данный момент это так грязно!
Заранее спасибо!
import openpyxl as xl
filename_1 = "C:\\workspace\\scripts\\file1.xlsx"
filename_2 = "C:\\workspace\\scripts\\file2.xlsx"
filename_3 = "C:\\workspace\\scripts\\file3.xlsx"
destination_filename = "C:\\workspace\\scripts\\new_file.xlsx"
num_rows = 10
num_columns = 1
def open_source_workbook(path):
'''Open the workbook and worksheet in the source Excel file'''
workbook = xl.load_workbook(path)
worksheet = workbook.worksheets[0]
return worksheet
def open_destination_workbook(path):
'''Open the destination workbook I want to copy the data to.'''
new_workbook = xl.load_workbook(path)
return new_workbook
def open_destination_worksheet(path):
'''Open the worksheet of the destination workbook I want to copy the data to.'''
new_worksheet = new_workbook.active
return new_worksheet
def copy_to_new_file(worksheet, new_worksheet):
for i in range (1, num_rows + 1):
for j in range (1, num_columns + 1):
c = worksheet.cell(row = i, column = j)
new_worksheet.cell(row = i, column = j).value = c.value
worksheet = open_source_workbook(filename_1)
new_workbook = open_destination_workbook(destination_filename)
new_worksheet = open_destination_worksheet(new_workbook)
copy_to_new_file(worksheet, new_worksheet)
new_workbook.save(str(destination_filename))