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

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

引用 皆我百晓生 小程序回应内容作答:
你可以使用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"是目标工作表中你想要粘贴的起始单元格。你可以根据实际情况进行调整。

你可以使用Python的openpyxl库来实现跨工作簿的批量复制粘贴。下面是一个示例代码,用于将工作簿A的某个工作表的指定区域复制到工作簿B的指定区域:

from openpyxl import load_workbook

def copy_paste(source_file, source_sheet, source_range, target_file, target_sheet, target_range):
    # 加载源工作簿
    source_workbook = load_workbook(source_file)
    source_worksheet = source_workbook[source_sheet]

    # 加载目标工作簿
    target_workbook = load_workbook(target_file)
    target_worksheet = target_workbook[target_sheet]

    # 复制源工作表的数据到目标工作表
    for row in source_worksheet[source_range]:
        for cell in row:
            target_worksheet[target_range].cell(row=cell.row, column=cell.column, value=cell.value)

    # 保存目标工作簿
    target_workbook.save(target_file)

# 使用示例
copy_paste('工作簿A.xlsx', 'Sheet1', 'A1:B10', '工作簿B.xlsx', 'Sheet2', 'C1')

在示例中,copy_paste函数接受源工作簿的文件名、源工作表的名称、源区域、目标工作簿的文件名、目标工作表的名称和目标区域作为参数。函数内部首先加载源工作簿和目标工作簿,然后使用双重循环遍历源区域中的每个单元格,并将其值复制到目标区域中相应的位置。最后,保存目标工作簿。

你可以根据实际情况修改函数中的参数来适应你的需求。请确保在使用示例代码之前安装openpyxl库。你可以使用pip install openpyxl命令来安装它。

该回答通过自己思路及引用到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。你需要根据实际情况修改这些文件名和工作表名。

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

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


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

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

该内容引用文心一言:
你可以使用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库的更高级的特性,这可能需要一些额外的工作。

使用 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)