Skip to content

WASM API

正式な TypeScript 宣言はパッケージ同梱の dist/formulon.d.ts です。このページは主要 API の要約です。

宣言ファイルを優先する

ページとインストール済みパッケージで内容が食い違う場合、対応バージョンの dist/formulon.d.ts を正としてください。

用語: status envelope

WASM の失敗しうる呼び出しが返す Status オブジェクト。ok、数値 status、人間向け message、診断用 context を持ちます。Excel のセルエラーは status failure ではなく kind = ErrorValue として返ります。

モジュール

ts
import createFormulon from '@libraz/formulon'

const Module = await createFormulon()
API用途
Module.evalFormula(formula)新規ワークブックで 1 式評価
Module.Workbook.createDefault()Sheet1 付きワークブック
Module.Workbook.createEmpty()sheet 0 個のワークブック
Module.Workbook.loadBytes(bytes)メモリ上の .xlsx を読み込む
Module.versionString()engine バージョン
Module.statusString(status)status の名前
Module.lastErrorMessage()直近の診断メッセージ
Module.lastErrorContext()直近の診断 context

結果 envelope

失敗しうる呼び出しは Status、または status を含む構造体を返します。

ts
interface Status {
  ok: boolean
  status: number
  message: string
  context: string
}

Excel セルエラーは ValueKind.Error。Status の失敗とは区別されます。

value kind

ts
enum ValueKind {
  Blank,
  Number,
  Bool,
  Text,
  Error,
  Array,
  Ref,
  Lambda
}

getValue() / evalFormula()kind で payload が分かれた Value を返します。Numbervalue.numberBoolvalue.boolTextvalue.textErrorvalue.errorCode / value.errorTextArrayvalue.arrayRefvalue.refLambdavalue.lambda

ワークブックのライフサイクル

ts
const wb = Module.Workbook.loadBytes(bytes)
try {
  if (!wb.isValid()) throw new Error(Module.lastErrorMessage())
  wb.recalc()
  const saved = wb.save()
} finally {
  wb.delete()
}

delete() は必ず呼んでください。

主な workbook methods

分類Methods
SheetsaddSheet, removeSheet, renameSheet, moveSheet, sheetCount, sheetName
CellssetNumber, setBool, setText, setBlank, setFormula, getValue, cellCount, cellAt
Calculationrecalc, partialRecalc, setIterative, setIterativeProgress, calcMode, setCalcMode
ProfilesexcelProfileId, setExcelProfileId
Names/tablesdefinedNameCount, definedNameAt, setDefinedName, tableCount, tableAt
StructureinsertRows, deleteRows, insertCols, deleteCols
Layoutsheet view, protection, row/column layout, styles, merges
Rich workbook datacomments, hyperlinks, data validations, conditional formats, pivot layout, external links
Introspectionprecedents, dependents, functionMetadata, functionNames, spillInfo

次に読むもの