openpyxl模块_Openpyxl让Excel飞(一)

openpyxl 库简介及安装

openpyxl是一个开源的Excel文件处理库,可以用于处理Excel 2010版及以后的文件(官网说法,实际好像2007版Excel文件也可以处理,只要是后缀名为.xlsx、.xlsm、xltx)。

基本上,使用openpyxl 可以进行Excel绝大部分操作。主要常用功能有以下:

  • 新建、加载、保存xlsx表格

  • 工作表sheet的操作

  • 单元格操作

  • 行列操作

  • 格式设置

  • 图表应用

  • 打印设置

  • 结合numpy或Pandas使用

openpyxl的安装,使用pip 进行安装即可,安装的命令如下:

pip install openpyxl

如果不太了解pip 安装python库,可以参考以下文章:

Python 库管家----pip

f5604b3f4f49cd9c19e59d37091f648f.gif

openpyxl Excel文件及sheet工作表操作

建议在Pycharm中尝试以下功能,新建一个python文件,并使用以下代码导入openpyxl库。

from openpyxl import Workbookfrom openpyxl import load_workbook #使用load_workbook需要用到这部分功能

新建表格(此时并未保存表格,wb为变量名)

wb = Workbook()

加载现有表格

wb = load_workbook('Excel name.xlsx')#如果Excel名前未加文件路径,则默认在相应python project路径下寻找同名表格加载#如果是加上路径,则是加载指定下路径的Excel表格

保存表格

wb.save('Excel name.xlsx')#如果需要更换位置保存,则在Excel名前加入路径,例如'C:\Excel name.xlsx'

将当前激活的sheet工作表定义为ws(变量名)

ws = wb.active#假设现在打开Excel name.xlsx是Sheet1处于编辑状态,则wb.active选择的是Sheet1#如果Sheet2处于编辑状态,则wb.active选择的是Sheet2

通过指定sheet工作表定义ws

ws = wb["Sheet2"]#将Sheet2定义为ws

创建sheet 工作表

ws = wb.create_sheet("NewSheet", 0)#括弧内0指创建的新工作表位置,0表示第一张sheet工作表。#如果有同名sheet,也会新建,但新建的sheet名后会加数字1,如NewSheet1

获取所有sheet工作表名

sheetname = wb.sheetnames#wb.sheetnames 可以获取表格wb中所有的sheet工作表。并储存为列表sheetname

通过指定sheetname 列表定义ws

sheetname = wb.sheetnamesws = wb[sheetname[0]]

修改sheet工作表名

ws.title = "UpdateTitle"#sheet名可以通过title属性进行更改

删除sheet工作表

wb.remove(ws)

更改sheet工作表栏颜色

ws.sheet_prperties.tabColor = "2A22AB"#2A22AB为十六进制数字,代表RGB三原色。
f5604b3f4f49cd9c19e59d37091f648f.gif

单元格操作

单元格赋值 (一)

ws['A1'] = 10  #在A1单元格输入数字10ws['A2'] = 'Trial'   #在A2单元格输入文本'Trial'

82f429094ed59360e9e071e7a00f1e13.png

单元格赋值 (二)

ws.cell(row =1, column = 2).value = "IT" #给第一行第二列赋值文本'IT'

d673a5aa040c516d0194b00135dd5353.png

单元格赋值 (三)

ws.cell(row=1, column=1, value='Trial') #给第一列第一行单元格赋值'Trial'

ad8e12a92cde1e5617180f80ac7804c8.png

单元格赋值 (四)

ws.cell(2,1,99) #给第二行第一列单元格赋值99

cc011820d97e5fb7a8c10d70e0875291.png

获取单元格值(一)

cellvalue = ws['A1'].value  #value 属性可以获取单元格的值,将'A1'单元格的值赋值给cellvalueprint(ws['A1']) #打印单元格信息,不是单元格的值print(cellvalue) #打印'A1'单元格值,下图为基于”单元格赋值(一)“代码结果

0e731f837be297d96948ec75cc2060c8.png

获取单元格值(二)

cellvalue = ws.cell(row=1,column=1).valueprint(ws.cell(row=1,column=1)) #打印单元格信息,不是单元格的值print(cellvalue) #打印第一行第一列单元格值,下图为基于”单元格赋值(三)“代码结果

9526005d215c314cebc34c377da6b29c.png

获取单元格值(三)

cellvalue = ws.cell(2,1).valueprint(ws.cell(2,1)) #打印单元格信息,不是单元格的值print(cellvalue) #打印第二行第一列单元格值,下图为基于”单元格赋值(四)“代码结果

247fe71d77559e294b9a344ccf5c02f4.png

单元格输入公式

ws['A1'] = '=SUM(2,2)' #A1单元格输入Excel SUM函数,求2+2的和ws['A2'] = '=A1&"ABC"' #A2单元格输入Excel &函数,求A1单元格文本与“ABC”合并后结果

4572cd9494be57ec3dcb6aa3a768bd89.png

PS:如果打印有公式的单元格的值,只会是打印公式的内容,而不是公式计算出来的值,目前暂时还无法从程序中直接获取计算后的值。如打印上面例子中A1单元格的值,就还是公式内容。

daea89b09fce17a80d7bc4f149fc2ee7.png

获取单元格的所在行数

cellrow = cell.row

获取单元格的所在列数

cellcol = cell.column

获取单元格的所在Excel坐标

cellcoordinate = cell.coordinate

多个单元格赋值(一)

for i in range (1,6):       for j in range (1,5):        ws.cell(i,j).value = i+j #给从第一行到第五行中的第一列到第四列的单元格中赋值

b8f9474f9f9266aabc3048cae12da6b3.png

#for x in range(m,n):是一个非常常用而且简单的循环语句,基本用法可以参照上面程序

多个单元格操作(二)----iter_rows函数

for row in ws.iter_rows(min_row=1, max_col=3, max_row=3):    #定义行列范围    for cell in row:        print(cell)     #输出单元格信息        cell.value = cell.row + cell.column    #将单元所在的行数与列数之和赋值给单元格

6e58e2ded4a9aed99da3e1c97a3081d8.png

从打印的单元格信息可以看出,iter_rows函数是逐行处理数据,第一行的数据处理完后,再处理第二行。

b26978fd2079495458fc0964a3f6fcb1.png

多个单元格操作(三)----iter_cols函数

for col in ws.iter_cols(min_col=1, max_row=3, max_col=3):    #定义行列范围    for cell in col:        print(cell)     #输出单元格信息        cell.value = cell.row + cell.column    #将单元所在的行数与列数之和赋值给单元格

6e58e2ded4a9aed99da3e1c97a3081d8.png

从打印的单元格信息可以看出,iter_cols函数是逐列处理数据,第一列的数据处理完后,再处理第二列。

b26978fd2079495458fc0964a3f6fcb1.png

f5604b3f4f49cd9c19e59d37091f648f.gif

实例

写一个简单的实例,创建一个Excel表格,然后在表格中分别创建三个sheet 工作表,并给sheet工作表中单元格赋值。以下是代码:

from openpyxl import Workbook   #从openpyxl 库中导入Workbook模块import os   #导入os 库,python标准库不需要安装wb = Workbook()     #新建表格ws1 = wb.active     #定义ws1ws1.title = "trial 1"for col in ws1.iter_cols(min_col=1, max_row=3, max_col=3):    #定义行列范围    for cell in col:        cell.value = cell.row    #将单元所在的行数与列数之和赋值给单元格ws2 = wb.create_sheet("Trial 2", 1)     #创建ws2for row in ws2.iter_rows(min_row=1, max_col=3, max_row=3):    #定义行列范围    for cell in row:        cell.value = cell.coordinate    #将单元所在的坐标赋值给单元格ws3 = wb.create_sheet("Trial 3", 2)     #创建ws3for i in range (1,6):    for j in range (1,5):        ws3.cell(i,j).value = i+j #给从第一行到第五行中的第一列到第四列的单元格中赋值wb.save('D:\Trial.xlsx')    #保存表格os.startfile('D:\Trial.xlsx')   #打开上一步保存的表格

e39ffe4b237391e75d47fa6f774e5e2c.gif

f5604b3f4f49cd9c19e59d37091f648f.gif To Be Continued f5604b3f4f49cd9c19e59d37091f648f.gif

关注公众号”Start Python“,一起学习Python开发

6c46610fff8af1681df032ca77d82d21.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值