python操作excel求和,Python 对Excel求和、合并居中的操作
需求
原始表格:
想在Total列中对每日的Amount进行汇总,然后对Date和Total进行合并居中,效果如下:
思路
遍历Excel行,从第一个非空Date列开始,到下个非空Date列,对Amount列进行求和,结果赋给第一个非空Data列对应行的Total列。
代码
import os
import openpyxl
from openpyxl.styles import Border, Side, PatternFill, Font, GradientFill, Alignment
def range_sum(worksheet,start,end):
sum = 0
for row in worksheet[start:end]:
for cell in row:
if cell.value != None:
sum += cell.value
return sum
def is_blank_row(worksheet,row_num,max_col=None):
if not max_col:
max_col = worksheet.max_column
for cell in worksheet[row_num][:max_col]:
if cell.value:
return False
return True
def total_amount(worksheet):
""" 对某sheet的A、E列合并居中,并对E列求和 """
ws = worksheet
row, max_row = 4, ws.max_row
while row < ws.max_row:
sum_row_start, sum_row_end = row, row
for working_row in range(row + 1,max_row + 2):
if (not is_blank_row(worksheet, working_row-1) # 上一行有值
and (ws[f'A{working_row}'].value or is_blank_row(worksheet, working_row))): # A列有值 或 当前为空行(最后一次合并)
# 求和
sum_row_end = working_row - 1
ws[f'E{sum_row_start}'] = range_sum(ws,f'C{sum_row_start}',f'C{sum_row_end}')
# 合并居中
ws[f'E{sum_row_start}'].alignment = Alignment(horizontal="center", vertical="center")
ws[f'A{sum_row_start}'].alignment = Alignment(horizontal="center", vertical="center")
ws.merge_cells(f'E{sum_row_start}:E{sum_row_end}')
ws.merge_cells(f'A{sum_row_start}:A{sum_row_end}')
break
row = sum_row_end + 1
def main():
# 根据情况修改代码
in_file_name = 'In.xlsx'
processing_sheet = 'Sheet1'
path_name = 'D:\\Users\\Desktop\\Temp'
out_file_name = 'Out.xlsx'
wb = openpyxl.load_workbook(filename=os.path.join(path_name,in_file_name))
total_amount(wb[processing_sheet])
wb.save(os.path.join(path_name,out_file_name))
if __name__=='__main__':
main()
说明
本功能用到了openpyxl模块,更多Excel操作请见官网
本代码不支持Excel中间有空行的情况,最后有空行无影响
f'A{sum_row_start}'这样的代码用到了f-string功能,若python版本低于3.6,需改为'A'+str(sum_row_start)或其它形式
补充:Python3 Pandas DataFrame 对某一列求和
在操作pandas的DataFrame的时候,常常会遇到某些列是字符串,某一些列是数值的情况,如果直接使用df_obj.apply(sum)往往会出错
使用如下方式即可对其中某一列进行求和
dataf_test1['diff'].sum() // diff为要求和的列
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
python操作excel求和,Python 对Excel求和、合并居中的操作相关推荐
- python对excel数据求和_python对excel文档去重及求和的实例
废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了 间接说明自己对可变与不可变类型的了解,还是不够透彻 最后就用了个笨方法解决了! #cod ...
- python处理excel文件求和_python对excel文档去重及求和的实例
废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了 间接说明自己对可变与不可变类型的了解,还是不够透彻 最后就用了个笨方法解决了! #cod ...
- 用python实现excel 14个常用操作_用Python实现excel 14个常用操作
自从学了Python后就逼迫自己不用Excel,所有操作用Python实现.目的是巩固Python,与增强数据处理能力.这也是我写这篇文章的初衷.废话不说了,直接进入正题. 数据是网上找到的销售数据, ...
- python自动化办公教程-python办公自动化:Excel操作入门
1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python s ...
- Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载
Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...
- python 办公自动化 视频教程_python办公自动化:Excel操作入门
1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python s ...
- python 表格格式输出_利用python对excel中一列的时间数据更改格式操作
问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...
- python菜鸟excel教程-Python菜鸟之路: 封装通用excel操作
前言 最近工作常要干些excel导入导出的活,用python来做最方便,写的多了,就想封装下读写的操作,后续通用,python菜鸟,大佬轻喷(不服可以来写Java ....当我没说) 设计 1.pyt ...
- excel调用python编程-使用Python对Excel进行读写操作
学习Python的过程中,我们会遇到Excel的读写问题.这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据.下面我们介绍如何实现使用Python对Exc ...
最新文章
- Mybatis-Plus 支持分库分表了?-官方神器发布!
- 2021年春季学期-信号与系统-第二次作业参考答案
- 从无到有:微信后台系统的演进之路
- 不错php文件缓存类,一个不错的PHP文件页面缓存类
- mysql数据库元表_mysql中元数据库information_schema学习之TABLES表
- python需要配置环境变量吗_python为什么会环境变量设置不成功
- 【java笔记】线程(4):匿名内部类创建线程
- Java IO流学习总结(1)
- MySQL:unknown variable #39;master-host=masterIP#39; [ERROR] Aborting
- eclipse安装yuicompressor插件
- Topic 10. 单因素 Logistic 回归分析—单因素分析表格
- 【JAVA长虹键法】第一式 初识设计模式(23种设计模式)
- 经典动漫秒变高清,需要怎么做?
- 券商卖的雪球票息高,券商赚的什么钱?(雪球原理入门)
- 【ultraiso制作ubuntu启动盘(包括U盘和光盘)】
- 高鸿业微观经济学第7版笔记和课后习题答案
- 首次超越人类!“读图会意”这件事,AI比你眼睛更毒辣 | 达摩院
- android获取已连上热点设备名称,2、android获取连接到手机热点上的设备的信息
- 第4课:Scratchjr运动指令
- 计算机,编码,文本阅读器 一
热门文章
- Technodigit.3DReshaper.Meteor.v2017.MR1.Win64 1CD
- 细思极恐啊,哈哈哈哈哈哈
- 11.8-11.13
- cpu 分支预测对性能的影响
- mysql数字大小排序函数_mysql按照数字大小排序的方法
- mac 设置composer 环境
- Docker容器管理之Dockercompose.yml文件格式说明
- windows防火墙是干什么的_windows的防火墙
- 更新hdf之后无法找到接口映射
- 2021,移动办公再次风起