我遇到了这个问题,因为cell.value函数返回用于单元格的公式,我需要在操作后提取Excel提供的结果.
谢谢.
好吧,我想我找到了解决办法; 显然要访问cell.internal值,你必须先在工作表中使用iter_rows(),这是一个"RawCell"列表.
for row in ws.iter_rows():
for cell in row:
print cell.internal_value
Run Code Online (Sandbox Code Playgroud) 我大多只使用 xlwings 打开 ( read-write) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。
我注意到 xlwings 和 openpyxl 读取工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32阅读工作簿。当您阅读工作簿时xlwings.Book(<filename>),实际工作簿会打开。我有一种感觉,这是一个结果pywin32。
但是,使用openpyxl.load_workbook(<filename>)工作簿时不会出现窗口。我有一种感觉,这是不使用pywin32.
除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwings和pywin32阅读工作簿是否有好处/成本,而openpyxl不是似乎没有使用pywin32?
我有一个简单的Excel文件:A1 = 200 A2 = 300 A3 = = SUM(A1:A2)
此文件在excel中工作并显示SUM的正确值,但在使用openpyxl模块进行python时,我无法在data_only = True模式下获取值
shell中的Python代码:
wb = openpyxl.load_workbook('writeFormula.xlsx', data_only = True)
sheet = wb.active
sheet['A3']
<Cell Sheet.A3> # python response
print(sheet['A3'].value)
None # python response
Run Code Online (Sandbox Code Playgroud)
而:
wb2 = openpyxl.load_workbook('writeFormula.xlsx')
sheet2 = wb2.active
sheet2['A3'].value
'=SUM(A1:A2)' # python response
Run Code Online (Sandbox Code Playgroud)
有什么建议我在做什么?
我在从 xslx 文件读取公式值时遇到问题。为了获得价值,我使用 openpyxl,但是当我想获得价值时,我看到“无”。这是我的代码:
from openpyxl import *
wb = load_workbook('output.xlsx', data_only=True)
sh = wb["Sheet1"]
val=(sh['C5'].value)
Run Code Online (Sandbox Code Playgroud)
文件output.xlsx包含公式“C5=A1+B1”,单元格C5=2,但我无法获取该值。任何人都可以帮助我。可能我需要其他库来从 xslx 文件中读取公式的值。可能存在样本怎么办?我知道可以将此文件转换为其他格式以供阅读,但它不适用于此任务。
我有一个 excel 2010 文件,其中包含带有公式的单元格(请参阅下面的公式栏中的 C2)。(下面的截图1)

我正在使用 python 读取值,它正在打印公式而不是单元格的实际值(Eclipse 控制台下方的屏幕截图。)

我希望结果打印 10.188.11.184,这是由 excel 单元格的公式填充的值。如何做到这一点?提前致谢。
我需要使用公式从 Excel 单元格获取值,但我不需要公式。我需要一个值,但不需要单元格中的公式。我该怎么做?我尝试只使用
\nworking_sheet.cell(row=row_number, column=column_number+1).value\nRun Code Online (Sandbox Code Playgroud)\n并扩展一个列表。但我得到的清单就像
\n[\n \'2020\',\n \'\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd1\x8b\xd0\xb5 \xd0\xb3\xd1\x80\xd1\x83\xd0\xb7\xd1\x8b\',\n \'\xd0\x9a\xd0\x9e\xd0\x9b\xd0\xa3\xd0\x9c\xd0\x91\xd0\x98\xd0\xaf\',\n \'\xd0\x9d\xd0\x9e\xd0\x92.\xd0\x9f\xd0\x9e\xd0\xa0\xd0\xa2-\xd0\xad\xd0\x9a\xd0\xa1\',\n \'\xd0\x9d\xd0\x9e\xd0\x92.\xd0\x9f\xd0\x9e\xd0\xa0\xd0\xa2-\xd0\xad\xd0\x9a\xd0\xa1\',\n \'\xd0\x9d\xd0\x9e\xd0\x92.\xd0\x9f\xd0\x9e\xd0\xa0\xd0\xa2-\xd0\xad\xd0\x9a\xd0\xa1\',\n \'\xd0\x9d\xd0\x9e\xd0\x92.\xd0\x9f\xd0\x9e\xd0\xa0\xd0\xa2-\xd0\xad\xd0\x9a\xd0\xa1\',\n \'\xd0\x9c\xd0\x95\xd0\x9a\xd0\xa1\xd0\x98\xd0\x9a\xd0\x90\',\n \'\xd0\xbf\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xb3\xd0\xbe\xd0\xbd\xd0\xbd\xd0\xb0\xd1\x8f\',\n \'\xd0\xbf\xd0\xbe\xd1\x80\xd0\xbe\xd0\xb6\xd0\xbd\xd0\xb8\xd0\xb5\',\n \'0\',\n \'0\',\n \'=VLOOKUP(C28038,$AB$2:$AC$1048576,2,FALSE)\', \n \'=VLOOKUP(H28038,$AB$2:$AC$1048576,2,FALSE)\',\n \'=VLOOKUP(E28038,$X$2:$Y$1048576,2,FALSE)\',\n \'=VLOOKUP(F28038,$X$2:$Y$1048576,2,FALSE)\'\n]\nRun Code Online (Sandbox Code Playgroud)\n所以我不需要像这样的值=VLOOKUP...
我能做些什么?
\n