openpyxl 读取 excel
一、openpyxl 简介
1.1 简介
openpyxl 是一个 Python 库,用于读取/写入Excel 2010 xlsx / xlsm / xltx / xltm文件。
安装:https://pypi.org/project/openpyxl/
pip install openpyxl
文档:https://openpyxl.readthedocs.io/en/stable/
1.2 入门示例
import datetime from openpyxl import Workbook wb = Workbook() # 获取活动工作表 ws = wb.active # 数据可以直接分配给单元 ws["A1"] = 42 # 行也可以追加 ws.append([1,2,3]) # Python类型将自动转换 # 导入日期时间 ws['A2'] = datetime.datetime.now() # 保存文件,会覆盖原有文件 wb.save("sample.xlsx")
二、工作表基础操作
2.1 创建文件
from openpyxl import Workbook # 创建工作簿对象 wb = Workbook() # 获取当前活动的工作表,默认获取第一个工作表 ws = wb.active print(ws) # 创建新的工作表 # 默认在末尾插入 ws1 = wb.create_sheet(title="Mysheet1") # 在最前面插入 ws2 = wb.create_sheet(title="Mysheet", index=0) # index=-1 在倒数第二的位置插入工作表 ws3 = wb.create_sheet(title="Mysheet2", index=-1) wb.save("sample.xlsx")
2.2 打开文件
from openpyxl import load_workbook # 打开现有工作簿 wb = load_workbook("sample.xlsx") print(wb.sheetnames)
2.3 修改工作表属性
from openpyxl import Workbook wb = Workbook() ws1 = wb.create_sheet(title="Mysheet1") # 修改工作表属性 # 修改工作表名称 ws1.title = "UpdateSheet" # 修改工作表颜色 ws1.sheet_properties.tabColor = "1072BA" wb.save("sample.xlsx")
2.4 获取工作表
from openpyxl import Workbook wb = Workbook() ws1 = wb.create_sheet(title="Mysheet1") # 查看所有工作表 print(wb.sheetnames) # 遍历工作表 for sheet in wb: print(sheet.title) wb.save("sample.xlsx")
2.5 复制工作表
from openpyxl import Workbook wb = Workbook() ws = wb.active # 复制工作表,仅能复制单元格(包括值、样式、超链接和注释)和某些工作表属性(如尺寸、格式和属性);只读模式打开时不能复制 target = wb.copy_worksheet(ws) wb.save("sample.xlsx")
2.6 单元格读写
存在 sample.xlsx 文件如下:

import openpyxl wb = openpyxl.load_workbook("sample.xlsx") ws = wb.get_sheet_by_name("Sheet") # 获取单元格 A4 的值 print(ws["A4"]) # 给单元格 A4 赋值 ws["A4"] = "麻子" # cell 方式赋值 ws.cell(row=4, column=2, value=10) # 切片的方式访问多个单元格 colB = ws['B'] # B列 colBtoD = ws['B':'C'] # B-D 列 row2 = ws[2] # 第2行 row2to4 = ws[2:4] # 第2-4行 wb.save("sample.xlsx")
2.7 单元格遍历
import openpyxl wb = openpyxl.load_workbook("sample.xlsx") ws = wb.get_sheet_by_name("Sheet") # 按行遍历 for row in ws.rows: for cell in row: print(cell.value, end="\t\t") print() print("-------------------------") for col in ws.columns: for cell in col: print(cell.value, end="\t\t") print() wb.close()
2.8 合并单元格
from openpyxl import load_workbook wb = load_workbook("sample.xlsx") ws = wb.active # 合并第2行的 A-C 列 ws.merge_cells('A2:C2') # 取消合并 # ws.unmerge_cells('A2:C2') # 或者使用以下方法: # ws.merge_cells(start_row=2, start_column=1, end_row=3, end_column=3) # ws.unmerge_cells(start_row=2, start_column=1, end_row=3, end_column=3) wb.save("sample.xlsx")
2.9 插入图片
from openpyxl import load_workbook from openpyxl.drawing.image import Image wb = load_workbook("sample.xlsx") ws = wb.active img = Image('logo.png') ws.add_image(img, 'A1') wb.save("sample.xlsx")
2.10 插入删除行、列
from openpyxl import load_workbook wb = load_workbook("sample.xlsx") ws = wb.active # 第2行位置插入2行 ws.insert_rows(2, 2) # 在第2列插入2列 ws.insert_cols(2, 2) # 删除 ws.delete_cols(2, 2) ws.delete_rows(2, 2) wb.save("sample.xlsx")

浙公网安备 33010602011771号