openpyxl是一个开源项目,openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到其它库(如:xlrd、xlwt等),这是openpyxl比较其他模块的不足之处。使用openpyxl可以读写xltm, xltx, xlsm, xlsx等类型的文件,且可以处理数据量较大的Excel文件,跨平台处理大量数据是其它模块没法相比的。因此,openpyxl成为处理Excel复杂问题的首选库函数。
笔记
import openpyxl
#打开文件
wb=openpyxl.load_workbook("aa.xlsx")
print(wb._sheets)
#通过index获取sheet
sheet=wb.worksheets[0]
#通过name获取sheet
sheet1=wb["Sheet1"]
#读取sheet的某一单元格的内容
cell=sheet1.cell(1,2)
print(cell.value)
#获取第一行内容
data_row=sheet1[1]
print(data_row)
for colum in data_row:
print(colum.value)
#获取多行内容第一行到第三行
print(sheet1[1:3])
#获取第一列内容
data_col=sheet1['A']
for row in data_col:
print(row.value)
#获取所有的sheet,每一行是个元祖,列表读取
total_data=list(sheet1.rows)
for row in total_data:
for col in row:
print(col.value)
#写入一个单元格
sheet1.cell(1,4).value="等级"
#保存
wb.save(r"aa.xlsx")
#关闭
wb.close()
import openpyxl
class Excel():
def __init__(self,file):
self.file=file
def open(self,name):
wb=openpyxl.load_workbook(self.file)
sheet=wb[name]
wb.close()
return sheet
def read_head(self,name):
sheet=self.open(name)
head=[]
for i in sheet[1]:
head.append(i.value)
return head
def read(self,name):
sheet=self.open(name)
rows=list(sheet.rows)[1:]
data=[]
for row in rows:
row_data=[]
for col in row:
row_data.append(col.value)
data_dict=dict(zip(self.read_head(name),row_data))
data.append(data_dict)
return data
输出为:
[{
'id': 1, 'name': 'lili', 'score': 90, '等级': None}, {
'id': 2, 'name': 'lihua', 'score': 88, '等级': None}, {
'id': 3, 'name': 'hanmeimei', 'score': 92, '等级': None}]
Process finished with exit code 0
@staticmethod
def write(file,name,row,colum,data):
"""写入excel数据"""
wb = load_workbook(file)
sheet = wb[name]
sheet.cell(row,colum).value=data
wb.save(file)
wb.close()