使用 Gemini 及 Python 更新 Android 多语言 Excel 文件

1. 概述

使用 Gemini 结合 Python 脚本从多份表中提取所需数据更新到对应表中。

2. 准备

将所有数据汇总到的 data.xlsx 文件,其中 Sheet0 是待处理的表,其余表为更新数据源。

Sheet0、Sheet1 中 标红位置 为待更新 错误数据。

Sheet2 中包含剩余正确数据。

3. 向 Gemini 提问

Gemini

提问内容:

使用 Python 找出 除了 Sheet0 之外其他所有 Sheet 中 zh 列 中完全相同的字符串的项,最新相同项所在行的的其他列项数据与 Sheet0 中对应列名列项数据比对,不相同的项则直接覆盖 Sheet0 中对应项,更新过的项背景标记为黄色

得到的回答:

python 复制代码
import openpyxl
from openpyxl.styles import PatternFill
import os


def sync_excel_data(file_path):
    file_dir, file_name = os.path.split(file_path)
    file_base, file_ext = os.path.splitext(file_name)
    # 保存更新后的 DataFrame 到新文件(或覆盖原文件)
    output_file_path = os.path.join(file_dir, f"{file_base}_updated{file_ext}")
    """
    同步 Excel 工作表数据到 Sheet0。
    
    参数:
    output_file_path (str): Excel 文件的路径。
    """
    try:
        workbook = openpyxl.load_workbook(file_path)
    except FileNotFoundError:
        print(f"错误:找不到文件 {file_path}")
        return

    # 设置黄色填充样式
    yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

    # 获取 Sheet0
    if 'Sheet0' not in workbook.sheetnames:
        print("错误:文件中不存在名为 'Sheet0' 的工作表。")
        return
    sheet0 = workbook['Sheet0']

    # 创建一个字典来存储 Sheet0 的数据,以便快速查找
    sheet0_data = {}
    header = [cell.value for cell in sheet0[1]]  # 假设第一行是表头
    try:
        zh_col_index = header.index('zh')
    except ValueError:
        print("错误:'Sheet0' 中没有 'zh' 列。")
        return

    for row in sheet0.iter_rows(min_row=2):
        zh_value = row[zh_col_index].value
        if zh_value is not None:
            sheet0_data[zh_value] = [cell for cell in row]

    # 累计更新单元格个数
    updated_count = 0
    # 遍历除 Sheet0 以外的所有工作表
    for sheet_name in workbook.sheetnames:
        if sheet_name == 'Sheet0':
            continue

        print(f"正在同步工作表:{sheet_name}...")
        current_sheet = workbook[sheet_name]

        # 获取当前工作表的 'zh' 列索引
        try:
            current_header = [cell.value for cell in current_sheet[1]]
            current_zh_col_index = current_header.index('zh')
        except ValueError:
            print(f"警告:工作表 '{sheet_name}' 中没有 'zh' 列,跳过。")
            continue

        # 遍历当前工作表的数据行
        for row in current_sheet.iter_rows(min_row=2):
            zh_value_to_match = row[current_zh_col_index].value

            if zh_value_to_match in sheet0_data:
                sheet0_row = sheet0_data[zh_value_to_match]

                # 遍历所有列,比对并同步数据
                for col_index, sheet0_cell in enumerate(sheet0_row):
                    # 确保索引在当前行范围内
                    if col_index < len(row):
                        current_sheet_cell = row[col_index]

                        # 忽略 'zh' 列,只比对其他列
                        if current_header[col_index] != 'zh' and sheet0_cell.value != current_sheet_cell.value:
                            last_value = sheet0_cell.value
                            sheet0_cell.value = current_sheet_cell.value
                            sheet0_cell.fill = yellow_fill
                            updated_count += 1
                            print(f"更新单元格 {last_value} -> {current_sheet_cell.value}")

    # 保存更改
    try:
        workbook.save(output_file_path)
        print(f"数据更新完成,共更新了 {updated_count} 个单元格,新文件已保存为:{output_file_path} ")
    except Exception as e:
        print(f"错误:保存文件时出错 - {e}")


# 示例调用
if __name__ == '__main__':
    # 替换 'data.xlsx' 为您的文件路径
    input_path = 'data.xlsx'
    sync_excel_data(input_path)

优化提问:

优化上面的提问文案

得到的回答:

方案一:简洁明了型

使用 Python 找出并更新 Excel 文件中重复的数据。

具体需求:

  • Sheet0 之外的所有工作表中,找到与 Sheet0"zh" 列完全相同的项。
  • 将最新找到的相同项所在行的其他列数据,与 Sheet0 中对应的数据进行比对。
  • 如果数据不一致,则用最新的数据覆盖 Sheet0 中的旧数据。
  • 将所有更新过的单元格背景标记为黄色。

方案二:项目需求型

项目目标:Python 脚本自动同步 Excel 工作表数据。

需求详情:

  1. 数据比对 :遍历 Excel 文件中除 Sheet0 以外的所有工作表。
  2. 匹配条件 :以 "zh" 列作为唯一标识,找到与 Sheet0 中完全匹配的行。
  3. 内容同步 :如果匹配行的其他列数据与 Sheet0 不符,则覆盖 Sheet0 中的数据。
  4. 可视化标记:自动将所有被更新的单元格填充为黄色,以便识别。

方案三:更口语化、直接型

帮我用 Python 写个脚本,来整理我的 Excel 表。

我想让它做三件事:

  1. 先看 Sheet0,然后去检查其他所有表格。
  2. 只要在其他表格里找到 "zh" 列和 Sheet0 里一模一样的项,就把那一行的数据拿过来。
  3. 对比一下,如果其他列的数据不一样,就用新数据把 Sheet0 里的旧数据换掉,并且把改过的地方涂成黄色。

4. 使用 Python 执行脚本

得到输出文件 data_updated.xlsx

参考资料

Gemini
Python

相关推荐
coder_pig42 分钟前
🤡 公司Android老项目升级踩坑小记
android·flutter·gradle
集成显卡2 小时前
使用 Google 开源 AI 工具 LangExtract 进行结构化信息抽取
python·google·openai
久笙&2 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python·架构
死就死在补习班2 小时前
Android系统源码分析Input - InputReader读取事件
android
死就死在补习班2 小时前
Android系统源码分析Input - InputChannel通信
android
死就死在补习班2 小时前
Android系统源码分析Input - 设备添加流程
android
死就死在补习班2 小时前
Android系统源码分析Input - 启动流程
android
不甘懦弱2 小时前
阿里云搭建flask服务器
服务器·python·flask
赵英英俊2 小时前
Python day51
人工智能·pytorch·python
tom4i2 小时前
Launcher3 to Launchpad 01 布局修改
android