python3中关于excel追加写入格式被覆盖问题(实例代码)
关于python3中的追加写入excel问题,这个问题坑了我几小时,其实加一个参数即可。
因为之前有写好的excel,想追加写入,但是写入后却只有写入后的单元格格式,之前写的完全消失。
以下是我的代码
这代码可以用是我做的一个爬虫维护项目:
deftimes():
User_Agent='Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/54.0.2840.99Safari/537.36'
headers={
'User-Agent':User_Agent
}
search_url='https://www.cnss.com.cn/u/cms/www/indexJson/bdi_month.json?v=1577414941357'
request=urllib.request.Request(search_url,headers=headers)
response=urllib.request.urlopen(request)
content=response.read().decode('utf-8')
content=''.join(content)
#print(content)
#index=re.findall('index":"(.*?)"',content)#获取指数
date=re.findall('date":"(.*?)"',content)#获取时间
time=[]
i=0
start_date=date[0].replace('.','年')
start_date.replace('.','月')
end_date=date[-1].replace('.','年')
end_date.replace('.','月')
#print(index,date,start_date,end_date)
forjinrange(int(len(date)/1)):
temp=date[i:i+1]
i+=1
time.append(temp)
hears=start_date+'日'+'——'+end_date+'日'+'嘻嘻嘻'
title=['交易日期','干散货指数(BDI)','海岬型指数(BCI)','巴拿马型指数(BPI)','超灵便型船运价指数(BSI)','灵便型船指数(BHSI)']
sheet1.write_merge(0,0+0,0,0+5,hears,style)
fortiinrange(len(title)):
sheet1.write(1,ti+0,title[ti],style)
forxinrange(len(time)):
foryinrange(len(time[x])):
sheet1.write(x+2,0,time[x][y],style)
f.save('你想放的路径.xls')
上面的代码还是可以继续使用
标题xlwt的缺陷:
xlwt只能创建一个全新的excel文件,然后对这个文件进行写入内容以及保存。但是大多数情况下我们希望的是读入一个excel文件,然后进行修改或追加,这个时候就需要xlutils了。
xlutils的简单使用:
接下来的部分就是关键所在了
formatting_info=True这个参数能保留原excel格式
defwrite_excel_xls_append(path,value,u):
index=len(value)#获取需要写入数据的行数
workbook=xlrd.open_workbook('./result/30波罗的海干散货运价指数.xls',formatting_info=True)#打开工作簿
sheets=workbook.sheet_names()#获取工作簿中的所有表格
worksheet=workbook.sheet_by_name(sheets[0])#获取工作簿中所有表格中的的第一个表格
rows_old=worksheet.ncols#获取表格中已存在的数据的行数
new_workbook=copy(workbook)#将xlrd对象拷贝转化为xlwt对象
styleS=xlwt.XFStyle()
alignment=xlwt.Alignment()
alignment.horz=xlwt.Alignment.HORZ_CENTER
alignment.vert=xlwt.Alignment.VERT_CENTER
styleS.alignment=alignment
new_worksheet=new_workbook.get_sheet(0)#获取转化后工作簿中的第一个表格
foriinrange(0,index):
forjinrange(0,len(value[i])):
new_worksheet.write(i+2,u+1,value[i][j],styleS)#追加写入数据,注意是从i+rows_old行开始写入
new_workbook.save(path)#保存工作簿
然后你就会发现你的excel简直完美~~~
总结
以上所述是小编给大家介绍的python3中关于excel追加写入格式被覆盖问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。