安转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 自动填充公式的更多相关文章

  1. EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用

    EXCEL 如何实现下拉填充公式,保持公式部分内容不变,使用绝对引用 在不想变的单元格前加$符号(列标和列数,两个都要加$),变成绝对引用,默认情况是相对引用 L4固定不变的方式:$L$4 M4固定不 ...

  2. vim中设置Python自动补全

    转自:http://blog.csdn.net/wangzhuo_0717/article/details/6942428 在VIM里面增加python的autocomplete功能的做法如下: 1. ...

  3. [转载]启用 VIM 中的 Python 自动补全及提示功能

    转载: http://zhongwei-leg.iteye.com/blog/941474 周围的同事不喜欢使用 VIM 写 Python 代码的原因之一就是,VIM 不能像 Visual Studi ...

  4. Excel中不常用的一些公式用法

    INDIRECT函数 http://baike.baidu.com/view/3222185.htm 用于使用单元格内容拼凑公式的情况. 1.采用  [工作表名]!单元格名  的形式读取内容: 2.所 ...

  5. excel中如何取消自动超链接?

    最近做的表格有点多,年终述职也到了.总有一些地方生疏了,幸好还有点小印象.记录下来,以后可以回来看看. 方法一 适合单个链接的取消 1 输入网址后,按回车键确认,快捷键ctrl+z,即可取消,这种不好 ...

  6. 关于ThinkPHP中的时间自动填充

    <?php class NewsModel extends Model{ protected $_auto = array( array('time_at','mydate','1','call ...

  7. 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 ...

  8. ThinkPHP中的时间自动填充 无法获取时间

    protected $_auto = array(       array('addTime','time','1','function'),    ); addTime在数据库里的的类型必须为int ...

  9. EXCEL中汉字转大写拼音

    最近一直没有什么成系统的学习东西,也就没写什么随笔.昨天晚上,一哥们儿说给弄个输入汉字直接转拼音的程序,问了他几点需求,说你想做个啥的,最后,他说想做个EXCEL的,现在发现EXCEL确实是个好东西啊 ...

  10. word表格如何实现序号自动填充

    打开word文档,我们需要在如下表格中的准考证号这一列中输入准考证号,手工输入肯定很慢,且容易出错.   我们先选中需要填充准考证号的表格.   选择功能区域中的“开始”,在“段落”组中点击“编号”按 ...

随机推荐

  1. win10更新后使用ie浏览器自动跳转edge的解决方法

    win10更新后使用ie浏览器自动跳转edge的解决方法 ①在系统的搜索框中搜索internet选项 ②打开界面中,选择高级的栏位 ③然后在红框的地方找到启用第三方浏览器扩展,去掉勾选 ④应用,确定, ...

  2. K8s场景下Logtail组件可观测方案升级-Logtail事件监控发布

    简介: SLS针对Logtail本身以及Logtail的管控组件alibaba-log-controller,采用K8s事件的方式,将处理流程中的关键事件透出,从而让用户能够更清楚的感知其中发生的异常 ...

  3. 阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台

    简介: 作为入选阿里云首期云原生加速器的企业,硬之城此前也获得了阿里云首批产品生态集成认证,通过云原生加速器项目携手阿里云共建更加丰富的云原生产业生态圈,加速云原生落地. 作者 | 陈泽涛(硬之城产品 ...

  4. 一个 Blink 小白的成长之路

    写在前面 写过blink sql的同学应该都有体会,明明写的时候就很顺滑,小手一抖,洋洋洒洒三百行代码,一气呵成.结果跑的时候,吞吐量就是上不去.导致数据延迟高,消息严重积压,被业务方疯狂吐槽.这时候 ...

  5. JDBC 在性能测试中的应用

    简介: 我们能否绕开 http 协议,直接测试数据库的性能?是否觉得从数据库中导出 CSV 文件来构造压测数据很麻烦?怎样在压测结束后做数据清理?能不能通过数据库中的插入(删除)记录对压测请求做断言? ...

  6. 阿里巴巴在开源压测工具 JMeter 上的实践和优化

    简介:Apache JMeter 是 Apach 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史.JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一. 作者: ...

  7. 浅谈分布式一致性:Raft 与 SOFAJRaft

    简介: SOFAJRaft已开源 作者 | 家纯来源 | 阿里技术公众号 一 分布式共识算法 (Consensus Algorithm) 1 如何理解分布式共识? 多个参与者针对某一件事达成完全一致: ...

  8. [Pholcus] Go项目 Pholcus 编写静态规则文件, 0 到 1

    1. 初始化项目包,go mod init [module-path] 比如:go mod init github.com/abc/efg 2. 新建一个目录放置我们编写的规则 go 文件. 3. m ...

  9. dotnet C# 通过 Vortice 使用 Direct2D 的 ID2D1CommandList 入门

    本文将告诉大家如何通过 Vortice 使用 D2D 的 CommandList 功能 本文属于 DirectX 系列博客,更多 DirectX 和 D2D 以及 Vortice 库的博客,请参阅我的 ...

  10. 2018-2-13-win10-uwp-右击选择-GridViewItem-

    title author date CreateTime categories win10 uwp 右击选择 GridViewItem lindexi 2018-2-13 17:23:3 +0800 ...