Python 使用 openpyxl 操作模块实现excel的读取,以及原有表格追加数据

最近在写一个爬虫,爬下来的数据存储到Excel中,最开始使用xlwtxlrd这两个模块配合使用对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)

猜你喜欢

转载自blog.csdn.net/zhang_8626/article/details/96483359