我试图在使用openpyxl在现有xlsx excel文件上写入后读取xlsx文件。在
我的Excel文件file1.xlsx
在A1
上有1
,在A2
上有2
,在A3
上有值A1 + A2
,此时是3
。在
def updateFile(a):
wb = load_workbook('file1.xlsx')
ws = wb.active
#Update specific column
ws['A1'] = a
wb.save('file1.xlsx')
def readFile():
wb = load_workbook('file1.xlsx')
sheet = wb['Sheet1']
print(sheet['A3'].value)
我的程序将在file1.xlsx
上更新A1
,并读取A3
上的数据。例如,调用updateFile(5)
会将A1
更新为5
,并可能在A3
上给我7
。在
不幸的是,在调用updateFile(5)
之后,readFile()
将给出{
这主要是因为Excel文件中的数据更新了,但没有保存。如果我想让readFile()
输出{file1.xlsx
,保存它,然后关闭它。在
有没有用openpyxl的读/写来解决这个问题?我认为我没有正确地保存文件,或者我必须想出一种方法来以编程方式打开、保存、关闭Excel文件。在
你看到的是预期行为。当单元格有公式时,Excel会将公式的结果保存为缓存值。openpyxl从不计算公式,因此从不维护缓存并使任何现有缓存失效。相反,如果需要公式的结果,则可以使用
data_only=True
参数加载文件。但这将用值替换公式。在文档中包含了这一点:http://openpyxl.readthedocs.org/en/stable/usage.html#read-an-existing-workbook
我也有同样的问题。我的方法如下:
对于任何可能遇到这种情况的人,如果您不介意从BitBucket源代码安装
openpyxl
,这里有一个(beta!)此处修复: https://bitbucket.org/cliffckerr/openpyxl/src/default/相关问题 更多 >
编程相关推荐