Python3 读取和写入excel xlsx文件 使用openpyxl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 读取和写入excel xlsx文件 使用openpyxl相关的知识,希望对你有一定的参考价值。


python处理excel已经有大量包,主流代表有:

?xlwings:简单强大,可替代VBA

?openpyxl:简单易用,功能广泛

?pandas:使用需要结合其他库,数据处理是pandas立身之本

?win32com:不仅仅是excel,可以处理office;不过它相当于是 windows COM 的封装,新手使用起来略有些痛苦。

?Xlsxwriter:丰富多样的特性,缺点是不能打开/修改已有文件,意味着使用 xlsxwriter 需要从零开始。

?DataNitro:作为插件内嵌到excel中,可替代VBA,在excel中优雅的使用python

?xlutils:结合xlrd/xlwt,老牌python包,需要注意的是你必须同时安装这三个库

 技术分享 技术分享

 

1.openpyxl使用

openpyxl是Python可以用于处理xlsx的库!

2.openpyxl安装

 

pip install openpyxl

 

 

3.使用技巧

(1)打开excel文件,获取工作表

import openpyxl

wb=openpyxl.load_workbook(‘ttt.xlsx‘)  #打开excel文件

print(wb.get_sheet_names())  #获取工作簿所有工作表名

 

sheet=wb.get_sheet_by_name(‘Sheet1‘)  #获取工作表

print(sheet.title) 

 

sheet02=wb.get_active_sheet()  #获取活动的工作表

print(sheet02.title)

 

(2)操作单元格

 

print(sheet[‘A1‘].value)  #获取单元格A1值

print(sheet[‘A1‘].column)  #获取单元格列值

print(sheet[‘A1‘].row)  #获取单元格行号

 

print(sheet.cell(row=1,column=1).value)  #获取单元格A1值,column与row依然可用

 

for i in range(1,4,1):

    print(sheet.cell(row=i,column=1).value) #更加方便实用

 

print(sheet.max_column)  #获取最大列数

print(sheet.max_row)  #获取最大行数

 

(3)读取excel文件

#wbname==即文件名称,sheetname==工作表名称,可以为空,若为空默认第一个工作表

def readwb(wbname,sheetname):

    wb=openpyxl.load_workbook(filename=wbname,read_only=True)

    if (sheetname==""):

        ws=wb.active

    else:

        ws=wb[sheetname]

    data=[]

    for row in ws.rows:

        list=[]

        for cell in row:

            aa=str(cell.value)

            if (aa==""):

                aa="1"

            list.append(aa)

        data.append(list)

 

    print (wbname +"-"+sheetname+"- 已成功读取")

    return data

 

(4)新建excel,并写入数据

#新建excel

def creatwb(wbname):  

    wb=openpyxl.Workbook()

    wb.save(filename=wbname)

    print ("新建Excel:"+wbname+"成功")

 

# 写入excel文件中 date 数据,date是list数据类型, fields 表头

def savetoexcel(data,fields,sheetname,wbname):   

    print("写入excel:")

    wb=openpyxl.load_workbook(filename=wbname)

 

    sheet=wb.active

    sheet.title=sheetname  

 

    field=1

    for field in range(1,len(fields)+1):   # 写入表头

        _=sheet.cell(row=1,column=field,value=str(fields[field-1]))

 

    row1=1

    col1=0

    for row1 in range(2,len(data)+2):  # 写入数据

        for col1 in range(1,len(data[row1-2])+1):

            _=sheet.cell(row=row1,column=col1,value=str(data[row1-2][col1-1]))

 

    wb.save(filename=wbname)

    print("保存成功")


以上是关于Python3 读取和写入excel xlsx文件 使用openpyxl的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pandas 写入时文件损坏

Python办公自动化 | EXCEL读取和写入

Python3 关于excel 文件格式xls之读取写入和追加

Apache POI 4.0.1版本读取普通Excel文件(兼容 xls 和 xlsx)

Python如何读取xlsx文件并转换为csv而不写入目录[关闭]

pandas读取和写入excel多个sheet表单