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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。