C++でスプレッドシート データモデルを作成し、データを入力する方法
このガイドでは、Aspose.Cells FOSS for C++ ライブラリを使用して、ワークブックを作成し、セルに値や数式を入力し、スタイルを適用し、スプレッドシートファイルとして保存する方法を示します。関係するコアクラスは Workbook、Worksheet、Cell、および Style です。
ステップバイステップガイド
ステップ 1: ビルドの設定
CMake プロジェクトに Cells FOSS ライブラリを追加し、Aspose.Cells.Foss.Cpp ターゲットをリンクします:
cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)ステップ 2: ヘッダーをインクルードし、名前空間を設定する
aspose/cells_foss/ から使用する各クラスのクラス別ヘッダー(Workbook.h、Worksheet.h、Cell.h、Style.h、Font.h、Color.h、CellArea.h)をインクルードし、次に Aspose::Cells_FOSS 名前空間を開きます:
using namespace Aspose::Cells_FOSS;ステップ 3: ワークブックを作成し、シートに名前を付ける
Workbook をインスタンス化し、GetWorksheets()[0] を使って最初のワークシートを取得し、表示名を設定します:
int main() {
Workbook workbook;
Worksheet& sheet = workbook.GetWorksheets()[0];
sheet.SetName("Sales");
return 0;
}ステップ 4: セルの値を追加する
GetCells()["A1"].PutValue() を呼び出して、テキスト文字列、数値、ブール値をアドレスで指定した個々のセルに書き込みます:
sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);ステップ 5: 数式を設定する
セルに対して SetFormula() を呼び出し、Excel 互換の数式文字列を格納します。数式はファイルを開いたときに Excel によって評価されます:
sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");ステップ 6: セルのスタイリングを適用する
Cell::GetStyle() でスタイルを取得し、変更して、Cell::SetStyle(style) で適用します:
Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);
sheet.GetCells()["B1"].SetStyle(headerStyle);ステップ 7: セルの結合
Cells::Merge を使用して範囲を単一のセルに結合します:
CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);ステップ 8: ワークブックを保存
workbook.Save() にファイル名を渡してスプレッドシートをXLSXファイルとして書き込み、続いて Dispose() を呼び出してリソースを解放します:
workbook.Save("sales.xlsx");
workbook.Dispose();一般的な問題と対策
保存後にスタイルが適用されません 常に呼び出す Cell::SetStyle(style) スタイルオブジェクトを変更した後です。返されたスタイルを直接変更しても変更は適用されません。明示的に元に戻す必要があります。
数式が文字列リテラルとして保存される 使用する SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue 引数を文字列リテラルとして扱い、数式としては扱いません。
結合セルが正しく表示されません マージパラメータ(row、column、rowCount、columnCount)が意図した範囲を正しくカバーしていることを確認してください。重複するマージはサポートされていません。
Workbook は構築後にシートがありません デフォルトのシートは常に作成されます Workbook(). 呼び出す GetWorksheets()[0] それにアクセスするには。
Dispose が呼び出されていません 常に呼び出す workbook.Dispose() リソースを解放するために、特に長時間実行されるアプリケーションでは。
よくある質問
1つのブックに複数のワークシートを追加できますか?
はい。Workbook::GetWorksheets() を使用してコレクションにアクセスし、プログラムでシートを追加してください。Workbook::EnsureUniqueSheetName() を使用して各シートに固有の名前を付けてください。
セルに数値書式を設定するにはどうすればよいですか?
Style::SetNumberFormat(format) を使用してから Cell::SetStyle(style) を呼び出してください。書式文字列は標準の Excel 数値書式構文に従います。
同じスタイルを複数のセルに適用できますか?
はい。一度スタイルを取得し、変更してから、各対象セルで SetStyle(style) を呼び出します。
保存時に数式は評価されますか?
いいえ。数式の評価は、ファイルを開いたときに Excel または互換リーダーで行われます。ライブラリは数式文字列をセルに書き込みます。
ワークシートは何行何列まで保持できますか?
各ワークシートは、標準的なスプレッドシートのサイズに従い、行と列の全グリッドにデータを保持します。