转自:https://blog.csdn.net/qq_38830593/article/details/102870762
文章目录
说明
码云地址:http://yumos.gitee.io/openpyxl3.0
本文档是我在学习openpyxl
时期下载下载并按照自己的理解翻译了一部分,文档是完整的;翻译的部分仅仅包括读写,后边的图表等高级的操作暂时没用到,所以没有翻译.
0.简介
Workbook
:指一个工作簿,也就是一个单独的XLSX文件:Worksheet
:指一个sheet页:sheetName
:sheet页的名称:row
和cell
:行 和 单元格:
1.安装
# 使用pip安装即可 pip install openpyxl
2.简单使用
推荐读文件的时候使用只读
模式,速度会快很多;不建议使用可读写
模式操作xlsx文件,慢的很;读和写分开会好一些。
2.1 读取xlsx
思路:
简单示例:
from openpyxl import load_workbook # fileName 这里是指文件路径 fileName = "工作簿.xlsx" # 以只读模式打开工作簿 wb = load_workbook(filename = fileName,read_only = True) # sheetName 就是 sheet页的名称 sheetName = "Sheet1" # 通过 工作表名 获取 工作表 ws = wb[sheetName] # 按行读取 工作表的内容 for row in ws.rows: for cell in row: print(cell.value) # 获取单元格内容
print(cell.column) # 获取单元格的列号(数字值)
print(cell.row) # 获取单元格的行号号(数字值)
2.2 保存xlsx
思路:
简单示例:
from openpyxl import Workbook # 创建workbook对象,写入模式 wb = Workbook(write_only=True) # 删除默认创建的一个sheet页 ws = wb['Sheet'] wb.remove(ws) # 给sheet页命名 sheetName = "工作表1" # 1.创建sheet页 ws = create_sheet(sheetName) # 构造 测试数据 row = ["A11","A12","A13"] # 2.向工作表中 按行添加数据 ws.append(row) # filePath 是指保存的 excel 文件路径 filePath = "新工作簿.xlsx" # 3.保存xlsx wb.save(filePath)
3.主要方法介绍
创建工作簿
# 在内存里创建号工作表之后, 表内不包含任何 单元格. 当第一次 访问它们的时候,才会被创建 # 创建在内存中,调用save方法才能保存在本地 wb = Workbook()
创建工作表
# sheet页名称为Mysheet ws = wb.create_sheet("Mysheet") # 在最前端插入 # ws = wb.create_sheet("Mysheet", 0)
设置sheet页名称
ws.title = "表名"
获取工作表对象
# 通过表名获取 ws = wb["表名"] # 获取活动的工作表,这个工作表默认指向索引为0,除非你手动更改为其他的值。 否则你只能 使用该方法来获取第一个工作表(worksheet) # ws = wb.active
打印工作表名称
# ["Sheet1","Sheet2","Sheet3"] # 方法1 print(wb.sheetnames) # 方法2 for sheet in wb: print(sheet.title)
访问一个单元格
# 访问A列4行的单元格,不存在则创建 c = ws['A4'] # 还有Worksheet.cell()方法,赋值(4,1)值为10 d = ws.cell(row=4, column=1, value=10)
访问多个单元格
# A1~C2 2行3列所有的单元格 cell_range = ws['A1':'C2']
遍历行
# 使用 Worksheet.iter_rows() A1,B1,C1,A2,B2,C2 for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell)
遍历列(只读模式下不可用):
# 使用 Worksheet.iter_cols() A1,A2,B1,B2,C1,C2 for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): for cell in col: print(cell)
获取所有工作行
# 按行为单位 rows = Worksheet.rows # row1,row2,row3,row4,...
获取所有列:
# 按列为单位 cols = Worksheet.columns # col1,col2,col3,col4,...