【问题标题】:How is text value stored in Excel cell that references an xla add-in function?文本值如何存储在引用 xla 加载项函数的 Excel 单元格中?
【发布时间】:2018-02-20 18:56:16
【问题描述】:

我有一个要解析的 xlsx 文件,其中一个单元格引用了 xla 加载项函数。

='C:\Program Files (x86)\abc\Query and Analysis\LsAgXLB.xla'!AG_SMRT("0,Summary Report 1,1")

该文件在我的本地计算机上不存在,但可能存在于创建该文件的人身上。

但是,查看 Excel 中的单元格,它确实显示了一个文本值“CTP116701”。但是单元格的实际值是 xla 函数。它在哪里以及如何拉动“CTP116701”的价值?

我正在尝试使用 Python 和 openpyxl 来解析电子表格。

【问题讨论】:

  • 这可能是外接程序 UDF 放置的值吗?
  • 我不得不假设它是,但我的机器上肯定不存在加载项和 xla 文件。我在 ADD-INS 选项卡下什么也看不到。我对 Excel 工作原理的了解非常有限。
  • 一般来说,如果打开工作表时没有链接,则会显示最后计算的“值”。 Excel 存储该值和链接。我没有检查当结果来自存储在加载项中的公式时是否会发生这种情况,但我认为同样的规则适用。
  • 如果您想进一步探索,并且您使用的是 xlsm 文件,请将文件扩展名更改为 .zip。然后打开它并查看工作表和单元格,然后按照参考资料进行操作。您将看到最后计算的“值”以及基本“公式”都可以从其中的内容中得出。此外,在工作表中,如果您尝试更新该值,您可能会收到错误消息。
  • 感谢您提供有关 .zip 扩展名的提示 - 它让我找到了答案!

标签: excel xlsx openpyxl xla


【解决方案1】:

我能够通过以 data_only 模式打开工作簿来提取单元格的先前计算和存储的值:

wb = openpyxl.load_workbook(filename, data_only=True)

在调查时,我确实将文件扩展名更改为 .zip 并找到了工作表 xml 文件。这很有帮助,因为我可以看到“CTP116701”值确实与函数字符串一起存储在单元格中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多