Ddddddd1999 2024-07-08 10:31 采纳率: 50%
浏览 9
已结题

我现在每日需要统计工作数据,分别登在几个工作簿里面,然后每个工作簿里面有多个工作表,我只想在一个界面输入信息,然后这些信息能自动写到对应的工作表中去

我现在每日需要统计工作数据,分别登在几个工作簿里面,然后每个工作簿里面有多个工作表,我只想在一个界面输入信息,然后这些信息能自动写到对应的工作表中去

  • 写回答

16条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-07-08 10:32
    关注

    🕖上午好,题主!目前:🟢[在线]
    📢参考通义千问、由郭老师整理提供!
    📣今日诗号:愿我如星君如月,夜夜流光相皎洁。

    我可以帮助你实现这个功能。你需要使用 Python 和 openpyxl 库来完成。下面是一个解决方案,以及解释和代码示例:

    1. 安装 openpyxl 库

    如果你还没有安装 openpyxl 库,可以使用 pip 安装:

    pip install openpyxl
    

    2. 创建主工作簿和界面

    • 创建一个新的 Excel 工作簿,作为你的主工作簿,用来输入数据。
    • 在这个工作簿中,创建一个工作表,并设计你的数据输入界面。例如:
     | 项目名称 | 日期      | 数据 1 | 数据 2 | 数据 3 |
     | -------- | --------- | ------ | ------ | ------ |
     | 项目 A   | 2023-10-27 |        |        |        |
     | 项目 B   | 2023-10-27 |        |        |        |
    

    3. 编写 Python 代码

    import openpyxl
    
    # 设置工作簿和工作表路径
    main_workbook_path = '主工作簿.xlsx'  # 替换成你的主工作簿路径
    target_workbook_paths = {
        '工作表1': '目标工作簿1.xlsx',  # 替换成你的目标工作簿路径
        '工作表2': '目标工作簿2.xlsx',  # 替换成你的目标工作簿路径
        # ... 添加更多工作表和对应的工作簿路径
    }
    
    # 加载主工作簿
    main_wb = openpyxl.load_workbook(main_workbook_path)
    main_sheet = main_wb.active
    
    # 循环读取主工作表的数据
    for row in range(2, main_sheet.max_row + 1):  # 从第二行开始读取数据
        project_name = main_sheet.cell(row=row, column=1).value
        date = main_sheet.cell(row=row, column=2).value
        data1 = main_sheet.cell(row=row, column=3).value
        data2 = main_sheet.cell(row=row, column=4).value
        data3 = main_sheet.cell(row=row, column=5).value
    
        # 根据项目名称找到对应的目标工作簿和工作表
        for sheet_name, workbook_path in target_workbook_paths.items():
            if project_name in sheet_name:  # 可以根据实际情况调整匹配规则
                target_wb = openpyxl.load_workbook(workbook_path)
                target_sheet = target_wb[sheet_name]
    
                # 找到目标工作表的下一行空行
                next_row = target_sheet.max_row + 1
    
                # 将数据写入目标工作表
                target_sheet.cell(row=next_row, column=1).value = project_name
                target_sheet.cell(row=next_row, column=2).value = date
                target_sheet.cell(row=next_row, column=3).value = data1
                target_sheet.cell(row=next_row, column=4).value = data2
                target_sheet.cell(row=next_row, column=5).value = data3
    
                # 保存目标工作簿
                target_wb.save(workbook_path)
    
    # 关闭所有工作簿
    main_wb.close()
    for workbook_path in target_workbook_paths.values():
        target_wb = openpyxl.load_workbook(workbook_path)
        target_wb.close()
    
    print("数据已成功写入目标工作表!")
    

    4. 运行代码

    将代码保存为 .py 文件,然后运行代码。代码会自动读取主工作簿中的数据,并写入到对应的目标工作簿中。

    代码解释:

    1. 代码首先导入了 openpyxl 库。
    2. 然后,设置了主工作簿和目标工作簿的路径,并使用字典存储了工作表名称和对应工作簿路径的映射关系。
    3. 接着,代码打开了主工作簿,并循环读取了主工作表中的数据。
    4. 对于每一行数据,代码根据项目名称找到了对应的目标工作簿和工作表。
    5. 最后,代码将数据写入了目标工作表,并保存了所有工作簿。

    注意事项:

    • 请将代码中的文件路径和工作表名称替换成你自己的文件路径和工作表名称。
    • 可以根据实际情况修改代码中的匹配规则,例如使用正则表达式匹配项目名称。
    • 如果目标工作簿不存在,代码会自动创建。

    希望这个解决方案对你有所帮助!如果你还有其他问题,请随时提问。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(15条)

报告相同问题?

问题事件

  • 系统已结题 7月16日
  • 已采纳回答 7月8日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误