小姐姐又打来了求助电话 姐姐电话来啦

第二天,晚上 。正在我百无聊赖之际,小姐姐打来了电话 。语气里满是无奈 。
我连忙问怎么回事?
小姐姐幽幽地说:“领导让改表格格式 。”还绘声绘色地给我演绎了一下她领导的那番话 。
领导是这样说的:“小丽(化名)啊,你这个EXCEL弄得挺快啊,一天就弄好了,是不是很累啊?眼睛不疲劳吧?”
【小姐姐又打来了求助电话 姐姐电话来啦】小丽以为是在夸自己呢,美滋滋地说:”份内的事 。“
领导立马话锋一转,说:“你眼睛不累,我看着这365个文档眼花头大啊,光打开和关闭,我不得累死啊 。”
小姐姐一听,敢情这是在批评自己呢,还用了自己当初跟我说的词,心里那个郁闷啊 。但表面上还是赔不是,答应尽快弄到一个EXCEL里 。
这不,这会儿打电话给我来求救了 。
我说:“小事情啊 。我来搞定 。”
小姐姐在那头直接笑开了花,声音清脆而美好的从手机里传来 。
我也话锋一转:“怎么报答我啊?”
她不假思索地说:“随你!”
我说:“一顿麻辣烫!”
小姐姐说:“好的,先欠着 。”
放下电话,我便一阵搜索,照猫画虎,把Python自动合并EXCEL并绘图给搞定了 。
先上图,最后放代码 。明天发给小姐姐 。
每个EXCEL内的样子:

小姐姐又打来了求助电话 姐姐电话来啦

文章插图
每个EXCEL长这样
小姐姐又打来了求助电话 姐姐电话来啦

文章插图
合并后的样子
小姐姐又打来了求助电话 姐姐电话来啦

文章插图
GIF动画
代码如下:
from openpyxl import Workbook, load_workbookfrom openpyxl.chart import BarChart, Referencefrom openpyxl.styles import Font, Color, Alignment, Border, Sidefrom openpyxl.styles import PatternFillfrom openpyxl.chart.layout import Layout, ManualLayoutdouble_border_side = Side(border_style="double")def add_a_sum(sheet, at='B9', column=2, min_col=2, max_col=8):### 求和(被求和项标记为红色):sumv=0.0for m in range(min_col, max_col+1, 1):sumv += sheet.cell(row=m, column=column).valuesheet[at[0:1]+str(m)].font = Font(color="00FF0000")sheet[at]= sumv### 设置“和”的单元格类型:sheet[at].font = Font(size=15)sheet[at].alignment = Alignment(horizontal="center")sheet[at].border = Border(top=double_border_side,right=double_border_side,bottom=double_border_side,left=double_border_side)sheet[at].fill = PatternFill(start_color='f8c471',end_color='f8c471',fill_type = "solid")### 循环处理文件:workbook_out = Workbook()sheet_out= workbook_out.active# sheetrows = [["产品", "线上", "店铺"]]for row in rows:sheet_out.append(row)isheet=0for i in range(0, 10, 1):isheet+= 1workbook = load_workbook(filename="exam"+str(isheet)+".xlsx")sheet = workbook.activerows = [[1, sheet.cell(row=2, column=2).value, sheet.cell(row=2, column=3).value],[2, sheet.cell(row=3, column=2).value, sheet.cell(row=3, column=3).value],[3, sheet.cell(row=4, column=2).value, sheet.cell(row=4, column=3).value],[4, sheet.cell(row=5, column=2).value, sheet.cell(row=5, column=3).value],[5, sheet.cell(row=6, column=2).value, sheet.cell(row=6, column=3).value],[6, sheet.cell(row=7, column=2).value, sheet.cell(row=7, column=3).value],[7, sheet.cell(row=8, column=2).value, sheet.cell(row=8, column=3).value],["","",""],]workbook.close()for row in rows:sheet_out.append(row)### 添加求和:if isheet==1:xn = str(isheet*9)else:xn = str(9 + (isheet-1)*8)print('A'+xn, 2+i*8, 8+i*8)sheet_out['A'+xn]='总量:'add_a_sum(sheet_out, at='B'+xn, column=2, min_col=2+i*8, max_col=8+i*8)add_a_sum(sheet_out, at='C'+xn, column=3, min_col=2+i*8, max_col=8+i*8)### 绘制图:chart = BarChart()data = https://www.goobye.net/Reference(worksheet=sheet_out, min_row=2+i*8, max_row=8+i*8,min_col=2, max_col=3)chart.add_data(data)#, titles_from_data=True)chart.x_axis.title ="产品"chart.y_axis.title = ""### 可选类型 1 到 48chart.style = 2chart.height = 5chart.width = 10"""chart.layout = Layout(ManualLayout(x=0.25, y=0.05,h=0.5, w=0.5,xMode="edge",yMode="edge",))"""sheet_out.add_chart(chart, "E"+str(2+i*8))workbook_out.save('all.xlsx')