openpyxl学习笔记

openpyxl简介

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()

原始excel数据存储为
openpyxl学习笔记_第1张图片

读取excel

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

写入excel

@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()

你可能感兴趣的:(python,python)