Python 从excel文件中读取缓存的外部字段,结果与我在excel中看到的不同

Python 从excel文件中读取缓存的外部字段,结果与我在excel中看到的不同,python,excel,python-3.x,xlrd,Python,Excel,Python 3.x,Xlrd,我试图在python3中使用xlrd读取excel文件,但我没有从读取单元格中获得结果,因为我在excel中确实看到了这些单元格 我试图访问的单元格似乎有一些外部源集,可以从中刷新,但由于该源对我不可用,excel会显示一些缓存的值。这些值位于同一excel文件中的其他位置,因此当您在工作表中看到例如“2.65111”时,单元格的实际内容在excel的此编辑栏中显示为“=BC12” 当我试图通过xlrd阅读此内容时,如: wb=xlrd.open_workbook("filename.xls",

我试图在python3中使用xlrd读取excel文件,但我没有从读取单元格中获得结果,因为我在excel中确实看到了这些单元格

我试图访问的单元格似乎有一些外部源集,可以从中刷新,但由于该源对我不可用,excel会显示一些缓存的值。这些值位于同一excel文件中的其他位置,因此当您在工作表中看到例如“2.65111”时,单元格的实际内容在excel的此编辑栏中显示为“=BC12”

当我试图通过xlrd阅读此内容时,如:

wb=xlrd.open_workbook("filename.xls",formatting_info=True)
wb.sheet_by_name("sheetname").cell(12,9)
单元格内容显示为:

'text:'[XXXX]' (XF:95)'
(其中XXXX很可能是此外部.csv文件的一列名称)

我希望xlrd返回我在excel中看到的“2.65111”,或者至少返回“=BC12”作为对另一个单元格的引用,但我不能以任何方式使用“[XXXXX]”这个东西

有没有办法让xlrd显示这两个选项中的任何一个

我真的很困惑这个“[XXXXX]”是从哪里来的,以及为什么它与我在excel中看到的东西如此不同


PS:我不能只使用BC12单元格中的数据,因为这应该是文件的自动处理,只有“原始”单元格有一个固定位置,而这些其他单元格可以在第二天位于另一个随机位置。

一个解决方案可能是制作一份只包含值的excel工作表副本,没有公式或外部来源


您可以通过突出显示并复制所有内容,然后将“特殊粘贴”到新的工作表中,然后选择“仅值”或类似的内容来完成此操作。

众所周知,“12,9单元格”被称为J13(而不是J12)。你确定你是在比较同类吗?是否预计J13将包含对BC12的引用?通过检查J13和BC12周围的单元格,您能推断出什么吗?

您唯一的选择可能是通过Excel COM API使用实际的Excel对文件进行预处理。您可以在.NET中执行一些简单的操作,加载excel文件,获取数据并将其保存在结构类似的excel文件中,但不包含外部引用。用excel加载excel文件需要很长时间(几秒钟),如果在服务器上过载,肯定会失败,但如果您每天只有几个文件,它就会工作。当然,如果您没有在Windows上运行,它将不起作用。

您说“其中XXXX很可能是此外部.csv文件的一列名称”。。。什么外部csv文件?是什么让你得出这样的结论?BC12单元中的公式是什么?你能让xls文件的副本用于分析吗?当你这样做时会发生什么:
wb.sheet\u by_name(“sheetname”).cell(12,9)。value
?@eazar001:它返回“[XXXX]”@JohnMachin:BC12单元格不包含公式,而是一个字符串“2.6511”。我不熟悉英文excel对这些东西的称呼,但当你点击“连接”按钮上的“数据”选项卡时,它会在那里显示外部文件。此外,当您右键单击12,9单元格时,您可以选择转换为“数据区属性”的内容。该文件无法公开使用。@Plasmah,您在excel文档中使用的是什么语言?日语、西班牙语、英语……?哦,我假设我正在尝试编写一个脚本来自动处理excel文件(每天都会向我发送更新的数据)。我不确定是什么让J12出现在这里,我想访问的就是这个单元格。实际上,还有更多的单元格,它们的行为方式都相同(只是可能有不同的.csv头名称)。不幸的是(或者不是,取决于)我需要在Linux上运行所有这些。据我所知,使用Excel(以及Office)的最佳库是Aspose.cells。我只使用了它的.NET版本,但还有一个Java版本可以在Linux上运行。他们有一个试验,所以你可以测试,如果做的把戏。