主页 > TokenPocket下载 > 「TokenPocket钱包官方」如何在Python中利用xlwings读取Excel文件

「TokenPocket钱包官方」如何在Python中利用xlwings读取Excel文件

admin TokenPocket下载 2022年07月08日

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

5.使用Python的xlwings类库,读取Excel文件,然后采用Python的自带数据类型List进行数据存储和计算,计算完成后再将结果写到Excel表格中#coding=utf-8 import xlwings as xw import pandas as pd import 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').value for 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在内存中计算结果如下:

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

  XLS_READ_LIST.py  

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

总结:处理方式-计算Excel里的一万条记录的差值的总和   效率  

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

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

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

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

本文主要介绍"如何在Python中利用xlwings读取Excel文件",希望能够解决您遇到有关问题,下面我们一起来看这篇 "如何在Python中利用xlwings读取Excel文件" 文章。

2. 直接使用Excel自带的VBA语言进行计算   VBA  

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

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

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

读取Excel文件用时 4.02秒

#coding=utf-8 import xlwings as xw import pandas as pd import time start_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   xlwings   Python     编程宝库