Python 复制工作簿的速度提高10倍';的工作表,该工作表在当前工作簿中有100k行
我知道这可能已经被问了一百次了,但是有没有一种方法可以让我下面的代码更快,甚至更快,甚至更快10倍?我喜欢Python Excel代码等 这可能是一个更为不同的问题,因为我不仅仅局限于简单的VBA 代码:Python 复制工作簿的速度提高10倍';的工作表,该工作表在当前工作簿中有100k行,python,excel,vba,powerquery,Python,Excel,Vba,Powerquery,我知道这可能已经被问了一百次了,但是有没有一种方法可以让我下面的代码更快,甚至更快,甚至更快10倍?我喜欢Python Excel代码等 这可能是一个更为不同的问题,因为我不仅仅局限于简单的VBA 代码: 我也对PowerQuery-then-refresh路线持开放态度。根据您选择使用的资源,有几种可能的途径可以通过它 您没有提到是否要复制值、公式或两者。我只假设值 如果您可以在工作簿关闭时进行复制,那么pyopenxl或xlrd和xlwrt就可以做到这一点。这两种方法都可以复制值和公式,但这
我也对PowerQuery-then-refresh路线持开放态度。根据您选择使用的资源,有几种可能的途径可以通过它 您没有提到是否要复制值、公式或两者。我只假设值 如果您可以在工作簿关闭时进行复制,那么pyopenxl或xlrd和xlwrt就可以做到这一点。这两种方法都可以复制值和公式,但这两种方法都不能计算公式,但从您的描述来看,这听起来没问题 如果在进行复制或移动时需要打开工作簿,有一些很棒的解决方案可以使用COM集成Python和Excel,和DataNitro。使用这些解决方案,您可以编写一些Python代码进行复制。如果只需要值,可以使用数据帧来移动数据 我只使用了xlwings(和[FlyingKoala]——使用xlwings)。xlwings促进了Python和Excel之间的双向通信,因此您可以从Excel调用Python,也可以从Python调用Excel(包括VBA)。这项技术可以大大加快操作速度,尤其是在报告和建模方面 还有一个额外的优势,他们可以读取Excel公式并将其转换为Python代码,然后执行(评估)动态生成的Python代码 使用xlwings仅复制值的示例。我用它复制了100000行26列(A到Z),耗时17秒
import xlwings as xw
import numpy as np
@xw.func
@xw.arg('range_to_copy', np.array, doc='')
@xw.ret(index=False, header=False, expand='table')
def copy_values(range_to_copy):
return range_to_copy
这回答了你的问题吗@Variatus我只是需要帮助,我还问Pyhon VBA(如果有这样的东西)是否比单纯的VBA好一点。@0m3r谢谢。我会去那个网站。bradbase在我看到你的帖子之前,我实际上已经导入了xlwings,但从来没有机会去探索它。这些是我的要求,closebook closed,我只复制值,但就像其他原始文件一样,它们有头,我唯一的Python问题是我们公司严格要求,不确定我是否可以在最终用户端轻松安装Python(和其他库)。但我仍然对它持开放态度。Openpyxl或xlrd和xlwrt可能会做得足够好。这只是编写迭代器将值从工作表a中的单元格传输到工作表B的一种情况。Openpyxl能够告诉您工作表中的哪些单元格已满(worksheet.cell_范围为左和右),并优化了读写模式以获得更好的性能。在安全性方面,openlyxl能够抵御一些xml攻击;“默认情况下,openpyxl不会防范二次放大或十亿笑xml攻击。要防范这些攻击,请安装defusedxml。”非常感谢,bradbase。我将探索openpyxl,也许最好先关注一个。嘿,你拥有bradbase.net网站吗?那又怎样?老而金。再次感谢你的帮助。
import xlwings as xw
import numpy as np
@xw.func
@xw.arg('range_to_copy', np.array, doc='')
@xw.ret(index=False, header=False, expand='table')
def copy_values(range_to_copy):
return range_to_copy