0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# で Excel データを読み取る:無料ソリューション

Last updated at Posted at 2025-09-15

C# 開発において、Excel データ処理は頻繁に遭遇するシーンです。ユーザーデータのインポート、業務レポートの生成、簡易的なデータ分析など、いずれの場面においても Excel は欠かせない存在です。しかし、従来の Microsoft.Office.Interop.Excel に依存する手法では、パフォーマンスの低下、Office 環境の事前インストール要件、デプロイの複雑さなどの問題が発生することが少なくありません。

これに対し、無料版 Free Spire.XLS はこれらの課題にうまく対応できます。Office コンポーネントのインストール不要で、完全無料かつ API が簡潔であるため、小型プロジェクトの Excel 読み取りニーズを十分に満たすことが可能です。以下では、同ライブラリを使用した Excel データの読み取り方法を詳しく説明します。

環境準備:Free Spire.XLS のインストール

1. NuGet によるインストール
以下の 2 つの方法から選択できます。

  • プロジェクトを右クリック →「NuGet パッケージの管理」→「参照」タブに切り替えた後、「FreeSpire.XLS」を検索し、「インストール」をクリックします。
  • 「NuGet パッケージ マネージャー コンソール」を開き、次のコマンドを入力して Enter キーを押します。
    install-package FreeSpire.XLS
    

2. インストールの確認
インストール完了後、プロジェクトの「参照」フォルダーを展開し、FreeSpire.XLS アセンブリが表示されれば、無料版が正常に統合されたことを意味します。

⚠️ 注意:無料版にはデータ量の制限があるため、小型のデータ処理シーンに適しています。


3分で始める:基本的なセル読み取り

1. 名前空間の導入

コードファイルの先頭に Spire.XLS 名前空間を追加することで、コアクラスを呼び出せるようにします。

using Spire.Xls;

2. 基本的な読み取りコードの作成

XLS および XLSX ファイルの読み取りに対応し、「列名による指定」と「行番号・列番号による指定」の 2 通りの方法を提供します。コード例は以下の通りです。

// 1. ワークブックを初期化し、Excelファイルを読み込む(自身のファイルパスに置き換えてください)
Workbook workbook = new Workbook();
workbook.LoadFromFile("テストデータ.xlsx");

// 2. 最初のワークシートを取得する(インデックスは0から始まります)
Worksheet targetSheet = workbook.Worksheets[0];

// 3. 指定したセルのデータを読み取る
Console.WriteLine("列名で読み取り(A1セル):" + targetSheet.Range["A1"].Value);
Console.WriteLine("行番号と列番号で読み取り(2行1列):" + targetSheet.Range[2, 1].Value);

重要事項

「行番号+列番号」で位置を指定する場合、インデックスは1から始まります(C# の一般的な0インデックスとは異なります)。例えば「3行2列」はRange[3, 2]と記述する必要があります。誤ってRange[3, 1]と記述すると、誤ったセルを指定する結果となります。

一括読み取り:ワークシート全体のデータを走査

Excel 内のすべての有効データを読み取る必要がある場合(例:データベースへの一括インポート)は、「有効データ領域」を走査することで、空のセルを読み取ることを回避できます。完全なコードは以下の通りです。

using Spire.Xls;

namespace ExcelRead
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // Excelファイルを読み込む
                Workbook workbook = new Workbook();
                workbook.LoadFromFile("製品データ.xlsx");

                // 最初のワークシートを取得する
                Worksheet dataSheet = workbook.Worksheets[0];

                // 「有効データ領域」を取得する(データを含むセルのみを対象とし、リソース使用量を削減します)
                CellRange validRange = dataSheet.AllocatedRange;

                // 外側のループで行を走査
                for (int rowIdx = 0; rowIdx < validRange.Rows.Length; rowIdx++)
                {
                    // 内側のループで現在の行の列を走査
                    for (int colIdx = 0; colIdx < validRange.Rows[rowIdx].ColumnCount; colIdx++)
                    {
                        // セルのインデックスは1から始まるため、ループ変数に+1する必要があります
                        string cellData = validRange[rowIdx + 1, colIdx + 1].Value;
                        Console.Write(cellData + "  ");
                    }
                    Console.WriteLine(); // 一行が終わったら改行
                }

                Console.WriteLine("読み取り完了!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("読み取り失敗:" + ex.Message);
            }
        }
    }
}

出力:
readExcel.png

特殊シーン:数式と計算結果の読み取り

Excel セルに数式(例:=A2+B2)が含まれている場合、Value プロパティを直接使用すると、計算結果ではなく数式のテキストが返されます。Free Spire.XLS は数式の計算結果を取得する機能をサポートしており、コード例は以下の通りです。

// 有効データ領域のすべてのセルを走査
foreach (CellRange cell in dataSheet.AllocatedRange)
{
    // セルに数式が含まれているかどうかを判断
    if (cell.HasFormula)
    {
        // 1. 元の数式を読み取る(例:「=A2+B2」)
        string formulaText = cell.Formula;

        // 2. 数式の計算結果を読み取る
        string formulaResult = cell.FormulaValue.ToString();

        // 結果を出力
        Console.WriteLine($"セル{cell.RangeAddress}:");
        Console.WriteLine($"  数式:{formulaText}");
        Console.WriteLine($"  結果:{formulaResult}\n");
    }
}

Excel データ処理は C# 開発における基本的な要件です。Free Spire.XLS for .NET は Office 環境への依存を解消するだけでなく、簡潔な API によって開発の敷居を低くしています。基本的なセル読み取り、一括データ走査、特殊な数式結果の取得など、いずれの場面においても効率的に実現することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?