python - 将 Excel 单元格值直接读取到复杂的 Python 对象,DataNitro

标签 python excel datanitro

我正在开发一个程序,该程序允许我执行诊断并从包含数百个 Excel 工作表的文件中提取数据。我正在使用 DataNitro 插件。

我的程序有两个阶段:

第一阶段:诊断:程序读取每张工作表上特定用户输入列中的每个单元格,并将字典和列表返回到 Excel 选项卡中。列表的一个示例是:要提取的数据的开始/结束行。缺少或具有异常值等的工作表和观察列表。这些对象有两个目的 1) 允许用户识别在提取数据之前应检查的值,以及 2) 描述每个工作表的数据结构。

第二阶段:数据提取程序使用第一阶段创建的对象,从各个工作表中提取数据,并将其编译到新工作表上。

该程序运行得非常好,我能够非常快速地提取数以千计的观察结果(当你知道我的前任工作人员是手工完成的!!!)。

问题来了:

为了让第二阶段发生,它使用在第一阶段创建的对象。这意味着,一旦诊断阶段结束,并且用户已经重复了足够的次数,直到他对数据已准备好被提取感到满意为止,整个程序必须从头开始重新运行。这绝对是一种低效率,特别是因为诊断阶段可能需要几分钟。所以我想知道的是,是否有某种方法可以将单元格值中包含的列表读回 python 作为它们预期的对象类型?如果有的话,我可以使用第一阶段的对象,因为它们出现在 excel 表中,并将它们直接带到第二阶段,而无需重新运行第一阶段程序。

例如:其中一个字典有一个表示工作表编号的键,一个条目本身是一个字典列表,其中的键是观察值,一个条目是一个列表,在该列表中可以找到观察值的行。 ..

{'Sheet1': [{'OBSERVATION4': [12, 13, 14]}, {'OBSERVATION12': [29, 31, 35]}], 'Sheet12': [{'OBSERVATION7': [6 , 7, 9]}, {'OBSERVATION18': [40, 44, 48]}]}

在 Excel 单元格中,这仅显示为字符串。

如何将这种类型的复杂对象直接读回 python???

谢谢

最佳答案

您可以将字符串传递给 eval 函数,该函数会将其作为 Python 代码进行评估。例如,如果您在名为“数据表”的工作表的单元格 A1 中有该字符串,您可以这样做

my_dict = eval(Cell("Data Sheet", "A1").value)

将字典加载回 my_dict

通常,您在使用 eval 函数时应该小心,因为评估任意用户输入是一个安全漏洞。 (例如,您不想在网站上这样做。)不过,在这种情况下,用户无论如何都可以编写和运行自己的代码,所以这不是问题。

关于python - 将 Excel 单元格值直接读取到复杂的 Python 对象,DataNitro,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463434/

相关文章:

python - 在同一管理页面上使用两个模型

python - 我可以在 Python 中动态更改单个处理程序的日志级别吗?

python - 使用 Numpy 转换为 Web 墨卡托

datanitro - datanitro 会在 30 天后停止工作吗?

python - 使用DataNitro,如何打印python循环到excel,确保打印23行后,打印移动到相邻列?

python - 异步: run one function threaded with multiple requests from websocket clients

excel - 无法理解为什么 VBA 在验证 If 语句时退出我的 For-Next 循环

iphone - 如何使用 objective-c 从 Excel 文档中读取单元格数据

c# - Excel - 通过 .Net 客户端的 OleDB 引用值

python - Data Nitro 和正则表达式 (Python)