案例:python写入excel并新增汇总页

要求:

1.生成F列=D*E

2.对该页每个大类汇总

示范:

#encoding=utf-8

'''
1,创建excel
2.填入基础数据
xlwt.Workbook()	创建一个新的Excel文件
xlwt.add_sheet(sheet_name)	创建一个新的工作薄
sheet.write(row,col,data)	向单元格中编写数据
workbook.save(path)	保存数据到文件
'''
import xlwt
import xlrd
from xlutils.copy import copy

#没有表格可先创建
# cutomerdata=xlwt.open_workbook('生活.xls')
# cutomerdata=xlwt.Workbook()
# customer_sheet=cutomerdata.add_sheet('sheet')
# customer_sheet.write(1,3,'数量')
# customer_sheet.write(1,4,'价格')
# customer_sheet.write(1,5,'汇总数据(d*e)')
# cutomerdata.save('生活.xls')

#查看表数据的常用方式
# wb=xlrd.open_workbook('生活.xls')
# print(f'excel中有{wb.nsheets}个工作薄')
# print(f'excel中sheets的名字:{wb.sheet_names()}')
# # 获取单元格的数据
# print(f'sheet里面一共有{ws.nrows}行 {ws1.ncols}列的数据')
# # 获取单个单元格
# print(f'第1行第2列的值:{ws1.cell_value(0,1)}')
# print(f'第1行第2列的值:{ws1.cell(0,1).value}')
# print(f'第1行第2列的值:{ws1.row(0)[1].value}')
# # 获取多个单元格
# print(f'第1行的数据是:{ws1.row_values(0)}')
# print(f'第1列的数据是:{ws1.col_values(0)}')
#
# # 获取所有单元格
# for r in range(ws1.nrows):
#   for c in range(ws1.ncols):
#     print(f'第{r}行 第{c}列的数据是:{ws1.cell_value(r,c)}')



'''
1.新增统计列
2.新增分类汇总页
'''
def caculate():
    pwb=xlrd.open_workbook('生活.xls')
    totalprice=[]
    summarry={}
    pwbs=pwb.sheet_by_index(0)
    for i in range(1,pwbs.nrows):
        count=pwbs.cell_value(i,3) * pwbs.cell_value(i,4)
        totalprice.append(count)
        key=pwbs.cell_value(i,0)
        if summarry.get(key):
            summarry[key]+=count
        else:
            summarry[key]= count
    return totalprice,summarry

def save(totalprice,summarry):
    wb = xlrd.open_workbook('生活.xls')
    pwb=copy(wb)
    wbs=pwb.get_sheet(0)
    for i in range(0,len(totalprice)):
       wbs.write(i+1,5,totalprice[i])
    wbs2= pwb.add_sheet('summarry')
    for i,key in enumerate(summarry.keys()):
        wbs2.write(i,0,key)
        wbs2.write(i,1,summarry.get(key))
    pwb.save('生活2.xls')

if __name__=='__main__':
    a,b=caculate()
    save(a,b)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值