Python Excel数据处理之xlrd/xlwt/xlutils模块详解
作者:Sir?老王 时间:2022-03-28 16:45:53
常规的Excel数据处理中,就是对Excel数据文件的读/写/文件对象操作。
通过对应的python非标准库xlrd/xlwt/xlutils,来实现具体的数据处理业务逻辑。
在复杂的Excel业务数据处理中,三兄弟扮演的角色缺一不可。如何能够使用xlrd/xlwt/xlutils三个模块来实现数据处理就是今天的内容。
1、模块说明
使用该三个模块来处理Excel数据最好的地方就是他们和Excel文件对象对应的数据处理概念是一样的,能更好的便于我们理解数据对象。
首先,这三个模块都是python的非标准库,可以选择pip的方式来进行安装。
pip install xlrd
pip install xlwt
pip install xlutils
下面是我们为演示数据处理的过程准备的源数据内容,只是用于测试。
xlrd:用于读取Excle数据文件将返回的数据对象放到内存中,然后查询数据文件对象的相关信息。
xlwt:用于在内存中生成新的数据文件对象,处理完成后写入到Excel数据文件中。
xlutils:主要的作用就是copy新的文件对象,在新的数据对象中完成数据处理操作。
将xlrd/xlwt/xlutils三个模块分别都导入到待开发的代码块中提供支持。
# Importing the xlrd module.
import xlrd as read
# Importing the xlwt module.
import xlwt as write
# Copying the contents of the original workbook into a new workbook.
from xlutils.copy import copy
2、xlrd处理
# Opening the workbook and assigning it to the variable `work_book`.
work_book = read.open_workbook('D:/test-data-work/test.xls')
# Assigning the sheet named 'Sheet1' to the variable `sheet`.
sheet = work_book.sheet_by_name('Sheet1')
# `row = sheet.nrows` is assigning the number of rows in the sheet to the variable `row`.
row = sheet.nrows
# `col = sheet.ncols` is assigning the number of columns in the sheet to the variable `col`.
col = sheet.ncols
print('Sheet1工作表有:{0}行,{1}列'.format(str(row), str(col)))
# Sheet1工作表有:23行,5列
下面是三种常用的sheet对象的数据遍历方式,分别是按行/列的方式进行数据遍历。
for a in sheet.get_rows():
print(a)
# [text:'姓名', text:'年龄', text:'班级', text:'成绩', text:'表现']
# [text:'Python 集中营', number:20.0, number:1210.0, number:90.0, text:'A']
# [text:'Python 集中营', number:21.0, number:1211.0, number:91.0, text:'A']
# [text:'Python 集中营', number:22.0, number:1212.0, number:92.0, text:'A']
# [text:'Python 集中营', number:23.0, number:1213.0, number:93.0, text:'A']
# [text:'Python 集中营', number:24.0, number:1214.0, number:94.0, text:'A']
# [text:'Python 集中营', number:25.0, number:1215.0, number:95.0, text:'A']
# [text:'Python 集中营', number:26.0, number:1216.0, number:96.0, text:'A']
# [text:'Python 集中营', number:27.0, number:1217.0, number:97.0, text:'A']
# [text:'Python 集中营', number:28.0, number:1218.0, number:98.0, text:'A']
# [text:'Python 集中营', number:29.0, number:1219.0, number:99.0, text:'A']
# [text:'Python 集中营', number:30.0, number:1220.0, number:100.0, text:'A']
# [text:'Python 集中营', number:31.0, number:1221.0, number:101.0, text:'A']
# [text:'Python 集中营', number:32.0, number:1222.0, number:102.0, text:'A']
# [text:'Python 集中营', number:33.0, number:1223.0, number:103.0, text:'A']
# [text:'Python 集中营', number:34.0, number:1224.0, number:104.0, text:'A']
# [text:'Python 集中营', number:35.0, number:1225.0, number:105.0, text:'A']
# [text:'Python 集中营', number:36.0, number:1226.0, number:106.0, text:'A']
# [text:'Python 集中营', number:37.0, number:1227.0, number:107.0, text:'A']
# [text:'Python 集中营', number:38.0, number:1228.0, number:108.0, text:'A']
# [text:'Python 集中营', number:39.0, number:1229.0, number:109.0, text:'A']
# [text:'Python 集中营', number:40.0, number:1230.0, number:110.0, text:'A']
# [text:'Python 集中营', number:41.0, number:1231.0, number:111.0, text:'A']
for b in range(row):
print(sheet.row_values(b))
# ['姓名', '年龄', '班级', '成绩', '表现']
# ['Python 集中营', 20.0, 1210.0, 90.0, 'A']
# ['Python 集中营', 21.0, 1211.0, 91.0, 'A']
# ['Python 集中营', 22.0, 1212.0, 92.0, 'A']
# ['Python 集中营', 23.0, 1213.0, 93.0, 'A']
# ['Python 集中营', 24.0, 1214.0, 94.0, 'A']
# ['Python 集中营', 25.0, 1215.0, 95.0, 'A']
# ['Python 集中营', 26.0, 1216.0, 96.0, 'A']
# ['Python 集中营', 27.0, 1217.0, 97.0, 'A']
# ['Python 集中营', 28.0, 1218.0, 98.0, 'A']
# ['Python 集中营', 29.0, 1219.0, 99.0, 'A']
# ['Python 集中营', 30.0, 1220.0, 100.0, 'A']
# ['Python 集中营', 31.0, 1221.0, 101.0, 'A']
# ['Python 集中营', 32.0, 1222.0, 102.0, 'A']
# ['Python 集中营', 33.0, 1223.0, 103.0, 'A']
# ['Python 集中营', 34.0, 1224.0, 104.0, 'A']
# ['Python 集中营', 35.0, 1225.0, 105.0, 'A']
# ['Python 集中营', 36.0, 1226.0, 106.0, 'A']
# ['Python 集中营', 37.0, 1227.0, 107.0, 'A']
# ['Python 集中营', 38.0, 1228.0, 108.0, 'A']
# ['Python 集中营', 39.0, 1229.0, 109.0, 'A']
# ['Python 集中营', 40.0, 1230.0, 110.0, 'A']
# ['Python 集中营', 41.0, 1231.0, 111.0, 'A']
for c in range(col):
print(sheet.col_values(c))
# ['姓名', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营', 'Python 集中营']
# ['年龄', 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0, 33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0]
# ['班级', 1210.0, 1211.0, 1212.0, 1213.0, 1214.0, 1215.0, 1216.0, 1217.0, 1218.0, 1219.0, 1220.0, 1221.0, 1222.0, 1223.0, 1224.0, 1225.0, 1226.0, 1227.0, 1228.0, 1229.0, 1230.0, 1231.0]
# ['成绩', 90.0, 91.0, 92.0, 93.0, 94.0, 95.0, 96.0, 97.0, 98.0, 99.0, 100.0, 101.0, 102.0, 103.0, 104.0, 105.0, 106.0, 107.0, 108.0, 109.0, 110.0, 111.0]
# ['表现', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A']
3、xlwt处理
# Creating a new workbook.
work_book_2 = write.Workbook()
# Creating a new sheet named 'Sheet4' in the workbook.
sheet_2 = work_book_2.add_sheet('Sheet4')
list = [
['姓名', '年龄', '班级', '成绩'],
['张三', '20', '1210', '89'],
['李四', '21', '1211', '90'],
['王五', '22', '1212', '91'],
]
for row_index in range(4):
for col_index in range(4):
sheet_2.write(row_index, col_index, list[row_index][col_index])
col_index += 1
row_index += 1
# Saving the workbook to the specified location.
work_book_2.save('D:/test-data-work/test2.xls')
4、xlutils处理
# Opening the workbook and assigning it to the variable `work_book_3`.
work_book_3 = read.open_workbook('D:/test-data-work/test.xls')
# Copying the contents of the original workbook into a new workbook.
work_book_3_copy = copy(work_book_3)
# Saving the contents of the original workbook into a new workbook.
work_book_3_copy.save('D:/test-data-work/test3.xls')
来源:https://mp.weixin.qq.com/s/BuR_dtsHBcSJRcnP91nJog
标签:Python,Excel,数据,处理
0
投稿
猜你喜欢
python修改list中所有元素类型的三种方法
2023-10-02 15:26:29
MySQL 5.6下table_open_cache参数优化合理配置详解
2024-01-18 22:18:55
Python日志模块logging的使用方法总结
2023-05-10 03:28:45
asp中去除html中style,javascript,css代码
2011-02-16 11:18:00
python 实现IP子网计算
2022-04-24 20:27:37
Python实现对excel文件列表值进行统计的方法
2022-08-08 17:42:23
Oracle学习笔记(五)
2024-01-25 04:12:09
javascript的闭包介绍(司徒正美)
2024-06-05 09:12:21
python实现可将字符转换成大写的tcp服务器实例
2021-06-17 01:04:38
Python中的特殊语法:filter、map、reduce、lambda介绍
2021-04-26 12:39:57
Python中list列表添加元素的3种方法总结
2022-10-03 21:40:43
MySQL表级锁使用说明
2024-01-23 04:10:07
快速升级MySQL系统表
2009-01-23 12:35:00
python实现点击按钮修改数据的方法
2023-08-18 20:46:08
Python打印不合法的文件名
2021-06-29 03:40:19
Python图像处理库PIL详细使用说明
2021-10-14 17:43:44
python学习之面向对象【入门初级篇】
2023-11-19 19:59:44
Python 将RGB图像转换为Pytho灰度图像的实例
2022-05-26 14:13:08
python中文乱码不着急,先看懂字节和字符
2023-08-25 05:27:55
kali最新国内更新源sources
2022-03-25 02:53:37