最近在写一个爬虫,爬下来的数据存储到Excel中,最开始使用xlwt和xlrd这两个模块配合使用对Excel创建和写入和追加操作,但是有一个弊端就是数据大约超过65000就会报错的
报错:
ValueError: row index was 65536, not allowed by .xls format
解决方案:
xlrd和xlwt处理的是xls文件,单个sheet最大行数是65535,如果有更大需要的,建议使用openpyxl函数,最大行数达到1048576。
如果数据量超过65535就会遇到:ValueError: row index was 65536, not allowed by .xls format
所以才不得不使用openpyxl这个模块,推荐使用,因为自我感觉字体更美观,好像性能也提高了
1:安装openpyxl
pip install openpyxl
2:写入操作
#openpyxl写数据
import openpyxl #导入openpyxl模块
wb = openpyxl.Workbook() #创建空的Excel文件
sheet = wb.active #获取工作簿的活动表,通常是第一个工作表
sheet.title = '高管' #给工作表命名
#这个可以理解是表头
sheet['A1'] = '公司名称'
sheet['B1'] = '姓名'
sheet['C1'] = '职务'
sheet['D1'] = '学历'
sheet['E1'] = '薪酬'
sheet['F1'] = '持股'
sheet['G1'] = '年龄'
sheet['H1'] = '任期'
#单行数据的写入
row = ['写入','读取','模块'] #创建一个列表用以批量写入
sheet.append(row) #append将数据写入单元格中
#多行数据的写入,以列表进行分开,最后写入大列表
rows = [['写入','读取','模块'],['怪物','格格不入','同类', '经典','人物']]
for i in rows:
sheet.append(i) #遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。
wb.save('高管.xlsx') #保存新建的Excel文件,并命名为“测试.xlsx”
3:已存在excel表追加数据
# 导入模块
import openpyxl
# 已存在的Excel文件的路径,根据需要修改路径
filepath = '高管.xlsx'
wb = openpyxl.load_workbook(filepath)
ws = wb['高管']
# 创建文件的时候title名字 sheet.title = '高管' 必须要对应,忘记了请看上面
# 或者你还可以 print(wb.sheetnames) 把所有子表的名字并打印出来
ws = wb['sheet2']
#待填充数据
data = [[1,2,3],[4,5,6]]
for x in data:
ws.append(x)
savename = 'update_excel.xlsx' #保存路径你可以写新路径,当然也可以写创建文件的路径,数据会追加进去
wb.save(savename)