python之openpyxl模块的安装和基本⽤法(excel管理)
⽬录
⼀.获取wps的安装包并安装
⼆.excel⽂档的基本定义
三.导⼊openpyxl模块
四.openpyxl基本⽤法
1.创建对象
2.Workbook对象属性(⼯作簿操作)
3.Worksheet,Cell对象(⼯作表操作,单元格)
4.访问单元格的所有信息
5.应⽤案例
总结
前⾔
openpyxl模块是⼀个读写Excel 2010⽂档的Python库,如果要处理更早格式的Excel⽂档,需要⽤到额外的库,openpyxl是⼀个⽐较综合的⼯具,能够同时读取和修改Excel⽂档。其他很多的与Excel相关的项⽬基本只⽀持读或者写Excel⼀种功能。
要对excel进⾏操作,必须要有能打开excel的软件,这⾥以wps为例
⼀.获取wps的安装包并安装
⼆.excel⽂档的基本定义
1) ⼯作薄(workbook):⼀个EXCEL⽂件就称为⼀个⼯作薄,⼀个⼯作薄中可以包含若⼲张⼯作表。
2) ⼯作表(sheet):⼯作薄中的每⼀张表格称为⼯作表,每张⼯作表都有⼀个标签,默认为sheet1\sheet2\sheet3来命名,(⼀个⼯作薄默认为由3个⼯作表组成)
3) 活动表(active sheet):指当前正在操作的⼯作表
4) ⾏(row): ⼯作表中的每⼀⾏⾏⾸数字(1、2、3、)称为⾏标题;⼀张⼯作表最多有65536⾏
5) 列(column): 列标题:⼯作表中每⼀列列⾸的字母(A、B、C)称为列标题;⼀张⼯作表最多有256列
6)单元格(cell): ⼯作表的每⼀个格称为单元格
三.导⼊openpyxl模块
在pycharm下,执⾏import openpyxl,发现会报错,这时我们将⿏标放在openpyxl上,按下alt + enter,选择第⼀个进⾏安装。
出现下图,说明安装成功。
如果安装失败,就需要到第三⽅库进⾏安装。
pip3 install openpyx
四.openpyxl基本⽤法
1.创建对象
打开或者创建⼀个Excel需要创建⼀个Workbook对象
获取⼀个表则需要先创建⼀个Workbook对象,然后使⽤该对象的⽅法来得到⼀个Worksheet对象
如果要获取表中的数据,那么得到Worksheet对象以后再从中获取代表单元格的Cell对象
Workbook对象
⼀个Workbook对象代表⼀个Excel⽂档,因此在操作Excel之前,都应该先创建⼀个Workbook对象。对
于创建⼀个新的Excel⽂档,直接进⾏Workbook类的调⽤即可,对于⼀个已经存在的Excel⽂档,可以使⽤openpyxl模块的load_workbook函数进⾏读取,该函数包涵多个参数,但只有filename参数为必传参数。filename 是⼀个⽂件名,也可以是⼀个打开的⽂件对象
import openpyxl
wb = openpyxl.Workbook('Book1.xlsx')
wb1 = openpyxl.load_workbook('Book2.xlsx')
print(wb)
print(type(wb))
print(wb1)
print(type(wb1))
2.Workbook对象属性(⼯作簿操作)sheetnames:获取⼯作簿中的表(列表)
active:获取当前活跃的Worksheet
worksheets:以列表的形式返回所有的Worksheet(表格)
read_only:判断是否以read_only模式打开Excel⽂档encoding:获取⽂档的字符集编码
properties:获取⽂档的元数据,如标题,创建者,创建⽇期等import openpyxl
wb = openpyxl.load_workbook('Book2.xlsx')
print(wb.sheetnames)
print(wb.active)
print(wb.worksheets)
ad_only)
ding)python安装教程非常详细
print(wb.properties) ##运⾏结果最后三⾏属于该属性
excel信息
运⾏结果
3.Worksheet,Cell对象(⼯作表操作,单元格)Worksheet:
title:表格的标题
max_row:表格的最⼤⾏
min_row:表格的最⼩⾏
max_column:表格的最⼤列
min_column:表格的最⼩列
rows:按⾏获取单元格(Cell对象) - ⽣成器
columns:按列获取单元格(Cell对象) - ⽣成器
values:按⾏获取表格的内容(数据) - ⽣成器
Cell:
row:单元格所在的⾏
column:单元格坐在的列
value:单元格的值
coordinate:单元格的坐标
import openpyxl
wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的⼯作表,返回⼯作表对象
sheet = wb['排序商品信息']
#获取⼯作表的名称
print(sheet.title)
# 获取⼯作表中⾏和列的最值
print(sheet.max_column)
print(sheet.max_row)
print(sheet.min_column)
print(sheet.min_row)
##修改表的名称
sheet.title = 'sheet1'
print(sheet.title)
# 返回指定⾏指定列的单元格信息
ll(row=1, column=2).value)
cell = sheet['B1']
print(cell)
w, lumn, cell.dinate)
运⾏前excel信息
4.访问单元格的所有信息
import openpyxl
wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的⼯作表,返回⼯作表对象
sheet = wb['排序商品信息']
for row ws:
# 循环遍历每⼀个单元格
for cell in row:
# 获取单元格的内容
print(cell.value, end=',')
print()
import openpyxl
wb = openpyxl.load_workbook('Book2.xlsx')
##选择要操作的⼯作表,返回⼯作表对象
sheet = wb['排序商品信息']
for row in sheet.values:
print(*row)
5.应⽤案例
需求:
商品名称商品价格商品数量
- 定义⼀个函数, readwb(wbname, sheetname=None)
-
如果⽤户指定sheetname就打开⽤户指定的⼯作表,如果没有指定,打开active sheet; - 根据商品的价格进⾏排序(由⼩到⼤),保存到⽂件中;商品名称:商品价格:商品数量
- 所有信息,并将其保存到数据库中;
import os
import openpyxl
def readwb(wbname, sheetname=None):
# 打开⼯作薄
wb = openpyxl.load_workbook(wbname)
# 获取要操作的⼯作表
if not sheetname:
sheet = wb.active
else:
sheet = wb[sheetname]
# 获取商品信息保存到列表中
#[ ['name', price, count]
#
# ]
all_info = []
for row ws:
child = [cell.value for cell in row]
all_info.append(child)
return sorted(all_info, key=lambda item: item[1])
def save_to_excel(data, wbname, sheetname='sheet1'):
"""
将信息保存到excel表中;
[[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]]
"""
print("写⼊Excel[%s]中......." %(wbname))
# 打开excel表, 如果⽂件不存在,⾃⼰实例化⼀个WorkBook对象
wb = openpyxl.Workbook()
# 修改当前⼯作表的名称
sheet = wb.active
# 修改⼯作表的名称
sheet.title = sheetname
for row, item in enumerate(data): # 0 [' BOOK', 50, 3]
for column, cellValue in enumerate(item): # 0 ' BOOK'
# ** 往单元格写⼊内容
# ll['B1'].value = "value"
# ll(row=1, column=2, value="value")
# 保存写⼊的信息
wb.save(filename=wbname)
print("写⼊成功!")
data = readwb(wbname='Book1.xlsx')
save_to_excel(data, wbname='Book2.xlsx', sheetname="排序商品信息")
原excel信息
新excel信息
总结
到此这篇关于python之openpyxl模块的安装和基本⽤法的⽂章就介绍到这了,更多相关python openpyxl模块(excel管理)内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论