额..额... 发表于 2020-9-6 22:47:32

PYTHON操控EXCEL效率低下,求高手指教

各位大神,我在通过com操作excel的时候,发现同样的计算逻辑,PYthon需要极为漫长的时间方能给出结论(大概20秒,优化一下也顶多到9秒),可是用vba,同样的编程逻辑,却只需要不到1秒,甚至我还没有进一步优化。代码如下:
from win32com.client import Dispatch
xlapp=Dispatch("excel.application")
dic={}#建立一个字典,用来保存对应产品的加工费清单
wb=xlapp.workbooks("2020年公司加工费索赔表(正式版)")
sheets=wb.worksheets
for sheet in sheets:
    sheet_name=sheet.name
    sheet_cells=sheet.cells
    if sheet_name!="2019年加工费拟定":#“2019年加工费拟定”这个表是汇总表,没有我需要的东西,特此不在本程序的考虑范围内,不需要参与统计
      if sheet_name not in dic:#判断该子表的名称(也就是物料编号,每个子表都已经用物料编号来命名)是否已经存在字典里
            dic={}#在字典里面插入关键字(物料编号),并绑定一个新的子字典,用来存放该物料号下各个工序(工序名称作为子字典的关键字),以及工序对应的价格
            lbound=sheet.usedrange.rows.count#判定工序终止的行数
            ubound=sheet_cells.find("工序").row#查找工序开始的具体行数(列数已经知道是第二列)
            for i in range(ubound,lbound):#用循环从工序开始的行数,一直到终止的行数
                if sheet_cells(i,2).value not in dic:
                  dic=sheet_cells(i,7).value#在子字典(产品编号)里面插入工序作为关键字,对应的第七列的同行数据就是工序对应的加工费
print(dic)

疾风怪盗 发表于 2020-9-6 22:56:54

数据处理比较好的使用pandas吧,可以试试

额..额... 发表于 2020-9-7 00:04:50

我听说过pandas处理数据挺厉害,但是我觉得我不能光靠PANDAS,毕竟我经常需要操控OFFICE的对象和属性方法,pandas不能支持这些对象与方法的重复性(或者说循环)操作吧

疾风怪盗 发表于 2020-9-7 00:43:51

额..额... 发表于 2020-9-7 00:04
我听说过pandas处理数据挺厉害,但是我觉得我不能光靠PANDAS,毕竟我经常需要操控OFFICE的对象和属性方法, ...

pandas处理数据,输出,然后openpyxl设置excel格式,差不多了吧,能应该大部分操作了
你觉得慢,主要还是在处理数据上,pandas处理起来还是蛮方便蛮快的
页: [1]
查看完整版本: PYTHON操控EXCEL效率低下,求高手指教