Zany. 2023-09-21 13:41 采纳率: 0%
浏览 20
已结题

如何用python实现跨工作簿的指定区域批量复制粘贴

如何用python实现跨工作簿批量复制粘贴(选择工作簿a的某一个工作表的指定区域去复制粘贴到另一份工作簿b的某工作表的某区域)
刚学习的,一直不太懂,想问问大家,或者有没有相关的这类功能工具呢,有很多工作簿需要批量操作

  • 写回答

15条回答 默认 最新

  • 这一次有糖 2023-09-21 14:12
    关注
    获得0.60元问题酬金

    可以不用python的,之前我就答过powershell命令可以

    评论
  • 专家-赤兔[在线] 2023-09-21 13:43
    关注
    获得0.30元问题酬金

    引用 皆我百晓生 小程序回应内容作答:
    你可以使用Python的openpyxl库来实现跨工作簿的指定区域的批量复制粘贴。下面是一个示例代码:

    from openpyxl import load_workbook
    
    # 打开源工作簿和目标工作簿
    src_workbook = load_workbook('源工作簿.xlsx')
    dest_workbook = load_workbook('目标工作簿.xlsx')
    
    # 选择源工作表和目标工作表
    src_sheet = src_workbook['源工作表']
    dest_sheet = dest_workbook['目标工作表']
    
    # 源工作表的复制区域和目标工作表的粘贴区域
    copy_range = src_sheet['A1:B10']
    paste_range = dest_sheet['C1']
    
    # 复制数据
    for row in copy_range:
        for cell in row:
            dest_sheet[paste_range.coordinate].value = cell.value
            paste_range = paste_range.offset(row=0, column=1)  # 往右偏移一列
    
    # 保存目标工作簿
    dest_workbook.save('目标工作簿.xlsx')
    

    在示例代码中,你需要将"源工作簿.xlsx"和"目标工作簿.xlsx"替换为实际的文件路径和文件名。你还需要将"源工作表"和"目标工作表"替换为实际的工作表名称。"A1:B10"是源工作表中你想要复制的区域,"C1"是目标工作表中你想要粘贴的起始单元格。你可以根据实际情况进行调整。

    评论 编辑记录
  • Leodong. 2023-09-21 14:04
    关注
    获得0.30元问题酬金

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    【第一种实现方式】
    要实现跨工作簿的指定区域批量复制粘贴,可以使用Python的openpyxl库。首先需要安装openpyxl库,可以使用以下命令进行安装:

    pip install openpyxl
    

    接下来,可以使用以下代码实现跨工作簿的指定区域批量复制粘贴:

    import openpyxl
    
    def copy_paste_workbook(src_file, src_sheet, src_range, dest_file, dest_sheet, dest_range):
        # 加载源工作簿和目标工作簿
        src_wb = openpyxl.load_workbook(src_file)
        dest_wb = openpyxl.load_workbook(dest_file)
    
        # 获取源工作表和目标工作表
        src_ws = src_wb[src_sheet]
        dest_ws = dest_wb[dest_sheet]
    
        # 复制指定区域的数据
        for row in src_ws[src_range]:
            for cell in row:
                dest_ws[cell.coordinate].value = cell.value
    
        # 保存目标工作簿
        dest_wb.save(dest_file)
    
    # 示例:从工作簿a的Sheet1的A1:B2区域复制到工作簿b的Sheet1的C3:D4区域
    copy_paste_workbook('a.xlsx', 'Sheet1', 'A1:B2', 'b.xlsx', 'Sheet1', 'C3:D4')
    

    在这个示例中,copy_paste_workbook函数接受6个参数,分别是源工作簿文件名、源工作表名、源区域范围、目标工作簿文件名、目标工作表名和目标区域范围。函数会将源工作簿指定区域的值复制到目标工作簿的指定区域。


    【第二种实现方式】
    要用 Python 实现跨工作簿的指定区域批量复制粘贴,你可以使用第三方库如 openpyxlpandas 来处理 Excel 文件。下面我将提供一个使用 openpyxl 的示例代码来帮助你开始。

    首先,确保你已经安装了 openpyxl 库。你可以使用以下命令在命令行中安装它:

    pip install openpyxl
    

    然后,可以使用以下代码来实现跨工作簿的复制粘贴操作:

    from openpyxl import load_workbook
    
    # 打开源工作簿和目标工作簿
    source_workbook = load_workbook('source.xlsx')
    target_workbook = load_workbook('target.xlsx')
    
    # 选择源工作簿中的源工作表和目标工作簿中的目标工作表
    source_sheet = source_workbook['Sheet1']
    target_sheet = target_workbook['Sheet1']
    
    # 定义源工作表的复制区域和目标工作表的粘贴区域
    source_range = 'A1:B10'  # 替换为你想要复制的区域
    target_range = 'C1'  # 替换为你想要粘贴的起始单元格
    
    # 从源工作表复制数据
    data_to_copy = []
    for row in source_sheet[source_range]:
        data_to_copy.append([cell.value for cell in row])
    
    # 将数据粘贴到目标工作表
    for row_index, row in enumerate(data_to_copy):
        for col_index, value in enumerate(row):
            target_sheet.cell(row=row_index+1, column=col_index+1, value=value)
    
    # 保存目标工作簿
    target_workbook.save('target.xlsx')
    

    请注意,上述示例假设源工作簿名为 source.xlsx,目标工作簿名为 target.xlsx,源工作表名和目标工作表名均为 Sheet1。你需要根据实际情况修改这些文件名和工作表名。

    此示例代码将从源工作表的指定区域复制数据,并将其粘贴到目标工作表的指定区域。你可以根据需要调整源区域和目标区域的范围。

    希望这个示例能帮助你开始实现跨工作簿的复制粘贴操作。如果你还有其他问题,请随时提问。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论
  • 呈两面包夹芝士 2023-09-21 14:13
    关注
    获得0.30元问题酬金

    该内容引用文心一言:
    你可以使用pandasopenpyxl库来实现这个功能。pandas是一个强大的数据处理库,openpyxl则可以用来处理Excel文件。

    以下是一个简单的例子,演示如何从工作簿A的"Sheet1"复制数据到工作簿B的"Sheet2":

    import pandas as pd
    
    # 读取源工作簿和目标工作簿
    book_a = pd.ExcelFile('工作簿A.xlsx')
    book_b = pd.ExcelFile('工作簿B.xlsx')
    
    # 读取源工作簿中的Sheet1
    df_source = pd.read_excel(book_a, 'Sheet1')
    
    # 写入到目标工作簿的Sheet2
    with pd.ExcelWriter('工作簿B.xlsx', engine='openpyxl', mode='a') as writer:
        df_source.to_excel(writer, sheet_name='Sheet2', index=False)
    

    注意,这个例子假定源工作簿和目标工作簿都在同一个文件夹下,且目标工作簿已经存在。如果目标工作簿不存在,上述代码会创建一个新的工作簿。此外,pd.read_excelpd.to_excel函数默认会处理整个工作表,如果你只想处理特定的区域,你需要指定skiprowsusecols参数。

    另外,如果你想要复制的格式或者样式,那么你可能需要使用openpyxl库的更高级的特性,这可能需要一些额外的工作。

    评论
  • 7*24 工作者 2023-09-21 14:57
    关注
    获得0.60元问题酬金

    使用 pandas 模块在去读excel的时候,指定不同的 sheet_name ,就可以创建不同的对象
    通过 pandas的DataFrame 对象的 iloc 方法获取数据
    通过pandas 的 contact 方法把数据合并

    import pandas as pd
    
    #df1对象是获取数据的sheet,df2对象是要插入的sheet
    df1 = pd.read_excel('20230915.xlsx',sheet_name='A')
    df2 = pd.read_excel('20230915.xlsx',sheet_name='B')
    
    #通过索引获取位置获取数据,默认是0开始
    data = df1.iloc[25:86,4:9]
    
    #默认是行拼接,其次要保证df1中获取到数据的列名和df2对象的列名称要完全一样(可以多列,但是不能少)
    #多余的列导出到excel后为空
    result = pd.concat( [ df2,data ] )
    
    pd.DataFrame(result,columns=df2.columns).to_excel('new.xlsx',index=False)
    
    评论
  • 数据大魔王 2023-09-21 16:27
    关注
    获得0.60元问题酬金

    使用Python中的openpyxl库来操作Excel工作簿,实现跨工作簿的批量复制粘贴操作。

    打开源工作簿A和目标工作簿B:

    
    source_workbook = openpyxl.load_workbook('工作簿A.xlsx')
    target_workbook = openpyxl.load_workbook('工作簿B.xlsx')
    
    

    确保替换 '工作簿A.xlsx' 和 '工作簿B.xlsx' 为你的实际文件路径。

    选择源工作表和目标工作表以及复制粘贴的区域:

    
    source_sheet = source_workbook['源工作表名称']
    target_sheet = target_workbook['目标工作表名称']
    
    # 选择源工作表的区域(例如,A1:B10)
    source_range = source_sheet['A1:B10']
    
    

    确保替换 '源工作表名称' 和 '目标工作表名称' 为你的实际工作表名称,并指定要复制的区域。

    执行复制粘贴操作:

    
    for row in source_range:
        for source_cell, target_cell in zip(row, target_sheet.iter_rows(min_col=1, max_col=2)):
            target_cell.value = source_cell.value
    
    

    这段代码将遍历源工作表中的每一行,将每一行的数据复制到目标工作表中。你可以根据需要更改目标列的范围。

    保存目标工作簿B:

    
    target_workbook.save('工作簿B.xlsx')
    
    

    关闭工作簿:

    source_workbook.close()
    target_workbook.close()
    
    
    
    评论 编辑记录
  • IT小辉同学 2023-09-21 16:44
    关注
    获得0.45元问题酬金

    你很厉害啊,使用到了自动化办公,我网上遇见过一篇文章就是80个小技巧,实现生活中工作中的python自动化办公,其中就有这个表格操作,以及文档,ppt批量操作的代码,这里就抛砖引玉,简单说一下,但是,对于原数据进行备份,避免批量操作导致数据损失。
    你可以使用Python的openpyxl库来实现跨工作簿的批量复制粘贴操作。以下是一个基本的示例,演示了如何从一个工作簿的一个工作表中复制指定区域的数据,并将其粘贴到另一个工作簿的指定工作表的位置。

    首先,确保你已经安装了openpyxl库。如果没有安装,可以使用以下命令进行安装:

    pip install openpyxl
    

    然后,你可以使用以下示例代码来执行复制粘贴操作:

    import openpyxl
    
    # 打开第一个工作簿
    workbook_a = openpyxl.load_workbook('workbook_a.xlsx')
    sheet_a = workbook_a['Sheet1']
    
    # 打开第二个工作簿
    workbook_b = openpyxl.load_workbook('workbook_b.xlsx')
    sheet_b = workbook_b['Sheet1']
    
    # 指定要复制的区域(示例中从A1到B5)
    copy_range = sheet_a['A1:B5']
    
    # 指定要粘贴的位置(示例中从C1开始)
    paste_cell = sheet_b['C1']
    
    # 遍历要复制的区域并将数据粘贴到另一个工作簿
    for row in copy_range:
        for cell_a in row:
            cell_b = sheet_b.cell(row=paste_cell.row, column=paste_cell.column)
            cell_b.value = cell_a.value
            paste_cell = paste_cell.offset(row=0, column=1)  # 移动到下一列
    
    # 保存第二个工作簿
    workbook_b.save('workbook_b.xlsx')
    

    请确保替换 'workbook_a.xlsx''workbook_b.xlsx' 为你实际的工作簿文件路径,并根据你的需求更改复制和粘贴的区域。

    这个示例演示了从工作簿A的一个工作表复制数据,并将其粘贴到工作簿B的另一个工作表的位置。你可以根据需要进行进一步的自定义和扩展。

    img


    可以私聊,我发给你,平台没法发送资源,网上也有相关的,但是由于代码有点久,一些库都有了更新,方法也有了替换,需要自己尝试哈,但是还是很有意思,可以帮助到很多地方!!!

    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-21 16:47
    关注
    获得0.75元问题酬金

    【以下回答由 GPT 生成】

    回答:

    要实现跨工作簿的指定区域的批量复制粘贴,可以使用Python中的openpyxl库。这个库允许我们读取、创建和修改Excel文件。

    以下是实现这个需求的步骤:

    1. 首先,确保已经安装了openpyxl库,可以使用以下命令来安装:
    pip install openpyxl
    
    1. 在Python脚本中导入所需的库:
    from openpyxl import load_workbook
    from openpyxl.utils import get_column_letter
    
    1. 加载源工作簿和目标工作簿的Excel文件:
    source_workbook = load_workbook('源工作簿.xlsx')
    target_workbook = load_workbook('目标工作簿.xlsx')
    

    确保将'源工作簿.xlsx'和'目标工作簿.xlsx'替换为实际的文件路径和文件名。

    1. 获取源工作簿和目标工作簿中的工作表:
    source_sheet = source_workbook['源工作表']
    target_sheet = target_workbook['目标工作表']
    

    确保将'源工作表'和'目标工作表'替换为实际的工作表名称。

    1. 指定源工作簿和目标工作簿的区域:
    source_range = source_sheet['A1:C10']  # 替换为实际的源区域
    target_range = target_sheet['D1:F10']  # 替换为实际的目标区域
    

    替换上述代码中的区域范围,确保匹配你需要复制和粘贴的区域。

    1. 通过遍历源区域的每一行和列,将值复制到目标区域:
    for row in souce_range:
        for source_cell, target_cell in zip(row, target_range):
            target_cell.value = source_cell.value
    

    这段代码通过zip函数将源区域和目标区域的每个单元格一一对应,然后将源单元格的值复制到目标单元格。

    1. 保存目标工作簿的文件:
    target_workbook.save('目标工作簿.xlsx')
    

    确保将'目标工作簿.xlsx'替换为实际的文件路径和文件名。

    完整的代码示例:

    from openpyxl import load_workbook
    from openpyxl.utils import get_column_letter
    
    source_workbook = load_workbook('源工作簿.xlsx')
    target_workbook = load_workbook('目标工作簿.xlsx')
    
    source_sheet = source_workbook['源工作表']
    target_sheet = target_workbook['目标工作表']
    
    source_range = source_sheet['A1:C10']
    target_range = target_sheet['D1:F10']
    
    for row in source_range:
        for source_cell, target_cell in zip(row, target_range):
            target_cell.value = source_cell.value
    
    target_workbook.save('目标工作簿.xlsx')
    

    请确保将上述代码中的文件名和路径替换为实际的文件名和路径。

    这样,你就可以使用Python实现跨工作簿的指定区域批量复制粘贴了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
  • 恐怖如斯惊天 2023-09-21 21:07
    关注

    要使用Python实现跨工作簿的批量复制粘贴,您可以使用openpyxl库来读取、写入和操作Excel文件中的数据.

    评论
  • 杨得江-君临天下wyj 2023-09-21 21:15
    关注
    获得0.45元问题酬金
    
    import pandas as pd
    #df1对象是获取数据的sheet,df2对象是要插入的sheet
    df1 = pd.read_excel('20230915.xlsx',sheet_name='A')
    df2 = pd.read_excel('20230915.xlsx',sheet_name='B')
    #通过索引获取位置获取数据,默认是0开始
    data = df1.iloc[25:86,4:9]
    #默认是行拼接,其次要保证df1中获取到数据的列名和df2对象的列名称要完全一样(可以多列,但是不能少)
    #多余的列导出到excel后为空
    result = pd.concat( [ df2,data ] )
    pd.DataFrame(result,columns=df2.columns).to_excel('new.xlsx',index=False)
    
    
    评论
  • 心梓知识 2023-09-23 02:10
    关注
    获得0.30元问题酬金

    结合GPT给出回答如下请题主参考
    你可以使用Python中的openpyxl模块来实现跨工作簿的批量复制粘贴。

    首先需要安装openpyxl模块,安装命令如下:

    pip install openpyxl
    

    然后如下所示的示例代码展示如何实现跨工作簿的批量复制粘贴:

    import openpyxl
    
    # 打开工作簿A
    wb_a = openpyxl.load_workbook('工作簿A.xlsx')
    
    # 打开工作簿B
    wb_b = openpyxl.load_workbook('工作簿B.xlsx')
    
    # 获取工作簿A的指定工作表的指定区域
    ws_a = wb_a['Sheet1']
    range_a = ws_a['A1':'B2']
    
    # 获取工作簿B的指定工作表的指定区域
    ws_b = wb_b['Sheet2']
    range_b = ws_b['C4':'D5']
    
    # 将工作簿A的指定区域复制到工作簿B的指定区域
    for row_index, row in enumerate(range_a):
        for col_index, cell in enumerate(row):
            ws_b.cell(row=row_index+range_b[0][0].row, column=col_index+range_b[0][0].col, value=cell.value)
    
    # 保存工作簿B
    wb_b.save('工作簿B.xlsx')
    

    上述示例代码中,我们打开了工作簿A和工作簿B,并获取了工作簿A的指定工作表的指定区域和工作簿B的指定工作表的指定区域,然后利用双重循环将工作簿A的指定区域内的单元格的值复制到工作簿B的指定区域内对应的单元格中。最后保存了工作簿B。

    这是一个简单的示例,你可以根据实际需求进行修改。

    评论
  • 想你依然心痛 全栈领域新星创作者 2023-09-25 10:03
    关注
    获得0.45元问题酬金

    您可以使用Python的openpyxl库来实现跨工作簿的批量复制和粘贴。下面是一个简单的例子,以从“工作簿A”的工作表“Sheet1”的A1:D5区域中复制数据并将其粘贴到“工作簿B”的工作表“Sheet2”的G1:J5区域中为例:

    from openpyxl import load_workbook
    
    # 打开工作簿A和B
    wb_a = load_workbook(filename='workbookA.xlsx')
    wb_b = load_workbook(filename='workbookB.xlsx')
    
    # 取得工作簿A中的Sheet1和工作簿B中的Sheet2
    ws_a = wb_a['Sheet1']
    ws_b = wb_b['Sheet2']
    
    # 复制A1:D5区域的值
    for row in ws_a['A1:D5']:
        for cell in row:
            ws_b[cell.column_letter + str(cell.row)] = cell.value
    
    # 保存工作簿B
    wb_b.save('workbookB.xlsx')
    

    以上代码首先打开了工作簿A和B,然后取得了需要复制和粘贴的工作表。接着,使用双重循环复制了A1:D5区域的值,并将其粘贴到了G1:J5区域。最后,保存了工作簿B。

    您可以根据自己的需求修改上述代码,例如可以使用循环来批量处理多个工作簿。希望这对您有帮助!您可以使用Python的openpyxl库来实现跨工作簿的批量复制和粘贴。下面是一个简单的例子,以从“工作簿A”的工作表“Sheet1”的A1:D5区域中复制数据并将其粘贴到“工作簿B”的工作表“Sheet2”的G1:J5区域中为例:

    from openpyxl import load_workbook
    
    # 打开工作簿A和B
    wb_a = load_workbook(filename='workbookA.xlsx')
    wb_b = load_workbook(filename='workbookB.xlsx')
    
    # 取得工作簿A中的Sheet1和工作簿B中的Sheet2
    ws_a = wb_a['Sheet1']
    ws_b = wb_b['Sheet2']
    
    # 复制A1:D5区域的值
    for row in ws_a['A1:D5']:
        for cell in row:
            ws_b[cell.column_letter + str(cell.row)] = cell.value
    
    # 保存工作簿B
    wb_b.save('workbookB.xlsx')
    

    以上代码首先打开了工作簿A和B,然后取得了需要复制和粘贴的工作表。接着,使用双重循环复制了A1:D5区域的值,并将其粘贴到了G1:J5区域。最后,保存了工作簿B。

    您可以根据自己的需求修改上述代码,例如可以使用循环来批量处理多个工作簿。希望这对您有帮助!

    评论
  • yy64ll826 2023-09-25 20:44
    关注
    获得0.30元问题酬金

    使用剪贴板在Windows上,可以使用Python的pyperclip模块来访问剪贴板,并将文本复制到剪贴板上或从中获取数据。pyperclip模块需要额外安装,可以通过pip命令进行安装:pythonpip install pyperclip然后就可以在Python程序中导入pyperclip模块,并使用它来复制和粘贴文本了:pythonimport pyperclip# 复制文本到剪贴板pyperclip.copy('Hello, world!')# 从剪贴板粘贴文本text = pyperclip.paste()print(text)

    评论
  • bug菌¹ Java领域优质创作者 2023-09-25 23:45
    关注
    获得0.75元问题酬金

    该回答引用ChatGPT,希望对题主有所帮助,如有帮助,还望采纳。


    可以使用Python的pandas库来实现跨工作簿的指定区域批量复制粘贴。具体步骤如下:

    1. 导入pandas库
    import pandas as pd
    
    1. 读取工作簿a中的指定区域数据
    df_a = pd.read_excel('path/to/workbook_a.xlsx', sheet_name='sheet_name', header=0, nrows=10, usecols='A:C')
    

    其中,'path/to/workbook_a.xlsx'为工作簿a的路径,'sheet_name'为需要读取的工作表名,header和nrows分别表示数据的表头行数和行数,usecols表示需要读取的列范围。

    1. 将数据复制到工作簿b的指定区域
    writer = pd.ExcelWriter('path/to/workbook_b.xlsx', engine='openpyxl')
    df_b = pd.read_excel(writer, sheet_name='sheet_name', header=0)
    df_b.iloc[1:11, 4:7] = df_a
    df_b.to_excel(writer, sheet_name='sheet_name', index=False)
    writer.save()
    

    其中,'path/to/workbook_b.xlsx'为工作簿b的路径,engine='openpyxl'表示使用openpyxl引擎,writer = pd.ExcelWriter('path/to/workbook_b.xlsx', engine='openpyxl')表示创建一个写入器,df_b = pd.read_excel(writer, sheet_name='sheet_name', header=0)表示读取工作表的数据,df_b.iloc[1:11, 4:7] = df_a表示将数据复制到工作表的指定区域,df_b.to_excel(writer, sheet_name='sheet_name', index=False)表示将数据写入工作表并保存。

    评论
  • 关注
    获得0.30元问题酬金

    用Python的openpyxl库来处理Excel文件

    评论

报告相同问题?

问题事件

  • 系统已结题 9月29日
  • 创建了问题 9月21日

悬赏问题

  • ¥30 哈夫曼编码译码器打印树形项目
  • ¥20 求完整顺利登陆QQ邮箱的python代码
  • ¥15 怎么下载MySQL,怎么卸干净原来的MySQL
  • ¥15 网络打印机Ip地址自动获取出现问题
  • ¥15 求局部放电案例库,用于预测局部放电类型
  • ¥100 QT Open62541
  • ¥15 stata合并季度数据和日度数据
  • ¥15 谁能提供rabbitmq,erlang,socat压缩包,记住版本要对应
  • ¥15 Vue3 中使用 `vue-router` 只能跳转到主页面?
  • ¥15 用QT,进行QGIS二次开发,如何在添加栅格图层时,将黑白的矢量图渲染成彩色