Python自动化办公 #001 openpyxl
Python在处理表格数据时,可以利用功能强大的openpyxl库
目录
1. openpyxl 介绍
-
安装:
pip install openpyxl -
openpyxl是一个开源项目,它是一个用于读取/写入Excel 2010文档(如xlsx 、xlsm 、xltx 、xltm文件 )的Python库
-
如果要处理更早格式的Excel文档(xls),需要用到其它库(如:xlrd、xlwt等),这是openpyxl比较其他模块的不足之处。
-
python中与excel操作相关的模块:
xlrd:从excel中读取数据,支持xls、xlsx格式
xlwt:对excel进行修改操作,但不支持对xlsx格式的修改
openpyxl:主要针对xlsx格式的excel进行读取和编辑
2. openpyxl 基本概念
-
WorkBook:工作簿对象
-
Sheet:表单对象
-
Cell:表格对象

3. openpyxl 操作EXCEL
3.1 打开 / 创建工作薄
import openpyxl
# ====================== workbook操作 ================================
# 实例化对象
wb = openpyxl.Workbook()
# 保存工作簿
wb.save("test.xlsx")
# 打开已有的工作簿,通过更改后缀的文件打开会报错
wb = openpyxl.load_workbook('Book1.xlsx')
# ====================== worksheet操作 ================================
# 新建sheet表,可通过index控制创建的表的位置
wb.create_sheet(index=2, title="sheet3")
# 打印sheet
print(wb.sheetnames)
# 根据表名删除sheet表
wb.remove(wb["sheet3"])
print(wb.sheetnames)
3.2 workbook的属性
import openpyxl
# 1.读取文件
wb = openpyxl.load_workbook('Book1.xlsx')
# 2.workbook对象的属性
print(wb)
print(wb.sheetnames) # sheetnames:获取工作簿中所有的表(列表)
print(wb.active) # active:激活当前的worksheet
print(wb.worksheets) # worksheets:以列表的形式返回所有的Worksheet(表格)
print(wb.encoding) # encoding:获取文档的字符集编码
print(wb.properties) # properties:获取文档的元数据,如标题,创建者,创建日期等
'''
=======================================================================
1.一个Excel表格由 workbook(工作簿),worksheet(工作表 ),cell(单元格)组成
2.openpyxl库和xlwt库是不一样的,xlwt库创建的表格用openpyxl库是打不开的
=======================================================================
'''
3.3 worksheet属性
import openpyxl
wb = openpyxl.load_workbook("Book1.xlsx")
# 选择要操作的工作表, 返回工作表对象
sheet = wb["表一"]
print(sheet.title) # 工作表的名称
sheet.title = 'sheet1' # 修改表的名称
print(sheet.title)
print(sheet.max_column) # 工作表的最大列
print(sheet.max_row) # 工作表的最大行
print(sheet.min_column) # 工作表的最小列
print(sheet.min_row) # 工作表的最小行
print(sheet.rows) # 获取行生成器
print(sheet.columns) # 获取列生成器
print(sheet.values) # 获取值生成器
3.4 遍历单元格
-
单元格内数据:

-
程序:
import openpyxl wb = openpyxl.load_workbook("Book1.xlsx") sheet = wb["表一"] # 1.获取C列的所有数据 column_C = [] for i in sheet["C"]: print(i) column_C.append(i.value) print(column_C) # 2.获取第1行的所有数据 row_1 = [] for i in sheet[1]: print(i) row_1.append(i.value) print(row_1) # 3.遍历所有单元格 ## rows为所有行,row为当前行 for row in sheet.rows: for cell in row: print(cell.value, end=' ') -
输出:
<Cell '表一'.C1> <Cell '表一'.C2> ['性别', '男'] <Cell '表一'.A1> <Cell '表一'.B1> <Cell '表一'.C1> ['姓名', '年龄', '性别'] 姓名 年龄 性别 张三 20 男 Process finished with exit code 0
3.5 写入数据
-
程序:
import openpyxl # ==================== 1. 创建工作簿,工作表 ============== # 实例化workbook对象 wb = openpyxl.Workbook() # 创建表,索引从1开始 ws = wb.create_sheet(index=2, title="sheet_creat") # ============================ 2.激活表 ========================= # 一:通过索引值激活表,即选中表 wb.active = 2 # 二:通过表名激活表 sheet = wb["sheet_creat"] # ========================= 3.写入数据到单元格 ========================= # 两种方法 # 一:指定单元格编号["A6"] ws["A6"] = "hello" # 二:根据行列索引 ws.cell(row=1, column=2).value = "你好" sheet["B5"] = "333" sheet.cell(row=2, column=2).value = "222" # ============================= 4.保存表 ============================= wb.save("Book2.xlsx") -
结果:

本文来自博客园,作者:{枫_Null},转载请注明原文链接:https://www.cnblogs.com/fengNull/articles/16665429.html

浙公网安备 33010602011771号