我一直在尝试将整个列从工作簿1复制到工作簿2,但不包括第一行。如何复制第一行并将结果保存到新工作簿(workbook3)中。
到目前为止我已经得到了以下代码
from openpyxl import load_workbook
wb1 = load_workbook("test1.xlsx")
wb2 = load_workbook("test2.xlsx")
ws1 = wb1.get_sheet_by_name('Sheet1')
ws2 = wb2.get_sheet_by_name('Sheet1')
mr = ws1.max_row
mc = ws1.max_column
for i in range(1, mr + 1):
ws2['A' + str(i)].value = ws1['A' + str(i)].value
wb2.save("test1.xlsx")
wb1.save("test2.xlsx")
你的第一句话似乎很清楚;
我一直在尝试将整个列从工作簿1复制到工作簿2,但不包括第一行。
那么你的第二句话有些不同;
如何复制第一行并将结果保存到新工作簿(workbook3)中。
第二句是除了第一句之外的一个单独的问题吗?
对于您的代码似乎涵盖的第一句话/问题;复制不包括第一行的列很容易。只需在第 1 行上按
continue
,然后复制其余部分即可。另请注意;
'test2.xlsx'
打开。您将其另存为原始工作簿'test1.xlsx'
,这将覆盖原始文件。from openpyxl import load_workbook
wb1 = load_workbook("test1.xlsx")
wb2 = load_workbook("test2.xlsx")
ws1 = wb1['Sheet1'] # get_sheet_by_name is depreciated use this method instead
ws2 = wb2['Sheet1']
mr = ws1.max_row
# mc = ws1.max_column # Not used
for i in range(1, mr + 1):
if i == 1:
continue
# ws2['A' + str(i)].value = ws1['A' + str(i)].value
### Use f strings, no need to cast
ws2[f'A{i}'].value = ws1[f'A{i}'].value # Copy row to row
# ws2[f'A{i-1}'].value = ws1[f'A{i}'].value # Copy to row 1 onwards on the destination sheet
### Only need to save the workbook once after all changes are complete,
### not every time a change is made so this should not be in the loop
# wb2.save("test1.xlsx") # Overwriting the original workbook???
wb2.save("test2.xlsx")
# wb1.save("test2.xlsx") # Why save this workbook? Also wrong file name
如果第 2 句是一个单独的问题,并且您只想有效地将第 1 行复制到单元格 A1,则可以像以前一样执行相同的操作,但不需要循环。只需创建一个新工作簿,然后将原始单元格
A1
复制到新单元格 A1
并另存为工作簿名称 workbook3
。