有没有一种有效的方法可以将命名范围从Excel读取到Python?我的运行时间非常长

时间:2019-01-17 16:28:27

标签: python openpyxl

我有一个包含多个工作表和许多命名范围的Excel文件。这些是我想输入到我正在使用Python开发的模型中的不同参数。现在的问题是,如何在合理的时间内使这些参数在Python中可用。

我尝试了各种不同的模块来读取Python中的Excel数据,而我最喜欢的模块是openpyxl(它似乎也是最受欢迎的模块之一)。 我现在遇到的问题是运行时间长得令人难以忍受。对于仅300行x 100列= 30,000个单元格的范围,它要花费30分钟以上,这令人沮丧,因为其他程序可以在几秒钟内读取这些数据。
我不是Python或数据结构方面的专家,所以我很高兴能改进我的代码,因此在更大范围内不需要花几个小时。

wb = openpyxl.load_workbook(path, data_only=True, read_only=True)

parameter_names = [i.name for i in wb.get_named_ranges()]
parameters = {}
for parameter in parameter_names:
    ws, cellrange = next(wb.defined_names[parameter].destinations)
    if len(wb[ws][cellrange][0]) > 1:
        parameters[parameter] = [[wb[ws][cellrange][row][column].value for column in range(len(wb[ws][cellrange][row]))] for row in range(len(wb[ws][cellrange]))]
    else:
        parameters[parameter] = [wb[ws][cellrange][row][0].value for row in range(len(wb[ws][cellrange]))]

如果遇到类似问题或只知道如何处理此类问题的人可以分享他们的见解,那将是很棒的。通过向我展示如何修改自己的代码(这是理想选择)或建议其他方法。非常感谢!

0 个答案:

没有答案