需求

原始表格:

想在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求和、合并居中的操作相关推荐

  1. python对excel数据求和_python对excel文档去重及求和的实例

    废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了 间接说明自己对可变与不可变类型的了解,还是不够透彻 最后就用了个笨方法解决了! #cod ...

  2. python处理excel文件求和_python对excel文档去重及求和的实例

    废话不多说,估计只有我这个菜鸟废了2个小时才搞出来,主要是我想了太多方法来实现,最后都因为这因为那的原因失败了 间接说明自己对可变与不可变类型的了解,还是不够透彻 最后就用了个笨方法解决了! #cod ...

  3. 用python实现excel 14个常用操作_用Python实现excel 14个常用操作

    自从学了Python后就逼迫自己不用Excel,所有操作用Python实现.目的是巩固Python,与增强数据处理能力.这也是我写这篇文章的初衷.废话不说了,直接进入正题. 数据是网上找到的销售数据, ...

  4. python自动化办公教程-python办公自动化:Excel操作入门

    1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python s ...

  5. Python入门到实战(五)自动化办公、pandas操作Excel、数据可视化、绘制柱状图、操作Word、数据报表生成、pip install国内镜像下载

    Python入门到实战(五)conda使用.pandas操作Excel.数据可视化.绘制柱状图.操作Word.数据报表生成.pip install国内镜像下载 conda使用 常用操作 配置VS+Co ...

  6. python 办公自动化 视频教程_python办公自动化:Excel操作入门

    1.安装 pip install xlsxwriter or easy_install xlsxwriter or tar -zxvf xlsxwriter-*.*.*.tar.gz python s ...

  7. python 表格格式输出_利用python对excel中一列的时间数据更改格式操作

    问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...

  8. python菜鸟excel教程-Python菜鸟之路: 封装通用excel操作

    前言 最近工作常要干些excel导入导出的活,用python来做最方便,写的多了,就想封装下读写的操作,后续通用,python菜鸟,大佬轻喷(不服可以来写Java ....当我没说) 设计 1.pyt ...

  9. excel调用python编程-使用Python对Excel进行读写操作

    学习Python的过程中,我们会遇到Excel的读写问题.这时,我们可以使用xlwt模块将数据写入Excel表格中,使用xlrd模块从Excel中读取数据.下面我们介绍如何实现使用Python对Exc ...

最新文章

  1. Mybatis-Plus 支持分库分表了?-官方神器发布!
  2. 2021年春季学期-信号与系统-第二次作业参考答案
  3. 从无到有:微信后台系统的演进之路
  4. 不错php文件缓存类,一个不错的PHP文件页面缓存类
  5. mysql数据库元表_mysql中元数据库information_schema学习之TABLES表
  6. python需要配置环境变量吗_python为什么会环境变量设置不成功
  7. 【java笔记】线程(4):匿名内部类创建线程
  8. Java IO流学习总结(1)
  9. MySQL:unknown variable #39;master-host=masterIP#39; [ERROR] Aborting
  10. eclipse安装yuicompressor插件
  11. Topic 10. 单因素 Logistic 回归分析—单因素分析表格
  12. 【JAVA长虹键法】第一式 初识设计模式(23种设计模式)
  13. 经典动漫秒变高清,需要怎么做?
  14. 券商卖的雪球票息高,券商赚的什么钱?(雪球原理入门)
  15. 【ultraiso制作ubuntu启动盘(包括U盘和光盘)】
  16. 高鸿业微观经济学第7版笔记和课后习题答案
  17. 首次超越人类!“读图会意”这件事,AI比你眼睛更毒辣 | 达摩院
  18. android获取已连上热点设备名称,2、android获取连接到手机热点上的设备的信息
  19. 第4课:Scratchjr运动指令
  20. 计算机,编码,文本阅读器 一

热门文章

  1. Technodigit.3DReshaper.Meteor.v2017.MR1.Win64 1CD
  2. 细思极恐啊,哈哈哈哈哈哈
  3. 11.8-11.13
  4. cpu 分支预测对性能的影响
  5. mysql数字大小排序函数_mysql按照数字大小排序的方法
  6. mac 设置composer 环境
  7. Docker容器管理之Dockercompose.yml文件格式说明
  8. windows防火墙是干什么的_windows的防火墙
  9. 更新hdf之后无法找到接口映射
  10. 2021,移动办公再次风起