从python保存的Excel文件中读取值而不是公式

时间:2020-07-23 15:53:17

标签: python pandas openpyxl xlrd

我正在使用openpyxl将一些数据复制到我的Excel工作表中,然后从另一个工作表中读取一些数据。第二张工作表具有链接到第一张工作表的公式。当我尝试使用data_only=True选项阅读第二张纸时,我无法恢复这些值。我只是得到None而不是值。我认为这是因为我正在使用openpyxl保存excel文件。
在excel文件的 Input 工作表中编写的代码:

from openpyxl import load_workbook
matched_airfoil_cos = np.load('airfoil_cos.npy')

wb = load_workbook('blockMeshDictGenerator_v3.xlsx')
ws = wb['Input'] 
shift = 9
for index, data in enumerate(matched_airfoil_cos):
    ws.cell(row=index+shift, column=1).value = data[0]
    ws.cell(row=index+shift, column=2).value = data[1]
   
wb.save('blockMeshDictGenerator_v4.xlsx')

从Excel文件的 blockMesh 表读取的代码

import openpyxl
import csv

wb = openpyxl.load_workbook('blockMeshDictGenerator_v4.xlsx',data_only=True)
sh = wb['blockMesh'] 
print(sh['C27'].internal_value)

with open('test.csv', 'w') as f:  
    c = csv.writer(f)
    for r in sh.rows:
        c.writerow([cell.value for cell in r])

我也尝试了xlrd库。但是,甚至脐带库也没有给我提供帮助。

我的最终目标是将 blockMesh 表中的值存储到文本文件中,为此,我可以使用pandas read_csv函数。
任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

您需要将新文件通过无头LibreOffice之类的应用程序传递,以便为您计算公式的结果,然后可以使用纯数据模式。

此外,请使用ws.iter_rows(min_row=shift+1, min_col=1, max_col=2)避免使用您自己的计数器。

相关问题