最近帮同学处理一些数据,目的是分别从不同的一些excel文件中收集数据,按照格式汇总到生成的excel中. 保存下来,避免以后忘了,主要用到的就是xlrd和xlwt两个模块。
pythonimport xlwt,xlrd
import os
# 初始化工作表
workbook = xlwt.Workbook(encoding='utf-8')
sheet2014 = workbook.add_sheet('2014')
sheet2015 = workbook.add_sheet('2015')
sheet2016 = workbook.add_sheet('2016')
sheet2017 = workbook.add_sheet('2017')
sheet2018 = workbook.add_sheet('2018')
sheets = [sheet2014,sheet2015,sheet2016,sheet2017,sheet2018]
#style 对齐设置
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_CENTER
alignment.vert = xlwt.Alignment.VERT_CENTER
style = xlwt.XFStyle()
style.alignment = alignment
# 初始化第一列
def init(name):
name.write(0,0,'2014',style)
name.write(0,1,'盈利能力:净资产收益率',style)
name.write(0,2,'总资产净利率',style)
name.write(0,3,'投入资本回报率',style)
name.write(0,4,'销售净利率',style)
name.write(0,5,'销售毛利率',style)
name.write(0,6,'各项指标在营业总收入中占比:营业利润/营业总收入',style)
name.write(0,7,'营业总成本/营业总收入',style)
name.write(0,8,'销售费用/营业总收入',style)
name.write(0,9,'管理费用/营业总收入',style)
name.write(0,10,'财务费用/营业总收入',style)
for sheet_item in sheets:
init(sheet_item)
# 写入需要的数据的函数
def writedata(tar,src,name,i):
i = i+1
tar.write(i,0,name,style)
tar.write(i,1,src[3],style)
tar.write(i,2,src[13],style)
tar.write(i,3,src[15],style)
tar.write(i,4,src[17],style)
tar.write(i,5,src[18],style)
tar.write(i,6,src[22],style)
tar.write(i,7,src[25],style)
tar.write(i,8,src[26],style)
tar.write(i,9,src[27],style)
tar.write(i,10,src[28],style)
#按顺序加载列表
idd = 0
lists = xlrd.open_workbook(r'C:\Users\pve_win10_1\Desktop\xialinya\raw.xls').sheet_by_index(0).col_values(0)[16:26]
print('读取文件',':',lists)
for item in lists:
# 获取公司名称
name = item
# 获取工作表
data = xlrd.open_workbook(item+'.xlsx').sheet_by_index(0)
# 查找年份在哪里列
row1 = data.row_values(0)
for i in range(len(row1)):
index = row1[i].find('2014')
if not index:
# 如果这一项有2014,那么2015等就依次减1
# 依次得到各个年份的数据哦
data2014 = data.col_values(i)
data2015 = data.col_values(i-1)
data2016 = data.col_values(i-2)
data2017 = data.col_values(i-3)
data2018 = data.col_values(i-4)
datas = [data2014,data2015,data2016,data2017,data2018]
# 写入这个公司的数据
for i in range(5):
writedata(sheets[i],datas[i],name,idd)
idd = idd + 1
# 设置单元格高度
for each in sheets:
for i in range(12):
each.col(i).width = 5000
for i in range(15):
each.row(i).height_mismatch = True
each.row(i).height = 300
# 保存文件
workbook.save(r'C:\Users\pve_win10_1\Desktop\export\数据收集.xls')
print('over!')
本文作者:mereith
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!