python自动化办公模块_Python自动化办公Excel模块openpyxl原理及用法解析

本文详细介绍了Python的openpyxl库,用于读写xlsx文件。内容包括安装、工作簿(Workbook)、工作表(Sheet)、单元格(Cell)的基本操作,如创建、修改、获取数据,以及读写文件的方法。此外,还涵盖了获取单元格范围、颜色设置、只读模式下的限制等知识点。
摘要由CSDN通过智能技术生成

openpyxl 简介

openpyxl 是一个直接可用使用的于读写 xlsx 、xlsm、xltx、xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动化批量操作

先说一下安装部分,如果小伙伴们用 Anaconda 作为 Python 环境的话,openpyxl 无需安装可直接使用;需要安装的话方法也非常简单 pip 工具一行命令就行了

pip install openpyxl

xlsx 文件属性

在对 Excel 表格处理之前,需要理解一下 xlsx 文件的几个名词解释及构造

1,Workbook 指的是神什么?

Workbook 名叫工作薄,可以代指一个 xlsx 文件;

2, sheet、cell、row 、col 分别指的是什么?

关于问题2 ,可参考下图(见注释)

202011590229101.jpg?20201059249

openpyxl 基本命令操作

1, 创建 一个空的 workbookfrom openpypl import Wrokbook

from openpyxl.utils import get_column_letter

wb = Workbook()

ws1 = wb.active

一个 Workbook 默认至少含有一个 worksheet ,通过命令 Workbook.active 来获取当前第一个 sheet(也就是第一个 sheet);

2,创建新版的 worksheetws1 = wb.create_sheet("Mysheet") # insert at the end (default)

ws2 = wb.create_sheet("Mysheet", 0) # insert at first position

# or

ws3 = wb.create_sheet("Mysheet", -1) # insert at the penultimate position

可通过 create_sheet() 命令创建新版的 worksheet , create_sheet 默认有两个参数 name、index;name,定义 sheet 的名字;

index,来设置插入 sheet 的位置,默认为 None 即新版创建的 sheet 插入到最后面;0 代表插入第一个 sheet 的位置;

3,更改 sheet 的名字

一行代码就行了

ws.title = 'New Title'

4,更改 sheet 上 tab 背景颜色

ws.sheet_properties.tabColor = "1072BA"

通过改 Wroksheet.sheet_properties.tabColor 参数就行了,需要注重的是这里只接收 RRGGBB 颜色代码;

关于不清楚 sheet tab 背景颜色不清楚是什么的小伙伴,可参考下图;

202011590229102.jpg?20201059249

5, 返回 Workbook 中所有 sheet 的名字

通过 Workbook.sheetname 命令就行了查看>>> print(wb.sheetnames)

['Sheet2', 'New Title', 'Sheet1']

# 或者用迭代方法

>>> for sheet in wb:

... print(sheet.title)

6,将现有的 worksheets 复制新版创建的 workbook 中

可通过 Workbook.copy_worksheet()函数方法# 将 source 中的worksheet复制到 target 中去

source = wb.active

target = wb.copy_worksheet(source)

需要注重的是,当 workbook 为只读或 只写项目时不可复制;另外只有 cells(值,风格,超链接、注释) 和 特定的 worksheet 属性(维度、格式、属性)可以复制,其他的一些 workbook / worksheet 属性不可复制( Images Charts 等)

7,获取某个 cell 的数据

成功创建完 Workbook、Worksheet 之后,接下来就可以改 cell(单元格中的内容,Cells 可以通过 worksheet 中特有关键词来获取

>>> c = ws['A4'] # 获取第4行列名为A 单元格中的值

通过赋值命令对其改

ws['A4'] = 4

openpyxl 中有一个函数 Worksheet.cell() 可改单元格中的数据,可定位到详细行、详细列进行更改,

d = ws.cell(row = 4,columns = 2,value = 10)row 表示指定行

columns 表示指定列

value 表示该单元格中需替代的数据值;当此参数不设置时表示只对该 cell 创建内存空间,不赋值

例如>>> for x in range(1,101):

... for y in range(1,101):

... ws.cell(row=x, column=y)

8,获取多个单元格

8.1 , openpyxl 也可以进行切片操作,来获取多个单元格

>>> cell_range = ws['A1':'C2']

8.2, worksheet 中多行多列数据获取方式相似>>> colC = ws['C']

>>> col_range = ws['C:D']

>>> row10 = ws[10]

>>> row_range = ws[5:10]

8.3,Worksheet.iter_row() 来获取 sheet 中行列范围,再利用循环迭代获取每一个单元格数据>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2):

... for cell in row:

... print(cell)

8.4,Worksheet.iter_cols() 也可以实现同样功能>>> for col in ws.iter_cols(min_row=1, max_col=3, max_row=2):

... for cell in col:

... print(cell)

需要注重的时在 read-only 项目中,Worksheet,iter_cols() 方法不能使用

9,只查看 cell 中的 value

9.1,只查看 worksheet 中的 value 时,可通过 Worksheet.values 属性,该属性将迭代 worksheet 中所有行,但返回的仅仅是 cell valuesfor row in ws.values:

for value in row:

print(value)

9.2,通过 Worksheet.iter_rows() 和 Worksheet.iter_cols() 也可以实现,在函数中加入一个参数 values_only = True 就行了返回 cell 的值>>> for row in ws.iter_rows(min_row=1, max_col=3, max_row=2, values_only=True):

... print(row)

(None, None, None)

(None, None, None)

10,读写文件操作

10,excel 文件加载

openpyxl.load_workbook() 函数来打开一个指定本地存储的 xlsx 文件>>> from openpyxl import load_workbook

>>> wb2 = load_workbook('test.xlsx')

>>> print wb2.sheetnames

['Sheet2', 'New Title', 'Sheet1']

10.2,excel 文件存储

Workbook 改成功后,后创建完成之后,通过Workbook.save(path) 命令就行了保存至本地磁盘>>> wb = Workbook()

>>> wb.save('balances.xlsx')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值