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

相关文章
|
1月前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
2月前
|
机器学习/深度学习 前端开发 数据处理
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
104 0
|
2月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
304 10
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
189 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
83 2
|
4月前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
265 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
4月前
|
索引 Python
Excel学习笔记(一):python读写excel,并完成计算平均成绩、成绩等级划分、每个同学分数大于70的次数、找最优成绩
这篇文章是关于如何使用Python读取Excel文件中的学生成绩数据,并进行计算平均成绩、成绩等级划分、统计分数大于70的次数以及找出最优成绩等操作的教程。
141 0
|
4月前
|
存储 Python
Python实战项目Excel拆分与合并——合并篇
Python实战项目Excel拆分与合并——合并篇
82 0
|
4月前
|
存储 Python 容器
Python实战项目:Excel拆分与合并
Python实战项目:Excel拆分与合并
82 0
|
4月前
|
自然语言处理 搜索推荐 程序员
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
【Python】如何使用pip,安装第三方库和生成二维码、操作Excel
96 0

热门文章

最新文章

推荐镜像

更多