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")

 

posted @ 2020-10-29 15:11  芒果日记  阅读(1635)  评论(0)    收藏  举报