10分钟学会用Python轻松玩转Excel

简介: 10分钟学会用Python轻松玩转Excel

前言


当你需要每天对 Excel 做大量重复的操作,如果只靠人工来做既浪费时间,又十分枯燥,好在 Python 为我们提供了许多操作 Excel 的模块,能够让我们从繁琐的工作中腾出双手。


今天就和大家分享一个快速处理 Excel 的模块 openpyxl,它的功能相对与其他模块更为齐全,足够应对日常出现的问题。


openpyxl 安装


直接在命令提示符中输入。

pip install openpyxl
复制代码


或使用豆瓣镜像安装。

pip install -i https://pypi.douban.com/simple openpyxl
复制代码

安装成功后,下面就看看如何使用


打开/创建工作簿


示例工作簿

image.png


工作表【一等奖】

image.png


工作表【二等奖】

image.png


(1)打开本地工作簿

>>> from openpyxl import load_workbook
>>> wb = load_workbook('获奖名单.xlsx')
复制代码


(2)创建空的工作薄

>>> from openpyxl import Workbook
>>> wb1 = Workbook()
复制代码


访问工作表


创建新工作表,可指定插入的位置(0:首位,-1:末尾)。

>>> wb.create_sheet('new_sheet', 0)
<Worksheet "new_sheet">
复制代码


获取工作簿中所有工作表。

>>> wb.sheetnames
['new_sheet', '一等奖', '二等奖']
复制代码


使用列表推导式遍历获取所有工作表名称。

>>> [sheet.title for sheet in wb]
['new_sheet', '一等奖', '二等奖']
复制代码


使用 wb[sheetname] 来获取一个工作表对象

>>> wb['二等奖']
<Worksheet "二等奖">
复制代码


获取活动表(即打开工作簿首先出现的工作表)。

>>> wb.active
<Worksheet "一等奖">
复制代码


获取工作表行列信息。

>>> sheet1 = wb['一等奖']
>>> sheet1.max_column
7
>>> sheet1.max_row
6
复制代码


获取单元格信息


访问某个单元格

>>> sheet1['D3']
<Cell '一等奖'.D3>
>>> sheet1.cell(row=3, column=4)
<Cell '一等奖'.D3>
复制代码


如果访问单元格式添加 value 参数则会修改当前单元格的值。

>>> sheet1.cell(3, 4).value
'基于Spark、Python的医护人员信息抽取与管理'
>>> sheet1.cell(3, 4, value='Python')
<Cell '一等奖'.D3>
>>> sheet1.cell(3, 4).value
'Python'
复制代码


获取单元格的值、坐标、行索引、列索引。

>>> sheet1['D3'].value
'Python'
>>> sheet1['D3'].coordinate
'D3'
>>> sheet1['D3'].row
3
>>> sheet1['D3'].column
4
复制代码


访问多个单元格

使用切片来访问多个单元格,这里的切片与列表切片有区别,列表切片是前闭后开,Excel 中的切片是前闭后闭


(1)选取 A1:B2 区域的单元格。

>>> sheet1['A1':'B2']
((<Cell '一等奖'.A1>,
  <Cell '一等奖'.B1>),
 (<Cell '一等奖'.A2>,
  <Cell '一等奖'.B2>))
复制代码

image.png

选取单列数据。

>>> sheet1['D']
(<Cell '一等奖'.D1>,
    ...
 <Cell '一等奖'.D6>)
复制代码


选取B,C列数据。

>>> sheet1['B:C']
((<Cell '一等奖'.B1>,
    ...
  <Cell '一等奖'.B6>),
 (<Cell '一等奖'.C1>,
    ...
  <Cell '一等奖'.C6>))
复制代码


选取单行数据。

>>> sheet1[3]
(<Cell '一等奖'.A3>,
 <Cell '一等奖'.B3>,
    ...
 <Cell '一等奖'.F3>,
 <Cell '一等奖'.G3>)
复制代码


选取第2,3行数据。

>>> sheet1[2:3]
((<Cell '一等奖'.A2>,
    ...
  <Cell '一等奖'.G2>),
 (<Cell '一等奖'.A3>,
    ...
  <Cell '一等奖'.G3>))
复制代码


遍历获取数据

按行遍历指定范围(B2:C3)数据。

>>> for row in  sheet1.iter_rows(min_row=2, max_row=3, min_col=2, max_col=3):
        for cell in  row:
            print(cell.coordinate)
B2
C2
B3
C3
复制代码


按列遍历指定范围(B2:C3)数据。

>>> for col in  sheet1.iter_cols(min_row=2, max_row=3, min_col=2, max_col=3):
        for cell in col:
            print(cell.coordinate)
B2
B3
C2
C3
复制代码


如果 iter_rows()/iter_cols() 中指定参数 values_only=True,那么将只返回单元格的值

按行遍历所有数据。

>>> tuple(sheet1.rows)
((<Cell '一等奖'.A1>,
  ...
  <Cell '一等奖'.G1>),
  ...
  ...
 (<Cell '一等奖'.A6>,
  ...
  <Cell '一等奖'.G6>))
复制代码


按列遍历所有数据。

>>> tuple(sheet1.columns)
((<Cell '一等奖'.A1>,
  ...
  <Cell '一等奖'.A6>),
  ...
  ...
 (<Cell '一等奖'.G1>, 
  ...
  <Cell '一等奖'.G6>))
复制代码


修改工作表


单元格赋值

新增一列计算 作者 人数。

>>> for row_index in range(2, sheet1.max_row + 1):
        sheet1.cell(row_index, 8).value = len(sheet1.cell(row_index, 6).value.split(','))
复制代码

image.png


使用公式给单元格赋值,H7 统计作者总人数。

>>> sheet1['H7'] = '=SUM(H1:H6)'
复制代码

image.png


追加一行数据

使用列表按序传入值。

>>> sheet1.append([str(n) for n in range(6)])
复制代码

image.png


使用字典指定 列索引:列值

>>> sheet1.append({'A':'1','C':'3'})
复制代码

image.png


插入空白行

在指定位置插入空白行, idx 行索引,插入的位置;amount 插入空白行的数量

>>> sheet1.insert_rows(idx=2, amount=2)
复制代码

image.png


删除工作表

>>> wb.remove(wb['new_sheet'])
复制代码


保存工作簿

>>> wb.save('获奖名单V1.xlsx')
复制代码


修改样式


字体

设置 B2 单元格字体格式为,颜色可以用十六进制颜色代码。

>>> from openpyxl.styles import Font
>>> new_font = Font(name='微软雅黑', size=20, color='3333CC', bold=True)
>>> sheet1['B2'].font = new_font
复制代码

image.png


单元格背景颜色

>>> from openpyxl.styles import PatternFill, colors
>>> sheet1["A2"].fill = PatternFill("solid", fgColor=colors.BLUE)
>>> sheet1["A3"].fill = PatternFill("solid", fgColor='FF66CC')
复制代码

image.png


对齐方式

设置 D2 中的数据 垂直居中水平居中

>>> from openpyxl.styles import Alignment
>>> sheet1['D2'].alignment = Alignment(horizontal='center', vertical='center')
复制代码

image.png


行高/列宽

设置第2行行高为40,C列列宽为20。

>>> sheet1.row_dimensions[2].height = 40
>>> sheet1.column_dimensions['C'].width = 20
复制代码

image.png


合并/拆分单元格

合并单元格只需要指定左上角和右下角的单元格坐标。

>>> sheet.merge_cells('A1:C3')
复制代码

image.png


拆分单元格后,合并区域的值会赋给左上角单元格A1。

>>> sheet.unmerge_cells('A1:C3')
复制代码

image.png

相关文章
|
2月前
|
Python
Python办公自动化:xlwings对Excel进行分类汇总
Python办公自动化:xlwings对Excel进行分类汇总
91 1
|
2月前
|
Python
Python自动化:xlwings合并Excel
Python自动化:xlwings合并Excel
55 0
|
17天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
1月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
52 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
1月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
60 2
|
1月前
|
Python
Python 自动化操作 Excel - 02 - xlwt
Python 自动化操作 Excel - 02 - xlwt
40 14
|
1月前
|
Python
Python 自动化操作 Excel - 03 - xlutils
Python 自动化操作 Excel - 03 - xlutils
36 13
|
1月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
199 16
|
1月前
|
Python
Python 自动化操作 Excel - 01 - xlrd
Python 自动化操作 Excel - 01 - xlrd
36 9
|
1月前
|
IDE 开发工具 数据安全/隐私保护
Python编程--实现用户注册信息写入excel文件
Python编程--实现用户注册信息写入excel文件
下一篇
无影云桌面