Python实例篇:自动操作Excel文件(既简单又特别实用)

简介: Python实例篇:自动操作Excel文件(既简单又特别实用)

前言
大家好,我是辣条哥~

大家平时在工作与学习中都会操作到Excel文件格式,特别是很多数据的时候,靠人力去识别操作非常容易出错。今天就带大家用Python来处理Excel文件,让你成为一个别人眼中的秀儿~

这已经是辣条发布的第114篇博文了,也有很多人留言说想要我的源码,还有想让我带的,奈何我也时间有限,不过能帮的就是我之前也收集了很多的源码,PDF,视频这些,想要的可以直接找我:《单击蓝字直接找我》

目录
前言
工具
读取Excel文件内容
写入Excel文件内容
Excel文件样式调整
总结
工具
python3.7

Pycharm

Excel

xlwt&xlrd

读取Excel文件内容
​ 当前文件夹下有一个名为“股票数据.xlsx”的Excel文件,可以按照下列代码方式来操作它。

import xlrd

使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿)

wb = xlrd.open_workbook('股票数据.xlsx')

通过Book对象的sheet_names方法可以获取所有表单名称

sheetname = wb.sheet_names()[0]

通过指定的表单名称获取Sheet对象(工作表)

sheet = wb.sheet_by_name(sheetname)

通过Sheet对象的nrows和ncols属性获取表单的行数和列数

print(sheet.nrows, sheet.ncols)
for row in range(sheet.nrows):

for col in range(sheet.ncols):
    # 通过Sheet对象的cell方法获取指定Cell对象(单元格)
    # 通过Cell对象的value属性获取单元格中的值
    value = sheet.cell(row, col).value
    # 对除首行外的其他行进行数据格式化处理
    if row > 0:
        # 第1列的xldate类型先转成元组再格式化为“年月日”的格式
        if col == 0:
            # xldate_as_tuple函数的第二个参数只有0和1两个取值
            # 其中0代表以1900-01-01为基准的日期,1代表以1904-01-01为基准的日期
            value = xlrd.xldate_as_tuple(value, 0)
            value = f'{value[0]}年{value[1]:>02d}月{value[2]:>02d}日'
        # 其他列的number类型处理成小数点后保留两位有效数字的浮点数
        else:
            value = f'{value:.2f}'
    print(value, end='\t')
print()

获取最后一个单元格的数据类型

0 - 空值,1 - 字符串,2 - 数字,3 - 日期,4 - 布尔,5 - 错误

last_cell_type = sheet.cell_type(sheet.nrows - 1, sheet.ncols - 1)
print(last_cell_type)

获取第一行的值(列表)

print(sheet.row_values(0))

获取指定行指定列范围的数据(列表)

第一个参数代表行索引,第二个和第三个参数代表列的开始(含)和结束(不含)索引

print(sheet.row_slice(3, 0, 5))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
写入Excel文件内容
​ Excel文件写入可以通过xlwt 模块的Workbook类创建工作簿对象,通过工作簿对象的add_sheet方法可以添加工作表,通过工作表对象的write方法可以向指定单元格中写入数据,最后通过工作簿对象的save方法将工作簿写入到指定的文件或内存中。下面代码操作了一个学员成绩表的写入。

import random

import xlwt

student_names = ['关羽', '张飞', '赵云', '马超', '黄忠']
scores = [[random.randint(40, 100) for in range(3)] for in range(5)]

创建工作簿对象(Workbook)

wb = xlwt.Workbook()

创建工作表对象(Worksheet)

sheet = wb.add_sheet('一年级二班')

添加表头数据

titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):

sheet.write(0, index, title)

将学生姓名和考试成绩写入单元格

for row in range(len(scores)):

sheet.write(row + 1, 0, student_names[row])
for col in range(len(scores[row])):
    sheet.write(row + 1, col + 1, scores[row][col])

保存Excel工作簿

wb.save('考试成绩表.xlsx')

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Excel文件样式调整
​ 还可以通过XFStyle对象来设置单元格的不同样式。主要包括字体(Font)、对齐方式(Alignment)、边框(Border)和背景(Background)的设置。

header_style = xlwt.XFStyle()
pattern = xlwt.Pattern()
pattern.pattern = xlwt.Pattern.SOLID_PATTERN

0 - 黑色、1 - 白色、2 - 红色、3 - 绿色、4 - 蓝色、5 - 黄色、6 - 粉色、7 - 青色

pattern.pattern_fore_colour = 5
header_style.pattern = pattern
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):

sheet.write(0, index, title, header_style)

1
2
3
4
5
6
7
8
9
设置表头的位置

align = xlwt.Alignment()

垂直方向的对齐方式

align.vert = xlwt.Alignment.VERT_CENTER

水平方向的对齐方式

align.horz = xlwt.Alignment.HORZ_CENTER
header_style.alignment = align
1
2
3
4
5
6
设置单元格的宽高

设置行高为40px

sheet.row(0).set_style(xlwt.easyxf(f'font:height {20 * 40}'))
titles = ('姓名', '语文', '数学', '英语')
for index, title in enumerate(titles):

# 设置列宽为200px
sheet.col(index).width = 20 * 200
# 设置单元格的数据和样式
sheet.write(0, index, title, header_style)

1
2
3
4
5
6
7
8
总结
​ 其他操作Excel文件的三方库(如openpyxl)大家有兴趣可以自行了解。掌握了Python程序操作Excel的方法,可以解决日常办公中很多繁琐的处理Excel电子表格工作,最常见就是将多个数据格式相同的Excel文件合并到一个文件以及从多个Excel文件或表单中提取指定的数据。当然,如果要对表格数据进行处理,使用Python数据分析神器之一的pandas库可能更为方便,因为pandas库封装的函数以及DataFrame类可以完成大多数数据处理的任务。

目录
相关文章
|
18天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
63 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
20天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
22 2
|
2月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
62 1
Python实用记录(十三):python脚本打包exe文件并运行
|
26天前
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
35 4
|
2月前
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
|
2月前
|
Python
python读写操作excel日志
主要是读写操作,创建表格
60 2
|
2月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
2月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
2月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
44 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
下一篇
无影云桌面