セルとデータモデルの操作

セルとデータモデルの操作

セルとデータモデルの操作

Cell クラスは、個々のスプレッドシートセルの値、数式、スタイルを読み書きするための主要なインターフェースです。アドレス文字列を使用して、ワークシートの Cells コレクションからセルにアクセスします。


セルへの値の書き込み

Cell::PutValue を使用して、テキスト、数値、ブーリアン、または日付をセルに書き込みます:

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"

using namespace Aspose::Cells_FOSS;

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];

    sheet.GetCells()["A1"].PutValue("Product");
    sheet.GetCells()["B1"].PutValue("Price");
    sheet.GetCells()["A2"].PutValue("Widget");
    sheet.GetCells()["B2"].PutValue(9.99);
    sheet.GetCells()["C2"].PutValue(true);

    workbook.Save("data.xlsx");
    return 0;
}

数式の設定

Cell::SetFormula(formula) を使用して、Excel 互換の数式を書き込みます。数式は、ファイルが開かれたときに Excel または互換性のあるリーダーによって評価されます。

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");
sheet.GetCells()["C4"].SetFormula("=AVERAGE(B2:B3)");

セル値の読み取り

セルの現在の値を Cell::GetValue() で読み取り、CellValue オブジェクトが返されます。適切なアクセサを使用して特定の型に変換します:

CellValue val = sheet.GetCells()["B2"].GetValue();
double price = val.AsDouble();
std::string text = sheet.GetCells()["A2"].GetStringValue();

CellValue クラスは型付きアクセサを提供します:

メソッド戻り値の型
AsDouble()double
AsInteger()int
AsBool()bool
AsString()std::string
AsDateTime()DateTime

行と列でセルにアクセスする

アドレス文字列に加えて、ゼロベースの行と列インデックスでセルにアクセスできます:

// Address string
Cell& cellA1 = sheet.GetCells()["A1"];

// Row/column index (0-based)
int row = cellA1.GetRow();
int col = cellA1.GetColumn();

セルの結合

矩形範囲のセルを 1 つに結合するには、Cells::Merge を使用します:

CellArea area = CellArea::CreateCellArea("A1", "C1");
sheet.GetCells().Merge(area.StartRow, area.StartColumn,
                       area.EndRow - area.StartRow + 1,
                       area.EndColumn - area.StartColumn + 1);

表示テキストの取得

セルの値を書式設定された表示テキスト(数値書式を適用)として取得するには、Cell::GetDisplayStringValue() を使用します:

std::string display = sheet.GetCells()["B2"].GetDisplayStringValue();

ヒントとベストプラクティス

  • 直接リテラル代入には PutValueSetValue より優先してください — PutValue はすべてのプリミティブ型に対するオーバーロードを持っています。
  • 型変換なしでテキストを取得するには GetStringValue() を使用し、数値精度が必要な場合は GetValue().AsDouble() を使用してください。
  • 数式セルには常に SetFormula を呼び出し、PutValue("=SUM(...)") は使用しないでください — 後者は文字列リテラルを格納し、数式ではありません。
  • 結合および書式設定操作のために範囲オブジェクトを作成するには CellArea::CreateCellArea(start, end) を使用してください。

一般的な問題

問題原因修正
GetValue() が空を返すセルが書き込まれていません読む前に PutValue を使って値を書き込む
式が評価されていません式が文字列として保存されましたSetFormula(expr)PutValue(expr) の代わりに使用してください
マージに失敗しました無効な範囲の次元endRow >= startRowendColumn >= startColumn を確認してください
読み取り時の型不一致誤った As*() メソッドを呼び出していますアクセサを元の PutValue タイプに合わせる

API Reference の概要

クラス/メソッド説明
Cell::PutValue(value)セルにリテラル値を書き込む
Cell::SetFormula(formula)Excel の数式文字列を設定する
Cell::GetValue()セルの値を CellValue として取得する
Cell::GetStringValue()セルの値を文字列として取得する
Cell::GetDisplayStringValue()フォーマットされた表示文字列を取得する
Cell::GetRow()ゼロベースの行インデックスを取得
Cell::GetColumn()ゼロベースの列インデックスを取得します
Cell::GetStyle()現在のセルスタイルを取得する
Cell::SetStyle(style)セルに変更されたスタイルを適用する
CellValue::AsDouble()セルの値を double に変換する
CellValue::AsString()セルの値を文字列に変換する
Cells::Merge(row, col, rows, cols)矩形範囲を結合する

参照

 日本語