数式の操作
概要
Aspose.Cells FOSS stores formulas as Excel-compatible strings. The library does not evaluate formulas internally — it preserves the expression verbatim in the file, and the spreadsheet application (Excel, LibreOffice Calc, or any compatible reader) computes the result when the file is opened.
セルに数式を配置する方法は 2 つあります::
- セルコンストラクタ —
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)") .formulaプロパティ —ws.cells["A4"].formula = "=SUM(A1:A3)"
どちらのアプローチも同じデータを保存します。シートを最初から構築する場合はコンストラクタ形式がコンパクトです;既に既存のセルへの参照を持っていて、そのセルに数式を付加したい場合はプロパティ形式の方が自然です。.
Cell コンストラクタで数式を設定する
その Cell コンストラクタのシグネチャは Cell(value, formula). 純粋なものを作成するには 数式セル、パス None 値として、式文字列を第2として 議論::
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##Input values
ws.cells["A1"] = Cell(10)
ws.cells["A2"] = Cell(25)
ws.cells["A3"] = Cell(15)
##Formula cell: value=None, formula="=SUM(A1:A3)"
ws.cells["A4"] = Cell(None, "=SUM(A1:A3)")
workbook.save("formula_constructor.xlsx")
print("Saved formula_constructor.xlsx")設定 value=None セルに静的な値がないことを明示します — その 表示される内容はすべて数式から取得されます。非None 値 数式と一緒に使用することは許可されていますが、まれです;ほとんどのスプレッドシートリーダーは表示します 数式の結果を表示し、保存された値は無視します。.
数式を設定するには .formula プロパティ
直接代入する cell.formula すでにセル参照を保持している場合、または 以前に値が書き込まれていたセルに数式を追加したい場合:
from aspose.cells_foss import Workbook
workbook = Workbook()
ws = workbook.worksheets[0]
##Write input data
for i, val in enumerate([4, 8, 15, 16, 23], start=1):
ws.cells[f"A{i}"].value = val
##Attach a formula to an existing cell reference
cell = ws.cells["B1"]
cell.formula = "=AVERAGE(A1:A5)"
##Or assign directly by address
ws.cells["B2"].formula = "=MAX(A1:A5)"
ws.cells["B3"].formula = "=MIN(A1:A5)"
workbook.save("formula_property.xlsx")
print("Saved formula_property.xlsx")数式を読み戻す
数式セルを書き込んだ後、使用します .formula 式文字列を取得するために および .value それに付随して保存されている静的な値(存在する場合)を取得するために。.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
ws.cells["A1"] = Cell(None, "=SUM(B1:B5)")
cell = ws.cells["A1"]
print(cell.formula) # =SUM(B1:B5)
print(cell.value) # None (no static value was set)実際には、, .value は None で作成された任意のセルに対して Cell(None, formula). 計算済みの値が保存された既存のブックを読み込む場合 数式とともにキャッシュされた、, .value 最後にキャッシュされた結果を返すことがあります — ただし、 この動作は、元のアプリケーションがファイルを保存した方法に依存し、 新しい計算に依存すべきではありません。.
実行時に数式セルと単純な値セルを区別するには::
cell = ws.cells["A1"]
if cell.formula:
print(f"Formula cell: {cell.formula}")
else:
print(f"Value cell: {cell.value}")一般的なExcel数式
以下の表は、頻繁に使用されるExcel関数と、Aspose.Cells FOSS に直接渡すことができる例の数式文字列を一覧にしたものです。.
| 目的 | 式文字列 | 注記 |
|---|---|---|
| 範囲の合計 | =SUM(A1:A10) | 範囲内のすべての数値を加算します |
| 範囲の平均 | =AVERAGE(A1:A10) | 空白セルを無視します |
| 最大値 | =MAX(A1:A10) | 最大の数値を返します |
| 最小値 | =MIN(A1:A10) | 最小の数値を返します |
| 数値セルの数をカウント | =COUNT(A1:A10) | 数値のみのセルをカウント |
| 空でないセルをカウント | =COUNTA(A1:A10) | 空白でないセルをカウント |
| 条件付きの値 | =IF(A1>100,"High","Low") | 3 引数形式: テスト, 真の場合の結果, 偽の場合の結果 |
| 垂直検索 | =VLOOKUP(D1,A1:B10,2,FALSE) | 完全一致(FALSE) 推奨 |
| 文字列を連結 | =CONCATENATE(A1," ",B1) | または使用 =A1&" "&B1 |
| 数値を丸める | =ROUND(A1,2) | 第2引数は小数点以下の桁数です |
すべての数式文字列は次で始まる必要があります =. 関数名は…において大文字小文字を区別しません Excel 互換ファイルですが、従来の大文字形式は上記に示されています 可読性。.
完全な例
以下の例は、列Aに数値の5行データセットを作成し、列BにSUM、AVERAGE、MAX、MINの数式を書き込み、結果をXLSXファイルとして保存します。.
from aspose.cells_foss import Workbook, Cell
workbook = Workbook()
ws = workbook.worksheets[0]
##--- Headers ---
ws.cells["A1"].value = "Value"
ws.cells["B1"].value = "Formula"
ws.cells["C1"].value = "Result (evaluated by Excel)"
##--- Input data in A2:A6 ---
input_values = [14, 28, 7, 35, 21]
for i, val in enumerate(input_values, start=2):
ws.cells[f"A{i}"].value = val
##--- Formula labels in B column ---
ws.cells["B2"].value = "SUM"
ws.cells["B3"].value = "AVERAGE"
ws.cells["B4"].value = "MAX"
ws.cells["B5"].value = "MIN"
##--- Formulas in C column ---
ws.cells["C2"] = Cell(None, "=SUM(A2:A6)")
ws.cells["C3"] = Cell(None, "=AVERAGE(A2:A6)")
ws.cells["C4"] = Cell(None, "=MAX(A2:A6)")
ws.cells["C5"] = Cell(None, "=MIN(A2:A6)")
##--- Save ---
workbook.save("formulas_demo.xlsx")
print("Saved formulas_demo.xlsx")このファイルをExcelまたはLibreOffice Calcで開くと、列Cに次のように表示されます。:
| 行 | 数式 | 期待結果 |
|---|---|---|
| C2 | =SUM(A2:A6) | 105 |
| C3 | =AVERAGE(A2:A6) | 21 |
| C4 | =MAX(A2:A6) | 35 |
| C5 | =MIN(A2:A6) | 7 |
注記
数式文字列は次で始める必要があります =
ライブラリは文字列をそのまま保存します。先頭の = が原因で スプレッドシートリーダーがテキストを数式ではなくリテラル文字列として扱うようにします。.
##Correct — starts with =
ws.cells["A1"].formula = "=SUM(B1:B5)"
##Wrong — treated as the literal text "SUM(B1:B5)", not a formula
ws.cells["A1"].formula = "SUM(B1:B5)"範囲参照は標準のExcel A1表記を使用します
行と列の範囲は次のように記述されます FirstCell:LastCell 大文字の列 文字と 1 から始まる行番号で: "A1:A10", "B2:D5", "C3:C3". FOSS ライブラリは範囲文字列を変換したり検証したりしません — 無効な範囲は そのまま保存され、オープン時にスプレッドシートリーダーでエラーが発生します。.
数式は文字列として保存され、評価はされません
Aspose.Cells FOSS does not include a formula engine. If you need the computed Python の数式の結果(たとえば、さらに計算を行うために)、, 自分で値を計算し、静的な値として書き込みます .value. 使用 エンドユーザーがスプレッドシートアプリケーションでファイルを開く場合にのみ、数式を使用してください それらを評価できるもの。.
参照
- API リファレンス: 完全なクラスとメソッドのドキュメント
aspose.cells_foss - ナレッジベース: タスク指向のハウツーガイド
- 製品概要: 機能と能力の概要
- はじめに / インストール: pip インストールとセットアップ
- ブログ: Aspose.Cells FOSS の紹介: ライブラリ概要とクイックスタート