在 Excel 中使用 Python 自动填充公式

excel,python · 浏览次数 : 12

小编点评

本文介绍了如何使用 Python 中的 openpyxl 库和Translator 类来向下填充 Excel 文件中指定公式。具体步骤如下: 1. 导入必要的库:包括 openpyxl 和 Translator。 2. 定义填充公式的函数,接受文件路径、工作表名称、起始行、起始列和列数作为参数。 3. 获取起始单元格的公式并循环处理每一列。 4. 从起始行的下一行开始,使用 Translator 类更新公式并填充到列的其余单元格。 5. 保存修改后的 Excel 文件。 通过以上步骤,可以实现在不依赖网络连接的情况下,快速在国内镜像源填充 Excel 文件中的公式。

正文

安转Python包的国内镜像源

清华大学
https://pypi.tuna.tsinghua.edu.cn/simple
 
阿里云
https://mirrors.aliyun.com/pypi/simple/
 
豆瓣
https://pypi.douban.com/simple/ 
 
百度云
https://mirror.baidu.com/pypi/simple/
 
中科大
https://pypi.mirrors.ustc.edu.cn/simple/
 
华为云
https://mirrors.huaweicloud.com/repository/pypi/simple/
 
腾讯云
https://mirrors.cloud.tencent.com/pypi/simple/

准备工作

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

pip install openpyxl

步骤 1:导入必要的库

首先,我们需要导入 openpyxl 库中的 load_workbookTranslator 类。

from openpyxl import load_workbook
from openpyxl.formula.translate import Translator

步骤 2:定义填充公式的函数

接下来,我们定义一个名为 fill_down_formulas 的函数。这个函数接受以下参数:

  • filepath:Excel 文件的路径。
  • sheetname:工作表名称。
  • start_row:开始填充公式的行号。
  • start_column:开始填充公式的列号。
  • num_columns:需要填充公式的列数。
def fill_down_formulas(filepath, sheetname, start_row, start_column, num_columns):
    try:
        # 加载 Excel 文件
        wb = load_workbook(filename=filepath)
        ws = wb[sheetname]

步骤 3:获取起始单元格的公式

在指定的列范围内,我们首先获取起始单元格的公式。

        # 循环处理每一列
        for column_index in range(start_column, start_column + num_columns):
            # 获取起始单元格的公式
            formula = ws.cell(row=start_row, column=column_index).value
            print(f"原始公式 ({start_row}, {column_index}):", formula)

步骤 4:向下填充公式

从起始行的下一行开始,我们将公式填充到该列的其余单元格中。这里使用 Translator 类来更新公式。

            # 从起始行开始填充公式
            for row in range(start_row + 1, ws.max_row + 1):
                # 获取起始单元格和当前单元格的坐标
                start_coordinate = ws.cell(row=start_row, column=column_index).coordinate
                current_coordinate = ws.cell(row=row, column=column_index).coordinate
                print("起始坐标:", start_coordinate)
                print("当前坐标:", current_coordinate)

                # 使用 Translator 解析并更新公式
                translated_formula = Translator(formula, origin=start_coordinate).translate_formula(current_coordinate)
                print("翻译后的公式:", translated_formula)
                ws.cell(row=row, column=column_index).value = translated_formula

步骤 5:保存修改后的 Excel 文件

填充完公式后,保存修改后的 Excel 文件。

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功向下填充公式到第 {start_column} 列到第 {start_column + num_columns - 1} 列,起始行 {start_row}")
    except Exception as e:
        print(f"填充公式时出错: {e}")

步骤 6:执行脚本

在脚本的最后,我们指定 Excel 文件路径、工作表名称、起始行、起始列和列数,并调用 fill_down_formulas 函数。

if __name__ == "__main__":
    # 指定 Excel 文件路径、工作表名、起始行、起始列和列数
    excel_file_path = "C:\\Users\\Administrator\\Desktop\\销售系数数据同步.xlsx"
    sheet_name = "商品费用"
    start_row = 2  # 指定起始行
    start_column = 47  # 指定起始列
    num_columns = 7  # 指定要填充公式的列数

    # 调用函数将公式向下填充到指定列和起始行之后
    fill_down_formulas(excel_file_path, sheet_name, start_row, start_column, num_columns)

完整代码

from openpyxl import load_workbook
from openpyxl.formula.translate import Translator

def fill_down_formulas(filepath, sheetname, start_row, start_column, num_columns):
    try:
        # 加载 Excel 文件
        wb = load_workbook(filename=filepath)
        ws = wb[sheetname]

        # 循环处理每一列
        for column_index in range(start_column, start_column + num_columns):
            # 获取起始单元格的公式
            formula = ws.cell(row=start_row, column=column_index).value
            print(f"原始公式 ({start_row}, {column_index}):", formula)

            # 从起始行开始填充公式
            for row in range(start_row + 1, ws.max_row + 1):
                # 获取起始单元格和当前单元格的坐标
                start_coordinate = ws.cell(row=start_row, column=column_index).coordinate
                current_coordinate = ws.cell(row=row, column=column_index).coordinate
                print("起始坐标:", start_coordinate)
                print("当前坐标:", current_coordinate)

                # 使用 Translator 解析并更新公式
                translated_formula = Translator(formula, origin=start_coordinate).translate_formula(current_coordinate)
                print("翻译后的公式:", translated_formula)
                ws.cell(row=row, column=column_index).value = translated_formula

        # 保存修改后的 Excel 文件
        wb.save(filepath)
        print(f"成功向下填充公式到第 {start_column} 列到第 {start_column + num_columns - 1} 列,起始行 {start_row}")
    except Exception as e:
        print(f"填充公式时出错: {e}")

if __name__ == "__main__":
    # 指定 Excel 文件路径、工作表名、起始行、起始列和列数
    excel_file_path = "C:\\Users\\Administrator\\Desktop\\销售系数数据同步.xlsx"
    sheet_name = "商品费用"
    start_row = 2  # 指定起始行
    start_column = 47  # 指定起始列
    num_columns = 7  # 指定要填充公式的列数

    # 调用函数将公式向下填充到指定列和起始行之后
    fill_down_formulas(excel_file_path, sheet_name, start_row, start_column, num_columns)

 

与在 Excel 中使用 Python 自动填充公式相似的内容:

在 Excel 中使用 Python 自动填充公式

安转Python包的国内镜像源 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple 阿里云 https://mirrors.aliyun.com/pypi/simple/ 豆瓣 https://pypi.douban.com/simple/ 百度云 https

#Python merge函数,pandas库数据查询功能,对标V-LOOKUP

日常办公中,我们经常会遇到需要匹配表,匹配对应数据的场景,在EXCEL中,我们习惯使用VLOOKUP函数或者是X-LOOKUP函数,今天学习的是Python,pandas库中的匹配功能。 首先导入所需的pandas库。 import pandas as pd 用到的模拟数据共三张表,分别是销售表,区

如何保留 Excel 表头和第一行数据并追加 CSV 数据

准备工作 在开始之前,确保你的 Python 环境中已经安装了 openpyxl 和 pandas 库。可以使用以下命令进行安装: pip install openpyxl pandas 第一步:编写函数保留表头和第一行数据 我们首先编写一个函数 keep_first_two_rows,用于保留指定

#PowerBi 1分钟学会,在excel中,调用powerbi数据模型(Analyze in Excel插件)

在工作中,我们常常使用excel来进行临时的数据处理服务,如果我们在powerbi中,已经有了完整的数据模型。 那么我们都可以通过直接调用powerbi数据模型,来进行快速的数据分析,完成任务。 今天我们就介绍一下,如何在excel中调用powerbi数据模型。 第一步:下载插件 输入以下网址,进入

如何使用JavaScript实现在线Excel附件的上传与下载?

前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Excel中附带一些Word,CAD图等等。同样的,类比到Web端,现在很多人用的在线Excel是否也可以像本地一样实现附件文件的操作呢?答案是肯定的,不过和本地不同的是,Web端不会直接打开附件,而是使用超链接单

C# 在Excel中添加、应用或删除筛选器 (日期筛选、文本筛选、数字筛选)

自动筛选器是 Excel 中的一个基本但极其有用的功能,它可以让你根据特定的条件来自动隐藏和显示你的数据。当有大量的数据需要处理时,这个功能可以帮你快速找到你需要的信息,从未更加有效地分析和处理相关数据。 下面将介绍如何使用免费.NET Excel库在Excel中添加、应用和删除自动筛选器。包含以下

JavaScript能否实现在线Excel附件的上传与下载?

>摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 在本地使用Excel时,经常会有需要在Excel中添加一些附件文件的需求,例如在Ex

SpreadJS集算表联动数据透视表,高效实现前端数据多维分析

本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 在做一些财务、供应链、资产管理等系统时,由于业务人员线下都是采用Excel来完成的,因此就需要将Excel中业务人员使用的功能都能在Web端系统实现,整体上的实现方案有

在线Excel的计算函数引入方法有哪些?提升工作效率的技巧分享!

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 在日常生活和工作中,我们都会或多或少的使用Excel中的计算公式函数,比如求和公式

高效数据管理:Java助力实现Excel数据验证

摘要:本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 前言 在Java中,开发者可以使用一些开源的库(如Apache POI)来添加、修改和处理Excel中的数据:包括数字、文本、日期、列表等。每种数据验证类型都具有不同的参