在 Excel 中使用 Python 自动填充公式
安转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_workbook 和 Translator 类。
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 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用
EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用 在不想变的单元格前加$符号(列标和列数,两个都要加$),变成绝对引用,默认情况是相对引用 L4固定不变的方式:$L$4 M4固定不 ...
- vim中设置Python自动补全
转自:http://blog.csdn.net/wangzhuo_0717/article/details/6942428 在VIM里面增加python的autocomplete功能的做法如下: 1. ...
- [转载]启用 VIM 中的 Python 自动补全及提示功能
转载: http://zhongwei-leg.iteye.com/blog/941474 周围的同事不喜欢使用 VIM 写 Python 代码的原因之一就是,VIM 不能像 Visual Studi ...
- Excel中不常用的一些公式用法
INDIRECT函数 http://baike.baidu.com/view/3222185.htm 用于使用单元格内容拼凑公式的情况. 1.采用 [工作表名]!单元格名 的形式读取内容: 2.所 ...
- excel中如何取消自动超链接?
最近做的表格有点多,年终述职也到了.总有一些地方生疏了,幸好还有点小印象.记录下来,以后可以回来看看. 方法一 适合单个链接的取消 1 输入网址后,按回车键确认,快捷键ctrl+z,即可取消,这种不好 ...
- 关于ThinkPHP中的时间自动填充
<?php class NewsModel extends Model{ protected $_auto = array( array('time_at','mydate','1','call ...
- excel匹配相应条件 自动填充数据
=VLOOKUP(A6&B6,IF({1,0},Sheet3!$A$3:$A$505&Sheet3!$B$3:$C$505,Sheet3!$Q$3:$Q$505),2,0) =VLOO ...
- ThinkPHP中的时间自动填充 无法获取时间
protected $_auto = array( array('addTime','time','1','function'), ); addTime在数据库里的的类型必须为int ...
- EXCEL中汉字转大写拼音
最近一直没有什么成系统的学习东西,也就没写什么随笔.昨天晚上,一哥们儿说给弄个输入汉字直接转拼音的程序,问了他几点需求,说你想做个啥的,最后,他说想做个EXCEL的,现在发现EXCEL确实是个好东西啊 ...
- word表格如何实现序号自动填充
打开word文档,我们需要在如下表格中的准考证号这一列中输入准考证号,手工输入肯定很慢,且容易出错. 我们先选中需要填充准考证号的表格. 选择功能区域中的“开始”,在“段落”组中点击“编号”按 ...
随机推荐
- flask通过线程池实现异步
from flask import Flask from time import sleep from concurrent.futures import ThreadPoolExecutor # D ...
- JavaScript中字符串小知识
1. 字符串是不可变的 字符串一旦创建就是不可变的,后续的修改都是新建一个新的字符串而不是在原有的字符串上修改 // 在内存中开辟 可以存放五个字母的空间 str指向该空间 let str = 'fi ...
- mac版本vscode窗口崩溃crashed
1.截图 出现时机 当安装依赖的时候大概率会出现,甚至安装一次依赖会出现几次 解决 具体原因未知 重新启动电脑以及退出软件都不能解决 去官网重新下载,重新安装问题解决
- Oracle SQL 常用的将varchar数据处理成number的正则
Oracle SQL 常用的数据处理正则 去除所有的空格 replace(t.dxmz,chr(32),'') 匹配非纯数字 not regexp_like(t.zgbs,'^[[:digit:]]* ...
- 力扣5(java)-最长回文串(中等)
题目: 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad"输出:"bab"解释:"aba" 同样是符 ...
- 基于链路思想的SpringBoot单元测试快速写法
简介:本文更偏向实践而非方法论,所提及的SpringBoot单元测试写法亦并非官方解,仅仅是笔者自身觉得比较方便.效率较高的一种写法.每个团队甚至团队内的每位开发可能都有自己的写法习惯和风格,只要能 ...
- 基于 ASK + EB 构建容器事件驱动服务
简介:本篇文章以"在线文件解压场景"为例为大家展示经典 EDA 事件驱动与容器如何搭配使用. 作者:冬岛.肯梦 导读 EDA 事件驱动架构( Event-Driven Archit ...
- Apsara Stack 2.0技术百科(9宫格)
原文链接 本文为阿里云原创内容,未经允许不得转载.
- 2019-8-31-C#-简单读取文件
title author date CreateTime categories C# 简单读取文件 lindexi 2019-08-31 16:55:58 +0800 2018-07-19 16:48 ...
- gitlab-ce-15.9.4安装
如果需要汉化版本,请根据汉化来选择版本 汉化包下载地址:https://gitlab.com/xhang/gitlab/ 1.依赖包安装 yum -y install policycoreutils- ...