iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么在Python中利用xlwings读取Excel文件
  • 774
分享到

怎么在Python中利用xlwings读取Excel文件

2023-06-06 14:06:08 774人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

怎么在python中利用xlwings读取excel文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 处理要求:一个Excel表格中包含了3万条记录,其中B,C两个列记录

怎么在python中利用xlwings读取excel文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

处理要求:

一个Excel表格中包含了3万条记录,其中B,C两个列记录了某些计算值,读取前一万行记录,将这两个列的差值进行计算,然后汇总得出差的和。

文件是这个样子:Book300s.xlsx 。

怎么在Python中利用xlwings读取Excel文件

2. 处理方式有以下3种,我们对比一下耗时的大小。

处理方式代码名称
1. 使用Python的xlwings类库,读取Excel文件,然后采用Excel的Sheet和Range的引用方式读取并计算XLS_READ_SHEET.py
2. 直接使用Excel自带的VBA语言进行计算VBA

 使用Python的xlwings类库,读取Excel文件,然后采用Python的自带数据类型List列表进行数据存储和计算

XLS_READ_LIST.py

3. 首先测试第一种,XLS_READ_SHEET.py

使用Python的xlwings类库,读取Excel文件,然后引用Excel的Sheet和Range的方式来读取并计算

#coding=utf-8import xlwings as xwimport pandas as pdimport timestart_row = 2 # 处理Excel文件开始行end_row = 10002 # 处理Excel结束行#记录打开表单开始时间start_open_time = time.time()#指定不显示地打开Excel,读取Excel文件app = xw.App(visible=False, add_book=False)wb = app.books.open('D:/PYTHON/TEST_CODE/Book300s.xlsx') # 打开Excel文件sheet = wb.sheets[0] # 选择第0个表单#记录打开Excel表单结束时间end_open_time = time.time()#记录开始循环计算时间start_run = time.time()row_content = []#读取Excel表单前10000行的数据,Python的in range是左闭右开的,到10002结束,但区间只包含2到10001这一万条for row in range(start_row, end_row):  row_str = str(row)  #循环中引用Excel的sheet和range的对象,读取B列和C列的每一行的值,对比计算  start_value = sheet.range('B' + row_str).value  end_value = sheet.range('C' + row_str).value  if start_value <= end_value:    values = end_value - start_value    #同时测试List数组添加记录    row_content.append(values)#计算和total_values = sum(row_content)#记录结束循环计算时间end_run = time.time()sheet.range('E2').value = str(total_values)sheet.range('E3').value = '使用Sheet计算时间(秒):' + str(end_run - start_run)#保存并关闭Excel文件wb.save()wb.close()print ('结果总和:', total_values)print ('打开并读取Excel表单时间(秒):',  end_open_time - start_open_time)print ('计算时间(秒):',  end_run - start_run)print ('处理数据条数:' , len(row_content))

用Python直接访问Sheet和Range取值的计算结果如下:

读取Excel文件用时 4.47秒

处理Excel 10000 行数据花费了117秒的时间。

怎么在Python中利用xlwings读取Excel文件

4. 然后我们用Excel自带的VBA语言来处理一下相同的计算。也是直接引用Sheet,Range等Excel对象,但VBA的数组功能实在是不好用,就不测试添加数组了。

Option ExplicitSub VBA_CAL_Click()  Dim i_count As Long  Dim offset_value, total_offset_value As Double  Dim st, et As Date  st = Time()  i_count = Sheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row  i_count = 10001  For i_count = 2 To i_count     If Range("C" & i_count).Value > Range("B" & i_count).Value Then       offset_value = Range("C" & i_count).Value - Range("B" & i_count).Value       total_offset_value = total_offset_value + offset_value     End If  Next i_count  et = Time()  Range("E2").Value = total_offset_value  Range("E3").Value = et - st  MsgBox "Result: " & total_offset_value & Chr(10) & "Running time: " & et - stEnd Sub

VBA处理计算结果如下:

保存了3万条数据的Excel文件是通过手工打开的,在电脑上大概花费了8.2秒的时间

处理Excel 前10000行数据花费了1.16秒的时间。

怎么在Python中利用xlwings读取Excel文件

5.使用Python的xlwings类库,读取Excel文件,然后采用Python的自带数据类型List进行数据存储和计算,计算完成后再将结果写到Excel表格中

#coding=utf-8import xlwings as xwimport pandas as pdimport time#记录打开表单开始时间start_open_time = time.time()#指定不显示地打开Excel,读取Excel文件app = xw.App(visible=False, add_book=False)wb = app.books.open('D:/PYTHON/TEST_CODE/Book300s.xlsx') # 打开Excel文件sheet = wb.sheets[0] # 选择第0个表单#记录打开Excel表单结束时间end_open_time = time.time()#记录开始循环计算时间start_run = time.time()row_content = []#读取Excel表单前10000行的数据,并计算B列和C列的差值之和list_value = sheet.range('A2:D10001').valuefor i in range(len(list_value)):   #使用Python的类库直接访问Excel的表单是很缓慢的,不要在Python的循环中引用sheet等Excel表单的单元格,   #而是要用List一次性读取Excel里的数据,在List内存中计算好了,然后返回结果   start_value = list_value[i][1]   end_value = list_value[i][2]   if start_value <= end_value:     values = end_value- start_value     #同时测试List数组添加记录     row_content.append(values)#计算和total_values = sum(row_content)#记录结束循环计算时间end_run = time.time()sheet.range('E2').value = str(total_values)sheet.range('E3').value = '使用List 计算时间(秒):' + str(end_run - start_run)#保存并关闭Excel文件wb.save()wb.close()print ('结果总和:', total_values)print ('打开并读取Excel表单时间(秒):',  end_open_time - start_open_time)print ('计算时间(秒):',  end_run - start_run)print ('处理数据条数:' , len(row_content))

用Python的LIST在内存中计算结果如下:

读取Excel文件用时 4.02秒

处理Excel 10000 行数据花费了 0.10 秒的时间。

怎么在Python中利用xlwings读取Excel文件

6 结论:

Python操作Excel的类库有以往有 xlrd、xlwt、openpyxl、pyxll等,这些类库有的只支持读取,有的只支持写入,并且有的不支持Excel的xlsx格式等。

所以我们采用了最新的开源免费的xlwings类库,xlwings能够很方便的读写Excel文件中的数据,并支持Excel的单元格格式修改,也可以与pandas等类库集成使用。

VBA是微软Excel的原生二次开发语言,是办公和数据统计的利器,在金融,统计,管理,计算中应用非常广泛,但是VBA计算能力较差,支持的数据结构少,编辑器粗糙。

虽然VBA有很多不足,但是VBA的宿主Office Excel却是天才程序员基于c++开发的作品,稳定,高效,易用 。

有微软加持,VBA虽然数据结构少,运行速度慢,但访问自己Excel的Sheet,Range,Cell等对象却速度飞快,这就是一体化产品的优势。

VBA读取Excel的Range,Cell等操作是通过底层的api直接读取数据的,而不是通过微软统一的外部开发接口。所以Python的各种开源和商用的Excel处理类库如果和VBA来比较读写Excel格子里面的数据,都是处于劣势的(至少是不占优势的),例子2的VBA 花费了1.16秒就能处理完一万条数据。

Python基于开源,语法优美而健壮,支持面向对象开发,最重要的是,Python有丰富而功能强大的类库,支持多种工作场景的开发。

我们应该认识到,Excel对于Python而言,只是数据源文件的一种,当处理大量数据时,Python处理Excel就要把Excel当数据源来处理,一次性地读取数据到Python的数据结构中,而不是大量调用Excel里的对象,不要说频繁地写入Excel,就是频繁地读取Excel里面的某些单元格也是效率较低的。例子1的Python频繁读取Sheet,Range数据,结果花费了117秒才处理完一万条数据。

Python的计算效率和数据结构的操作方便性可比VBA强上太多,和VBA联合起来使用,各取所长是个好主意。

当Excel数据一次性读入Python的内存List数据结构中,然后基于自身的List数据结构在内存中计算,例子3的Python只用了 0.1秒就完成了一万条数据的计算并将结果写回Excel。

总结

处理方式-计算Excel里的一万条记录的差值的总和效率
1. 使用Python的xlwings类库,采用Excel的Sheet和Range的引用方式,按行读取Excel文件的记录并计算差,计算用时 117秒
2. 直接使用Excel自带的VBA语言进行计算,也是采用Excel的Sheet和Range的引用方式,按行读取Excel文件的记录并计算很高 ,计算用时 1.16秒

 使用Python的xlwings类库,一次性读取Excel文件中的数据到Python的List数据结构中,然后在Python的List列表中进行数据存储和计算

最高,计算用时 0.1秒     

关于怎么在Python中利用xlwings读取Excel文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网Python频道了解更多相关知识。

--结束END--

本文标题: 怎么在Python中利用xlwings读取Excel文件

本文链接: https://www.lsjlt.com/news/247301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Python中利用xlwings读取Excel文件
    怎么在Python中利用xlwings读取Excel文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 处理要求:一个Excel表格中包含了3万条记录,其中B,C两个列记录...
    99+
    2023-06-06
  • 如何在python中使用xlwings库读写excel
    如何在python中使用xlwings库读写excel?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、xlwings 中的逻辑:应用->工作簿->工作表->...
    99+
    2023-06-06
  • Excel文件怎么在Android应用中读取
    这篇文章给大家介绍Excel文件怎么在Android应用中读取,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。初始化变量:InputStream inputStream = null;//输入流FileOutputStr...
    99+
    2023-05-31
    android excel roi
  • 怎么在Python中利用流式读取大文件
    怎么在Python中利用流式读取大文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎...
    99+
    2023-06-14
  • C#中怎么读取Excel文件
    这期内容当中小编将会给大家带来有关C#中怎么读取Excel文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。private DataTable getTable() &nbs...
    99+
    2023-06-18
  • 怎么用C#读取Excel文件
    这篇文章主要讲解了“怎么用C#读取Excel文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用C#读取Excel文件”吧!C#读取Excel文件方法一:直接读取(这种直接读取单元格的方...
    99+
    2023-06-18
  • pandas怎么读取excel文件
    pandas读取excel文件的步骤:1、确保已经安装了Pandas库;2、导入Pandas库和其他可能需要的库;3、使用Pandas的“read_excel()”函数来读取Excel文件;4、对数据进行操作和分析,例如查看数据的前几行、查...
    99+
    2023-11-21
    Pandas Excel文件
  • 利用Python实现读取Word文档里的Excel附件
    目录解压缩Microsoft OLE2 文件分析与提取分析安装提取再次使用 file 分析完整代码如下使用正确的后缀保存附件安装获取后缀安装获取后缀正确的文件名群里有人提出这么一个需...
    99+
    2022-12-16
    Python读取Word中Excel附件 Python读取Excel附件 Python Word Excel
  • excel文件任何利用POI进行读取
    这篇文章给大家介绍excel文件任何利用POI进行读取,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是Apache POI?Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS ...
    99+
    2023-05-31
    poi excel
  • 怎么利用js读取excel文件并绘制echarts图形
    这篇“怎么利用js读取excel文件并绘制echarts图形”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么利用js读取e...
    99+
    2023-06-30
  • 怎么用c#读取excel文件内容
    你可以使用Microsoft.Office.Interop.Excel命名空间下的Excel对象来读取Excel文件内容。 首先,你...
    99+
    2023-10-22
    C# excel
  • java怎么读取excel文件内容
    可以使用Apache POI库来读取Excel文件内容。首先,你需要下载并导入Apache POI库。你可以在官方网站(https:...
    99+
    2023-09-20
    java excel
  • 用Python的pandas读取excel文件中的数据
    一、前言 hello呀!各位铁子们大家好呀,今天呢来和大家聊一聊用Python的pandas读取excel文件中的数据。 二、读取Excel文件 使用pandas的read_excel()方法,可通过文件路径直接读取。注意到,在一个exce...
    99+
    2023-09-01
    python excel 软件测试 自动化测试 测试工程师
  • 怎么在python中读取全部文件
    本篇文章为大家展示了怎么在python中读取全部文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4...
    99+
    2023-06-14
  • 怎么在python中按行读取文件
    这期内容当中小编将会给大家带来有关怎么在python中按行读取文件,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、read 方法默认会把文件的 所有内容一次性读取到内存如果文件太大,对内存的占用会非常严...
    99+
    2023-06-15
  • 怎么用vbs读取Excel文件的函数
    这篇文章主要介绍了怎么用vbs读取Excel文件的函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:Function ReadExcel( myXlsFile, m...
    99+
    2023-06-08
  • 怎么中python读取大文件
    本篇文章为大家展示了怎么中python读取大文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞...
    99+
    2023-06-14
  • 怎么在PHP中读取文件
    小编给大家分享一下怎么在PHP中读取文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.fread语法:fread  ( reso...
    99+
    2023-06-14
  • 如何使用Python读取和修改Excel文件
    这篇文章给大家介绍如何使用Python读取和修改Excel文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、使用xlrd模块对xls文件进行读操作假设我们的表如下,是一个“农村居民家庭人均纯收入和农村居民家庭人均消...
    99+
    2023-06-21
  • PHP中怎么实现一个读取Excel文件类
    本篇文章为大家展示了PHP中怎么实现一个读取Excel文件类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。PHP读取Excel文件类代码示例:< php  &nb...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作