web-dev-qa-db-ja.com

Openpyxl 1.8.5:openpyxlを使用してセルに入力された数式の結果を読み取る

Excelシートの1つに数式を印刷しています。

wsOld.cell(row = 1, column = 1).value = "=B3=B4"

しかし、その結果を他のロジックの実装に使用することはできません。

if((wsOld.cell(row=1, column=1).value)='true'):
    # copy the 1st row to another sheet

コマンドラインで結果を印刷しようとしても、次の式を印刷することになります。

>>> print(wsOld.cell(row=1, column=1))
>>> =B3=B4

数式自体ではなく、セル内の数式の結果を取得するにはどうすればよいですか?

13
ravikant

openpyxlは、数式または数式の値のいずれかをサポートします。ブックを開くときにdata_onlyフラグを使用してどちらを選択できます。ただし、openpyxlは数式の結果を計算しませんし、計算しません。これを行うことを目的としたpycelのようなライブラリがあります。

22
Charlie Clark

Openpyxlとパンダの組み合わせを使用して問題を解決しました:

import pandas as pd
import openpyxl
from openpyxl import Workbook , load_workbook


source_file = "Test.xlsx"
# write to file
wb = load_workbook (source_file)
ws = wb.active
ws.title = "hello world"
ws.append ([10,10])
wb.save(source_file)

# read from file
df = pd.read_Excel(source_file)
sum_jan = df ["Jan"].sum() 
print (sum_jan)
1
rainer

Openpyxlは、数式の計算にExcel 100%をサポートしていません。非常に基本的な式のみをサポートします。ワークブック内のすべての数式を計算する場合は、 xlwings ライブラリ(MacOSおよびWindowsでのみサポートされています)を使用する必要があります。

1
vidur-88