介绍
这篇文章主要介绍了Python如何实现Excel求和,合并居中的操作示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
需求
原始表格:
想在总列中对每日的数量进行汇总,然后对日期和总进行合并居中,效果如下:
思路
遍历Excel行,从第一个非空日期列开始,到下个非空日期列,对金额列进行求和,结果赋给第一个非空的数据列对应行的总列。
代码
import 操作系统 import openpyxl 得到openpyxl.styles import 边界,,,,,,PatternFill字体,,GradientFill,对齐 def range_sum(工作表,开始,结束): sum 才能=0 for 才能;row 拷贝工作表(开始:结束): ,,,for cell 拷贝行: ,,,,,if cell.value !=,没有: ,,,,,,,sum +=cell.value return 才能;和 def is_blank_row(工作表、row_num max_col=None): if 才能;not  max_col: ,,,max_col =, worksheet.max_column for 才能;cell 拷贝表[row_num] [: max_col]: ,,,if cell.value: ,,,,,return 错误的 return 才能正确 def total_amount(工作表): “““才能,对某表的,E列合并居中,并对E列求和,“““ ws 才能=工作表 行,才能,max_row =, 4, ws.max_row while 才能row & lt;, ws.max_row: ,,,,,,sum_row_start sum_row_end =,行,行 ,,,for working_row 拷贝范围(max_row  row +, - 1, +, 2): ,,,,,if (not is_blank_row(工作表,working_row-1), #,上一行有值 ,,,,,,,,以及(ws (f # 39; {working_row} & # 39;] .value 或是is_blank_row(工作表,working_row))):, #,一个列有值,或,当前为空行(最后一次合并) ,,,,,,,,,#,求和 ,,,,,,,,,sum_row_end =working_row 作用;1 ,,,,,,,,,ws (f # 39; E {sum_row_start} & # 39;],=, range_sum (ws, f # 39; C {sum_row_start} & # 39;, f # 39; C {sum_row_end} & # 39;) ,,,,,,,,,#,合并居中 ,,,,,,,,,ws (f # 39; E {sum_row_start} & # 39;] .alignment =,对齐(水平=癱enter",,垂直=癱enter") ,,,,,,,,,ws (f # 39; {sum_row_start} & # 39;] .alignment =,对齐(水平=癱enter",,垂直=癱enter") ,,,,,,,,,ws.merge_cells (f # 39; E {sum_row_start}: E {sum_row_end} & # 39;) ,,,,,,,,,ws.merge_cells (f # 39;一个{sum_row_start}: {sum_row_end} & # 39;) ,,,,,,,,,休息 ,,,row =, sum_row_end + 1 def main (): #才能,根据情况修改代码 时间=in_file_name 才能;& # 39;In.xlsx& # 39; 时间=processing_sheet 才能;& # 39;Sheet1& # 39; 时间=path_name 才能;& # 39;D: \ \ \ \用户桌面\ \ temp # 39; 时间=out_file_name 才能;& # 39;Out.xlsx& # 39; 时间=wb 才能;openpyxl.load_workbook(文件名=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__==& # 39; __main__ # 39;: 之前,,main () >说明
本功能用到了openpyxl模块,更多Excel操作请见官网
本代码不支持Excel中间有空行的情况,最后有空行无影响
f # 39; {sum_row_start} & # 39;这样的代码用到了f-string功能,若python版本低于3.6,需改为& # 39;一个# 39;+ str (sum_row_start)或其它形式
<强>补充:Python3熊猫DataFrame对某一列求和强>
在操作熊猫的DataFrame的时候,常常会遇到某些列是字符串,某一些列是数值的情况,如果直接使用df_obj.apply(总和)往往会出错
使用如下方式即可对其中某一列进行求和
dataf_test1 [& # 39; diff # 39;] .sum (),//, diff为要求和的列感谢你能够认真阅读完这篇文章,希望小编分享的“python如何实现Excel求和,合并居中的操作示例”这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
Python如何实现Excel求和,合并居中的操作示例