Python 操作 Excel 数据的封装函数

16小时前 (02:21:21)阅读1回复0
wsygfsj
wsygfsj
  • 管理员
  • 注册排名5
  • 经验值54585
  • 级别管理员
  • 主题10917
  • 回复0
楼主

↓选举存眷↓

来源:收集

比照其它编程语言,我们都晓得Python更大的优势是代码简单,有丰富的第三方开源库供开发者利用。陪伴着近几年数据阐发的热度,Python也成为更受欢迎的编程语言之一。而关于数据的读取和存储,关于通俗人来讲,除了数据库之外,最常见的就是微软的Excel。

1. 前期预备

1.1. 初识Excel

Microsoft Excel是Microsoft为利用Windows和Apple Macintosh操做系统的电脑编写的一款电子表格软件。

1.2. 格局区别

Excel中有xls和xlsx两种格局,它们之间的区别是:

文件格局差别。xls是一个特有的二进造格局,其核心构造是复合文档类型的构造,而xlsx的核心构造是XML类型的构造,摘用的是基于 XML的压缩体例,使其占用的空间更小。xlsx 中最初一个 x 的意义就在于此。

版本差别。xls是Excel2003及以前版本生成的文件格局,而xlsx是Excel2007及以后版本生成的文件格局。

兼容性差别。xlsx格局是向下兼容的,可兼容xls格局。

1.3. 库的利用

Python自带的模块中有针对xls格局的xlrd和xlwt模块,但那两个库仅仅是针对xls的操做,当我们要操做xlsx格局文件时,则需要利用到openpyxl第三方库。

1.4. 整体构想

当利用以上几个模块的时候,从理论上我们就能够完全操做差别格局的Excel的读和写,良多人就迷惘,那那篇文章的感化是什么?我们间接进修对应的那三个模块不就好了吗?

谜底就是:固然那几个库已经把Excel的文件、表、行、列的概念完全转换为Python中的对象,但每次操做都需要遍历每一个单位格,以至良多时候我们要破费大量的时间在根究轮回单位格的鸿沟上,那自己就是在反复造轮子,因而我花了半天时间整理了以下六个函数。

2. 代码展现

2.1. xlz格局2.1.1. 读取xls格局文件defread_xls_excel(url,index):

读取xls格局文件

参数:

url:文件途径

index:工做表序号(第几个工做表,传进参数从1起头数)

返回:

data:表格中的数据

# 翻开指定的工做簿

workbook = xlrd.open_workbook(url)

# 获取工做簿中的所有表格

sheets = workbook.sheet_names

# 获取工做簿中所有表格中的的第 index 个表格

worksheet = workbook.sheet_by_name(sheets[index -1])

# 定义列表存储表格数据

data = []

# 遍历每一行数据

fori inrange( 0, worksheet.nrows):

# 定义表格存储每一行数据

da = []

# 遍历每一列数据

forj inrange( 0, worksheet.ncols):

# 将行数据存储到da列表

da.append(worksheet.cell_value(i, j))

# 存储每一行数据

data.append(da)

# 返回数据

returndata

2.1.2. 写进xls格局文件defwrite_xls_excel(url,sheet_name,two_dimensional_data):

写进xls格局文件

参数:

url:文件途径

sheet_name:表名

two_dimensional_data:将要写进表格的数据(二维列表)

# 创建工做簿对象

workbook = xlwt.Workbook

# 创建工做表对象

sheet = workbook.add_sheet(sheet_name)

# 遍历每一行数据

fori inrange( 0,len(two_dimensional_data)):

# 遍历每一列数据

forj inrange( 0,len(two_dimensional_data[i])):

# 写进数据

sheet.write(i,j,two_dimensional_data[i][j])

# 保留

workbook.save(url)

print( "写进胜利")

2.1.3. 逃加写进xls格局文件defwrite_xls_excel_add(url, two_dimensional_data, index):

逃加写进xls格局文件

参数:

url:文件途径

two_dimensional_data:将要写进表格的数据(二维列表)

index:指定要逃加的表的序号(第几个工做表,传进参数从1起头数)

# 翻开指定的工做簿

workbook = xlrd.open_workbook(url)

# 获取工做簿中的所有表格

sheets = workbook.sheet_names

# 获取指定的表

worksheet = workbook.sheet_by_name(sheets[index -1])

# 获取表格中已存在的数据的行数

rows_old = worksheet.nrows

# 将xlrd对象拷贝转化为xlwt对象

new_workbook = copy(workbook)

# 获取转化后工做簿中的第index个表格

new_worksheet = new_workbook.get_sheet(index -1)

# 遍历每一行数据

fori inrange( 0, len(two_dimensional_data)):

# 遍历每一列数据

forj inrange( 0, len(two_dimensional_data[i])):

# 逃加写进数据,重视是从i+rows_old行起头写进

new_worksheet.write(i+rows_old, j, two_dimensional_data[i][j])

# 保留工做簿

new_workbook.save(url)

print( "逃加写进胜利")

2.2. xlsx格局2.2.1. 读取xlsx格局文件defread_xlsx_excel(url, sheet_name):

读取xlsx格局文件

参数:

url:文件途径

sheet_name:表名

返回:

data:表格中的数据

# 利用openpyxl加载指定途径的Excel文件并得到对应的workbook对象

workbook = openpyxl.load_workbook(url)

# 根据指定表名获取表格并得到对应的sheet对象

sheet = workbook[sheet_name]

# 定义列表存储表格数据

data = []

# 遍历表格的每一行

forrow insheet.rows:

# 定义表格存储每一行数据

da = []

# 从每一行中遍历每一个单位格

forcell inrow:

# 将行数据存储到da列表

da.append(cell.value)

# 存储每一行数据

data.append(da)

# 返回数据

returndata

2.2.2. 写进xlsx格局文件defwrite_xlsx_excel(url, sheet_name, two_dimensional_data):

写进xlsx格局文件

参数:

url:文件途径

sheet_name:表名

two_dimensional_data:将要写进表格的数据(二维列表)

# 创建工做簿对象

workbook = openpyxl.Workbook

# 创建工做表对象

sheet = workbook.active

# 设置该工做表的名字

sheet.title = sheet_name

# 遍历表格的每一行

fori inrange( 0, len(two_dimensional_data)):

# 遍历表格的每一列

forj inrange( 0, len(two_dimensional_data[i])):

# 写进数据(重视openpyxl的行和列是从1起头的,和我们日常平凡的认知是一样的)

sheet.cell(row=i + 1, column=j + 1, value=str(two_dimensional_data[i][j]))

# 保留到指定位置

workbook.save(url)

print( "写进胜利")

2.2.3. 逃加写进xlsx格局文件defwrite_xlsx_excel_add(url, sheet_name, two_dimensional_data):

逃加写进xlsx格局文件

参数:

url:文件途径

sheet_name:表名

two_dimensional_data:将要写进表格的数据(二维列表)

# 利用openpyxl加载指定途径的Excel文件并得到对应的workbook对象

workbook = openpyxl.load_workbook(url)

# 根据指定表名获取表格并得到对应的sheet对象

sheet = workbook[sheet_name]

fortdd intwo_dimensional_data:

sheet.append(tdd)

# 保留到指定位置

workbook.save(url)

print( "逃加写进胜利") 3. 成果测试 3.1. 读取测试

先预备两个Excel文件,如图所示

其内容如下:

测试代码:

输出成果:

结论:表白读取并没有问题!!!接下来测试写进

3.2. 写进测试

测试代码:

成果输出:

看到数据被笼盖了!!!接下来在上面修改后的数据的根底上测试逃加写进

3.3. 逃加写进测试

测试代码:

成果输出:

逃加也没有问题!!

4. 总结

我们不断认为数据阐发就应该以数据为主,而不该该把大量的代码破费在设想Excel表格的款式上,如许几就有点主客倒置的意思了。总之,期看那篇文章对正在进修Python的你有必然的搀扶帮助,假设对你有搀扶帮助的话,无妨点个赞和收躲吧!假设有什么定见和定见也欢送在评论区留言!

- EOF -

加主页君微信,不只Python技能+1

主页君日常还会在小我微信分享 Python相关东西、资本和 精选手艺文章,不按期分享一些 有意思的活动、 岗位内推以及 若何用手艺做业余项目

加个微信,翻开一扇窗

点击题目可跳转

1、 好强的谷歌 “Excel” ,不消写代码就能爬虫!

2、 堪比 Excel,Python 可视化神器 Altair 进门详解

3、 Python 办公主动化之 Excel 报表主动化,看那一篇就够了!

觉得本文对你有搀扶帮助?请分享给更多人

选举存眷「Python开发者」,提拔Python技能

点赞和在看就是更大的撑持❤️

0
回帖

Python 操作 Excel 数据的封装函数 期待您的回复!

取消