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);
}
}
}
}
特殊シーン:数式と計算結果の読み取り
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 によって開発の敷居を低くしています。基本的なセル読み取り、一括データ走査、特殊な数式結果の取得など、いずれの場面においても効率的に実現することができます。