记一次python读取Excel并将其中一些数据导出到另一个Excel的过程

使用的是python2, 安装了xlwt和xlrd库

pip install xlwt xlrd
#-*- coding=utf-8 -*-  
from xlwt import *
import xlrd
def output(filename):
    xlrd.Book.encoding="utf-8"
    data=xlrd.open_workbook(filename)#原始文件的数据
    ws=Workbook(encoding='utf-8')#生成文件的句柄
    for s in range(1,len(data.sheets())):#遍历所有的sheet
        sheet=data.sheets()[s]
        print sheet.name
        w=ws.add_sheet(sheet.name)#在新的excel中添加这个sheet
        row=sheet.nrows   #获取这页数据的总行数
        aa={}
        start=0
        for i in range(0,row-1):  #由于每个表的起始行数不太一样,所以使用了送货日期来定位具体从哪一行开始
            if sheet.row_values(i)[0]==u"送货日期":
                start=i
                break
        for i in range(0,sheet.ncols):#将表头数据写到新文件中
            w.write(0,i,sheet.row_values(start)[i])
        for i in range(start+1,row-1): #读取某列的数据,并将不同的数据分别存储
            value= sheet.row_values(i)[10]
            lb=[]
            if value=='':
                continue
            if value in aa:
                lb=aa[value]
            lb.append(i)
            aa[value]=lb
        f=1
        ttotal=0
        tm=0
        for key in aa:#之前已经将不同的数据行数记录下来,现在计算下每种数据的总和
            bb=aa[key]
            total=0
            zz=0
            m=0
            for j in range(0,len(bb)):#
                i=bb[j]
                value=sheet.row_values(i)[11]
                if not isinstance(value,unicode) and not isinstance(value,str):
                    total+=value
                z=sheet.row_values(i)[7]
                if not isinstance(z,unicode) and not isinstance(z,str):
                    zz+=sheet.row_values(i)[7]
                mm=sheet.row_values(i)[8]
                if not sheet.row_values(i)[3]==u"小缸费" and not isinstance(mm,unicode) and not isinstance(mm,str):
                    m+=mm
                for k in range(0,sheet.ncols):
                    w.write(f,k,sheet.row_values(i)[k])
                f=f+1
            w.write(f,0,u"总金额:")#将结果写入新表
            w.write(f,1,total)
            w.write(f,2,u"总数量")
            w.write(f,3,m)
            f=f+2
            ttotal+=total
            tm+=m
            print key,len(bb),u"总额=",total,u"总重=",zz,u"总量=",m
        w.write(f,0,u"汇总金额")#将每一种数据汇总输出
        w.write(f,1,ttotal)
        w.write(f,2,u"汇总数量")
        w.write(f,3,tm)
    ws.save("output_"+filename)#保存到文件

if __name__=='__main__':
    output(u"12月人民币总销售.xls")
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值