从零开始用python处理excel_Python3 读取和写入excel xlsx文件 使用openpyxl

本文介绍了如何使用Python中的openpyxl库来处理xlsx文件,包括安装openpyxl,打开和获取工作表,操作单元格,读取和新建excel文件以及写入数据的方法。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

20180111002815837902.png

20180111002815840832.png

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("保存成功")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值