Python 自动化办公 — 处理 Excel 文件!

简介: openpyxl 介绍openpyxl 是一个直接可用于读写 xlsx 、xlsm、xltx、xltm 文件的 Python 内置库,借助它可以利用 Python 语法对本地 xlsx 文件进行自动化批量操作先说一下安装部分,如果小伙伴们用 Anaconda 作为 Python 环境的话,openpyxl 无需安装可直接使用;需要安装的话方法也非常简单 pip 工具一行命令即可

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 ,可参考下图(见注释)


微信图片_20220520104950.jpg


openpyxl 基本命令操作


1, 创建 一个空的 workbook
from openpypl import Wrokbook
from openpyxl.utils import get_column_letter
wb = Workbook()
ws1 = wb.active


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


2,创建新的 worksheet
ws1 = 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 背景颜色不清楚是什么的小伙伴,可参考下图;


微信图片_20220520105029.jpg


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)
<Cell Sheet1.A1>
<Cell Sheet1.B1>
<Cell Sheet1.C1>
<Cell Sheet1.A2>
<Cell Sheet1.B2>
<Cell Sheet1.C2>


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)
<Cell Sheet1.A1>
<Cell Sheet1.A2>
<Cell Sheet1.B1>
<Cell Sheet1.B2>
<Cell Sheet1.C1>
<Cell Sheet1.C2>


需要注意的是在 read-only 模式中,Worksheet,iter_cols() 方法不能使用


9,只查看 cell 中的 value

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

for 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.1,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')


以上就是本篇文章的所有内容了,这是 Python 自动化办公的第一篇文章,不知道大家对这方面的内容是否感兴趣,可以借助下方留言区告诉我,也好为后面选题方向有所侧重。

相关文章
|
12天前
|
数据处理 数据库 Python
我在日常办公中使用python的案例分享
我在日常办公中使用python的案例分享
27 4
|
11天前
|
数据采集 人工智能 程序员
避坑指南!细说Python自动化办公的5大缺点
Python如今变得愈发流行,不仅程序员,许多非专业人员也开始学习它,主要目的是提高工作效率而非成为专家。然而,Python自动化办公并非完美,存在一些缺点:首先,它仅支持Windows系统,这对Mac用户不太友好;其次,其功能虽强大但不够专业,大多功能一行代码即可完成;再者,代码包体积较大,约200MB;此外,技术门槛较低,难以形成职业优势;最后,相较于专业代码,它的启动速度较慢。即便如此,它依然比人工操作高效得多。如果能接受以上缺点,可参考《50讲·Python自动化办公》教程,快速掌握自动化办公技能。
53 29
|
22天前
|
安全 项目管理 Python
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
|
10天前
|
Java 数据安全/隐私保护 Python
Python案例分享:如何实现文件的解压缩
Python案例分享:如何实现文件的解压缩
35 8
|
10天前
|
存储 缓存 安全
Python案例分享:如何实现文件的上传下载
Python案例分享:如何实现文件的上传下载
45 6
|
2天前
|
数据挖掘 Python
🚀告别繁琐!Python I/O管理实战,文件读写效率飙升的秘密
在日常编程中,高效的文件I/O管理对提升程序性能至关重要。Python通过内置的`open`函数及丰富的库简化了文件读写操作。本文从基本的文件读写入手,介绍了使用`with`语句自动管理文件、批量读写以减少I/O次数、调整缓冲区大小、选择合适编码格式以及利用第三方库(如pandas和numpy)等技巧,帮助你显著提升文件处理效率,让编程工作更加高效便捷。
12 0
|
2天前
|
存储 数据挖掘 测试技术
Python接口自动化中操作Excel文件的技术方法
通过上述方法和库,Python接口自动化中的Excel操作变得既简单又高效,有助于提升自动化测试的整体质量和效率。
11 0
|
20天前
|
C# 开发者 Windows
WPF遇上Office:一场关于Word与Excel自动化操作的技术盛宴,从环境搭建到代码实战,看WPF如何玩转文档处理的那些事儿
【8月更文挑战第31天】Windows Presentation Foundation (WPF) 是 .NET Framework 的重要组件,以其强大的图形界面和灵活的数据绑定功能著称。本文通过具体示例代码,介绍如何在 WPF 应用中实现 Word 和 Excel 文档的自动化操作,包括文档的读取、编辑和保存等。首先创建 WPF 项目并设计用户界面,然后在 `MainWindow.xaml.cs` 中编写逻辑代码,利用 `Microsoft.Office.Interop` 命名空间实现 Office 文档的自动化处理。文章还提供了注意事项,帮助开发者避免常见问题。
65 0
|
22天前
|
TensorFlow 算法框架/工具 C++
Python exe文件打包神器-Nuitka!
Python exe文件打包神器-Nuitka!
|
29天前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
30 1