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

2024-06-16 11:24:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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)

单元格内容显示为:

^{pr2}$

(其中XXXX很可能是此外部.csv文件的列的名称)

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

有没有办法让xlrd显示这两种情况中的任何一种?

我真的很困惑这个“[XXXXX]”来自哪里,为什么它和我在excel中看到的有如此大的不同。在

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


Tags: 文件编辑内容openfilenamexlsexcelpython3
3条回答

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

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

一种解决方案可能是制作一个只包含值、不包含公式或外部源的excel表的副本。在

你可以通过高亮显示和复制所有内容,然后“粘贴特殊”到一个新的工作表,并选择“仅值”或类似的东西。在

相关问题 更多 >