从 python 保存的 excel 文件中读取值而不是公式
Read values instead of formulas from excel file saved by python
我正在使用 openpyxl 将一些数据复制到我的 excel sheet,然后从另一个 sheet 读取一些数据。第二个 sheet 具有链接到第一个 sheet 的公式。当我尝试使用 data_only=True
选项读取第二个 sheet 时,我无法恢复这些值。我只是得到 None 而不是值。我认为这是因为我正在使用 openpyxl 来保存 excel 文件。
在excel文件的Inputsheet中写入的代码:
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文件blockMeshsheet中读取的代码
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 库。但即使是 cord 库也没有给我这些价值。
我的最终目标是将 blockMesh sheet 中的值存储到文本文件中,为此,我可以使用 pandas read_csv
函数。
任何帮助表示赞赏。谢谢。
您需要通过某种应用程序(如无头 LibreOffice)传递新文件,让它为您计算公式的结果,然后您可以使用纯数据模式。
此外,使用 ws.iter_rows(min_row=shift+1, min_col=1, max_col=2)
避免使用您自己的计数器。
我正在使用 openpyxl 将一些数据复制到我的 excel sheet,然后从另一个 sheet 读取一些数据。第二个 sheet 具有链接到第一个 sheet 的公式。当我尝试使用 data_only=True
选项读取第二个 sheet 时,我无法恢复这些值。我只是得到 None 而不是值。我认为这是因为我正在使用 openpyxl 来保存 excel 文件。
在excel文件的Inputsheet中写入的代码:
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文件blockMeshsheet中读取的代码
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 库。但即使是 cord 库也没有给我这些价值。
我的最终目标是将 blockMesh sheet 中的值存储到文本文件中,为此,我可以使用 pandas read_csv
函数。
任何帮助表示赞赏。谢谢。
您需要通过某种应用程序(如无头 LibreOffice)传递新文件,让它为您计算公式的结果,然后您可以使用纯数据模式。
此外,使用 ws.iter_rows(min_row=shift+1, min_col=1, max_col=2)
避免使用您自己的计数器。