openpyxl使用
作者:互联网
该文档只浅谈一下openpyxl对表格的基本操作,值得注意的是openpyxl只支持xlsx格式
一,openpyxl的安装
pip install openpyxl
二,openpyxl对表格各个名称的简介
Workbook:指一个工作簿,也就是一个单独的XLSX文件:
三,使用
推荐读文件的时候使用只读
模式,速度会快很多;不建议使用可读写
模式操作xlsx文件,慢的很;读和写分开会好一些
1,创建不存在的表格
from openpyxl import Workbook # 实例化 wb = Workbook(‘文件名称.xlsx’) # 激活 worksheet 默认是新建床表格成功时sheet表 ws = wb.activewb.save(
'文件名称.xlsx')#保存数据
2,打开已经存在
import os import openpyxl file_path = os.path.abspath(os.path.join(os.path.dirname(__file__),'text.xlsx')) #以只读的模式打开已有的表格 wb = openpyxl.load_workbook(file_path,read_only=True)
3,创建sheet表
# 方式一:插入到最后(默认) ws1 = wb.create_sheet("Mysheet1") # 方式二:插入到最开始的位置 ws2 = wb.create_sheet("Mysheet2", 0)
4,查看sheet表
# 显示所有表名 print(wb.sheetnames) ['Mysheet2', 'Sheet', 'Mysheet1'] # 遍历所有表 for sheet in wb: ... print(sheet.title)
5,选择sheet表
# sheet 名称可以作为 key 进行索引 #方式一:推荐方式一 ws2 = wb["sheetname"] #方式二: ws1 = wb.get_sheet_by_name("sheetname")
6,添加数据
ws = wb["Mysheet2"]
# 第一行输入 ws.append(['A1', 'B1', 'C1']) # 输入内容(10行数据) for i in range(10): A1= datetime.datetime.now().strftime("%H:%M:%S") B1= str(time()) C1= get_column_letter(choice(range(1, 10))) ws.append([TIME, TITLE, A_Z])
7,获取excel表格的sheet1表格的行数与列数
ws = wb['Mysheet2'] # 获取最大行 row_max = ws.max_row # 获取最大列 con_max = ws.max_column #获取所有工作行内容 rows = ws.rows #获取所有工作列内容 columns = ws.columns
8,获取每一行,每一列
sheet.rows为生成器, 里面是每一行的数据,每一行又由一个tuple包裹。 sheet.columns类似,不过里面是每个tuple是每一列的单元格。 # 因为按行,所以返回A1, B1, C1这样的顺序 for row in sheet.rows: for cell in row: print(cell.value) # A1, A2, A3这样的顺序 for column in sheet.columns: for cell in column: print(cell.value)
9,单元格访问和赋值
- 单一单元格访问
# 方法一 c = ws['A4'].value # 方法二:row 行;column 列 c = ws.cell(row=4, column=2).value #赋值 # 方法一 ws['A4'] = 5 # 方法二:row 行;column 列 ws.cell(row=4, column=2,value=5)
- 多单元格访问
# 通过切片 cell_range = ws['A1':'C2'] # 通过行(列) colC = ws['C'] col_range = ws['C:D'] #第几行 row10 = ws[10] row_range = ws[5:10] # 通过指定范围(行 → 行) for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell) <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2> # 通过指定范围(列 → 列) for row in ws.iter_rows(min_col=1, max_row=2, max_col=3):: for cell in row: print(cell) <Cell Sheet1.A1> <Cell Sheet1.B1> <Cell Sheet1.C1> <Cell Sheet1.A2> <Cell Sheet1.B2> <Cell Sheet1.C2>
10, 删除工作表
# 方式一 wb.remove(sheet) # 方式二 del wb[sheet]
标签:sheet,wb,openpyxl,cell,ws,使用,row 来源: https://www.cnblogs.com/hhaostudy/p/15973089.html