C++でスプレッドシートを読み込む方法

C++でスプレッドシートを読み込む方法

Aspose.Cells FOSS for C++ は、Microsoft Excel を必要とせずに既存の XLSX スプレッドシートをロードおよび読み取ることができます。このガイドでは、Workbook、Worksheet、および Cell クラスを使用して、ワークブックのロード、ワークシートへのアクセス、セル値の読み取りについて説明します。

ステップバイステップガイド

ステップ 1: ビルドの設定

CMake プロジェクトに Aspose.Cells FOSS for C++ を追加します:

cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)

add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

ステップ 2: 必要なヘッダーをインクルード

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

using namespace Aspose::Cells_FOSS;

ステップ 3: ワークブックをロード

既存のXLSXファイルを読み込むには、ファイルパスを Workbook のコンストラクタに渡します:

int main() {
    Workbook workbook("input.xlsx");
    // workbook is now loaded and ready to use
    return 0;
}

ステップ 4: ワークシートにアクセスする

Workbook::GetWorksheets() を使用してワークシートコレクションを取得し、インデックスでアクセスします:

Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();

ステップ 5: セルの値を読み取る

アドレス文字列でセルにアクセスし、その値を読み取ります:

std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();

ステップ 6: 変更を保存する

変更を加えた後、ファイルに保存し直します:

workbook.Save("output.xlsx");
workbook.Dispose();

よくある問題と対策

ファイルが見つからないエラーが発生しました ファイルパスが正しく、ファイルが存在することを確認してください。作業ディレクトリが不確かな場合は絶対パスを使用してください。

数値セルに対して空文字列が返されました 使用 GetValue().AsDouble() 代わりに GetStringValue() — GetStringValue() テキストではなく数値を含むセルに対して空文字列を返します。

ワークブックは読み込まれますが、セルが空白のように見えます XLSXファイルがパスワードで保護されていないことを確認してください。Aspose.Cells C++ 用のFOSSは暗号化されたファイルをサポートしていません。

数式セルが予期しない値を返す 数式セルは計算結果ではなく数式文字列を保存します。数式はファイルが開かれたときに Excel によって評価されます。使用 GetFormula() 数式テキストを取得するには.

処理後にメモリが解放されない Call workbook.Dispose() すべての操作が完了した後、アンマネージドリソースを解放します。

よくある質問

1つのファイルから複数のワークシートを読み込むことはできますか?

はい。Workbook::GetWorksheets() を使用してすべてのシートにアクセスし、インデックスで反復処理します。sheet.GetName() を呼び出してシート名で各シートを識別します。

複数のシートを含むXLSXファイルを読み込み、特定のシートからデータを取得できますか?

はい。シートはゼロベースのインデックスでアクセスします。workbook.GetWorksheets()[1] は2番目のシートを返します。

ファイルを読み込むと数式の再計算がトリガーされますか?

いいえ。ライブラリはXLSXファイルに保存されているセルの値と数式文字列をそのまま読み込みます。数式の再計算は、Excel または互換性のあるリーダーでファイルを開いたときに行われます。

ファイルパスにUnicode文字が含まれている場合、どうなりますか?

パスはプラットフォームに適したエンコーディングを使用した std::string として渡してください。UTF-8 パスはLinux と macOS でサポートされています。Windows では、パスのエンコーディングがシステムロケールと一致していることを確認してください。

同じファイルを複数回同時に読み込んでも安全ですか?

このライブラリは同じ Workbook インスタンスへの同時アクセスに対してスレッドセーフではありません。スレッドごとに別々の Workbook インスタンスをロードしてください。

参照

 日本語