python 高效处理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))

 

posted @ 2023-08-28 11:14  myrj  阅读(170)  评论(0编辑  收藏  举报