一、excel 读写 :openpyxl
痛点:读写速度慢,一个10K的excel文件,读花我好几分钟
优点:兼容xlsx,xls
注意:请不要使用openpyxl-2.3.0.以上的版本,运行时,你会发现有报错,具体啥错,你用了就知道。我使用的时2.2.6的版本 ,pip install openpyxl==2.2.6 下载
二、excel 读:xlrd
痛点:1. 只能读 ,不能写,2. xlrd新版本仅对xls格式的excel有效,要想用xlsx请用旧版本
优点:读的速度挺快
三、excel 读写 : xlrd+ xlutils ,完美实现读写
openpyxl用法
1.读
from openpyxl import load_workbook
#工作簿对象
wb = load_workbook(file_name) #工作簿对象
#表单对象
wb.sheetnames() #返回所有表单对象 ,是个list
sheet = wb.get_sheet_by_name('Sheet1') #表单对象
sheet1 = wb.create_sheet('new') #创建新表单new,并返回表单对象
sheet2 = wb['Sheet3'] #表单对象
sheet = wb.active #返回活跃的表单对象
#表单属性
sheet.max_row #行数
sheet.max_columns #列数
sheet.title #当前工作表的名字
#单元格对象
#1.单个单元格
sheet['A1'] # 单元格A1
sheet.cell(row=1,column=2) # 单元格B2
#2.整行、整列
sheet['C'] #C列所有单元格对象
sheet[6] #第6行所有单元格对象
#3.区域
sheet['B:C'] #B列到C列所有单元格对象
sheet[2:6] #第2行到第6行所有单元格对象
sheet.rows #生成器,一行一行生成,一行中包含所有行对象
sheet.columns #生成器,一列一列生成,一行中包含所有行对象
#单元格属性
sheet['A1'].value # 单元格A1的值
sheet['A1'].row #单元格A1所属行
sheet['A1'].column #单元格A1所属列
sheet['A1'].coordinate #单元格A1的位置
sheet.cell(row=1,column=2).value
2.写
一定要写sheet.save(filename)
#整行写入
data = [
[1,2,6],
[12,24,66],
[14,25,76]
]
for row in data:
sheet.append(row)
sheet.save(filename)
#单个单元格
sheet['A1'] = 'hello'
sheet.cell(row=1, column=2).value = 'world'
sheet.save(filename)
xlrd+xlutils用法
仅简单的读写
from xlrd import open_workbook
from xlutils.copy import copy
#xlrd 用于读
r_wb =open_workbook(file_name,formatting_info=True) #工作簿
r_sheet = r_wb.sheet_by_name('Sheet1') #表单
sheet_names = r_wb.sheet_names() #所有表单名,list
#写
wb = copy(r_wb) #
sheet = wb.get_sheet(0) #第一张表单
sheet.write(row= 1,column= 1,'hello') # 第一行第二列写入hello
wb.save(filename) #保存,
注意:不写formatting_info=True,保存的excel文件就不是原来excel文件的格式,打开很奇怪。
本文探讨了openpyxl的读写痛点及优点,特别强调了openpyxl 2.2.6版本的兼容性和读写速度,同时介绍了xlrd的局限性及其快速读取功能,以及xlrd+xlutils组合的完整读写解决方案。
675

被折叠的 条评论
为什么被折叠?



