「编程」python自动办公——Excel自动生成统计报表
import xlrd import xlwt from xlutils.copy import copy x1sx=x1rd.open_workbook('d:/7月下句入库表.xlsx) table=x1sx.sheet_by_index(4) all_data=[] for n in range(1,table.nrows): //nrows为excel中的行 company=table.cell(n,1).value price=table.cell(n,3).value weight= table.cel1(n,4).value data={'company':company,'weight':weight,'price':price) all_data.append(data) #以下内容可以用pandas的groupby轻易实现,这里不引入新知识,使用一个笨办法a_weight=[] a_total_price=[] b weight=[] b_total_price=[] c_weight=[] c_total_price=[] d_weight=[] d_total_price=[] //循环统计 for i in all data: if i['company']=='张三粮配': a_weight.append(i['weight']) a_total_price.append(i['weight']*i['price']) if it'company']=='李四粮食': b_weight,append(i['weight]) b_total_price.append(i['weight']*i['price']) if i[company']=='王五小麦': c_weight.append(i['weight]) c_total_price.append(i['weight']*i['price']) if i['company']==‘赵六麦子专营”: d_weight.append(i['weight]) d_total_price.append(i['weight']*i['price']) //新建表 tem_excel=x1rd.open_workbook("D:/统计表_模板.x1s',formatting_info=True) tem_sheet=tem_excel.sheet_by_index(0) new_excel=copy(tem_excel) new_sheet=new_excel.get_sheet(0) style=x1wt.XFstyle() //字体样式 font=xlwt.Font() font.name='微软雅黑' font.bold=True font.height=360 style.font=font //边框 borders =xlwt.Borders() borders.top=xlwt.Borders.THIN borders.bottom =xlwt.Borders.THIN borders.left =xlwt.Borders.THIN borders.right =xlwt.Borders.THIN style.borders=borders //对齐 alignment =xlwt.Alignment() alignment.horz=xlwt.Alignment.HORZ_CENTER alignment.vert=xlwt.Alignment.VERT_CENTER style.alignment=alignment //填充数据 new_sheet. write(2,1, len(a_weight), style) new_sheet. write(2,2, round(sum(a_weight),2), style) new_sheet, write(2,3, round(sum(a_total_price),2), style) new_sheet. write(3,1, len(b_weight), style) new_sheet. write(3,2, round(sum(b_weight),2), style) new_sheet. write(3,3, round(sum(b_total_price),2), style) new_sheet. write(4,1, len(c_weight), style) new sheet. write(4,2, round(sum(c_weight),2), style) new_sheet. write(4,3, round(sum(c_total_price),2), style) new_sheet. write(5,1, len(d_weight), style) new_sheet. write(5,2, round(sum(d_weight),2), style) new_sheet. write(5,3, round(sum(d_total_price),2), style)