python-3.x 将列从一个工作簿复制到除标题行(第一行)以外的另一个工作簿

hec6srdp  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(83)

我一直试图将整个列从workbook1复制到workbook2,但不包括第一行。如何复制第一行并将结果保存到新工作簿(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")

字符串

busg9geu

busg9geu1#

你的第一句话似乎很清楚;

  • 我一直试图将整个列从workbook 1复制到workbook 2,但不包括第一行。*

那么你的第二句话就有些不一样了;

  • 如何复制第一行并将结果保存到新工作簿(workbook 3)。*

第二句是第一句以外的另一个问题吗?
对于您的代码似乎涵盖的第一个句子/问题;复制不包括第一行的列是很容易的。只在第1行上continue,然后复制剩下的部分。
我对你的代码做了一些修改,因为语法被贬低了,或者有其他更喜欢的方法。
也注意;
1.您只需要保存已更改的文件。正在读取Excel文件“test1.xlsx”,因此该文件未被更改,不需要保存

  1. wb 2,被更改的工作簿,是从'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复制到单元格new A1,并保存为工作簿名称workbook3

相关问题