批量提取一个工作簿中所有工作表的特定数据

我想批量提取一个工作簿中所有工作表的特定数据,但是提示错误: raise KeyError(key) from err KeyError: '产品名称',代码如下:
import os
import xlwings as xw
import pandas as pd # 导入pandas模块
data = [] # 创建一个空列表用于存放数据
file_path = 'e:\背包数据'
file_list = os.listdir(file_path) # 给出工作簿所在的文件夹路径
app = xw.App(visible=False, add_book=False) # 启动Excel程序
for i in file_list: # 遍历文件夹路径下的所有文件名
if i.startswith('$'): # 判断是否有文件名以“$”开头的文件
continue # 如果有,则跳过这种类型的文件
file_paths = os.path.join(file_path, i) # 将文件夹路径和文件名拼接成工作簿的完整路径
workbook = app.books.open(file_paths) # 打开要调整的工作簿
for j in workbook.sheets: # 遍历当前工作簿中的工作表
value = j['A2'].expand('table').options(pd.DataFrame).value # 读取工作表数据
filtered = value[value['产品名称'] == '背包'] # 提取“采购物 品”为“复印纸”的行数据
if not filtered.empty: # 判断提取出的行数据是否为空
data.append(filtered) # 将提取出的行数据追加到列表中
new_workbook = xw.books.add() # 新建工作簿
new_worksheet = new_workbook.sheets.add('复印纸') # 在新工作簿中新 增一个名为“复印纸”的工作表
new_worksheet.range('A2').value = pd.concat(data, ignore_index=False) # 将提取出的行数据写入工作表“复印纸”中
new_workbook.save('复印纸.xlsx') # 保存新工作簿并命名为“复印纸.xlsx”
workbook.save() # 保存当前工作簿
workbook.close() # 关闭当前工作簿
app.quit() # 退出Excel程序

我的excel数据 如下

img

请问,这个错误到底是出现在哪啊,如何解决,谢谢

改成这样试试?

import os
import xlwings as xw

data = []  # 创建一个空列表用于存放数据
file_path = 'E:\背包数据'
file_list = os.listdir(file_path)  # 给出工作簿所在的文件夹路径
app = xw.App(visible=False, add_book=False)  # 启动Excel程序
for i in file_list:  # 遍历文件夹路径下的所有文件名
    if i.startswith('~$'):  # 判断是否有文件名以“$”开头的文件
        continue  # 如果有,则跳过这种类型的文件
    print(i)
    file_paths = os.path.join(file_path, i)  # 将文件夹路径和文件名拼接成工作簿的完整路径
    workbook = app.books.open(file_paths)  # 打开要调整的工作簿
    for j in workbook.sheets:  # 遍历当前工作簿中的工作表
        print(j.name)
        data1 = j['A2'].expand('table').value  # 读取工作表数据
        # print(data1)
        # print(type(data1))
        if data1 is not None:
            for val in data1:
                # print(val)
                # print(type(val))
                if val[1] == '背包':
                    # print('*',val)
                    data.append(val)
        # filtered = value[value[2] == '背包']  # 提取“采购物 品”为“复印纸”的行数据
        # if not filtered.empty:  # 判断提取出的行数据是否为空
        #     data.append(filtered)  # 将提取出的行数据追加到列表中
    # print(data)
    new_workbook = xw.Book()  # 新建工作簿
    new_worksheet = new_workbook.sheets.add('复印纸')  # 在新工作簿中新 增一个名为“复印纸”的工作表
    new_worksheet['A2'].value = data  # 将提取出的行数据写入工作表“复印纸”中
    new_worksheet.autofit()
    new_workbook.save('复印纸.xlsx')  # 保存新工作簿并命名为“复印纸.xlsx”
    new_workbook.close()
    workbook.save()  # 保存当前工作簿
    workbook.close()  # 关闭当前工作簿
app.quit()  # 退出Excel程序