フッターコンテンツにスキップ
IRONXLの使用

IronXLを使用してC#でExcelファイルを読み取る最良の方法

このチュートリアルは、複雑なセットアップの手間をかけずにC#でExcelファイルを読み込む最良の方法を探しているなら、まさにあなたが必要としているものです。 IronXLはExcelファイルの管理を非常に簡単にする.NETライブラリです。 Microsoft Excelのインストールは不要です。

Microsoft Excelファイルをプログラムで操作することは、従来から困難でした。 多くのライブラリは、Officeの依存関係を必要としたり、冗長でエラーが発生しやすいコードを生成したりします。 IronXLは、XLSX、XLS、CSVファイルを最小限の労力で処理するクリーンで直感的なAPIを提供することでこれを変えます。 始める準備はできましたか? 無料トライアルにサインアップしてください。

ExcelファイルをC#で読む最良の方法は何ですか?

C#でExcelファイルを読む最良の方法は、Microsoft Officeから独立して動作するIronXLのような専用ライブラリを使用することです。このアプローチは、.NET Frameworkと.NET Coreのプロジェクトで問題なく機能し、ユーザーはバージョンの互換性に頭を悩ませることなくスプレッドシートデータを解析できる。

IronXLは基本的に、ファイル全体をワークブックオブジェクトにロードし、すべてのワークシート、行、列、セルに直接アクセスできるExcelリーダーを提供します。 隠された複雑さを管理する必要があるXMLベースのソリューションとは異なり、IronXLのAPIでは、sheet["A1"]のようなExcelでおなじみの記法でセルを参照したり、foreachループで範囲を反復したりすることができます。

今IronXLを始めましょう。
green arrow pointer

どのように Visual Studio に Excel Reader ライブラリをインストールしますか?

インストールは、Visual StudioのNuGet経由で数秒で完了します。 パッケージマネージャーコンソールでこのコマンドを実行してください:

Install-Package IronXL.Excel

このライブラリは複数の.NETバージョンをサポートしているため、アプリのターゲットが.NET Framework 4.6.2+であろうと.NET Core 3.1+であろうと、IronXLはシームレスに統合されます。 インストールが完了したら、IronXLリファレンスをコードファイルに追加してください。

どのように Excel ワークブックを読み込むことができますか?

エクセルのワークブックを読み込むには、わずか1行のコードが必要です。 WorkBook.Loadメソッドはファイル名を受け取り、自動的に形式を検出します。XLSXファイル、XLSファイル、CSVファイルはすべて同じように動作します。

class Program
{
    public static void Main(string[] args)
    {
        // Load an Excel workbook from file
        WorkBook workbook = WorkBook.Load("financial_report.xlsx");
        // Access the first worksheet by index
        WorkSheet worksheet = workbook.WorkSheets[0];
        // Or get a specific sheet by name
        WorkSheet dataSheet = workbook.GetWorkSheet("Expenses");
        Console.WriteLine($"Loaded workbook with {workbook.WorkSheets.Count} sheets");
    }
}
class Program
{
    public static void Main(string[] args)
    {
        // Load an Excel workbook from file
        WorkBook workbook = WorkBook.Load("financial_report.xlsx");
        // Access the first worksheet by index
        WorkSheet worksheet = workbook.WorkSheets[0];
        // Or get a specific sheet by name
        WorkSheet dataSheet = workbook.GetWorkSheet("Expenses");
        Console.WriteLine($"Loaded workbook with {workbook.WorkSheets.Count} sheets");
    }
}
$vbLabelText   $csharpLabel

ロードされたワークブックのコンソール確認

C#でIronXLを使用してExcelファイルを読み込む最良の方法: 画像1 - 読み込まれたワークブックの確認のためのコンソール出力</a

WorkBookオブジェクトはExcelワークブック全体を表し、各WorkSheetインスタンスはそのワークブック内の個々のシートに対応します。 この構造は、Excelのフォーマットがどのようにデータを整理するかを反映しており、すでにスプレッドシートの概念に精通している開発者がAPIを直感的に理解できるようになっています。

ファイルが読み込まれると、IronXLはすべてのセル、数式、書式を解析してメモリに格納します。 その後、値を読んだり、内容を修正したり、変更をディスクに保存したりすることができます。 読み込みオプションの追加情報については、load spreadsheet documentationを参照してください。

Excelワークシートからセルの値を読み取るには?

セルを読み取るには、アドレスでアクセスするか、範囲を反復する必要があります。 IronXLはStringValue、IntValue、DecimalValueのような強く型付けされたプロパティを提供し、セルデータを正しいシステム型にパースします。

using IronXL;
using System;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read individual cell values with type conversion
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
// Check for null or empty cells before processing
var cell = sheet["D2"];
if (cell.Value != null)
{
    Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price}");
}
// Access cells using row and column index (zero-based)
int columnIndex = 0;
var firstCell = sheet.Rows[1].Columns[columnIndex];
using IronXL;
using System;
WorkBook workbook = WorkBook.Load("Products.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Read individual cell values with type conversion
string productName = sheet["A2"].StringValue;
int quantity = sheet["B2"].IntValue;
decimal price = sheet["C2"].DecimalValue;
// Check for null or empty cells before processing
var cell = sheet["D2"];
if (cell.Value != null)
{
    Console.WriteLine($"Product: {productName}, Qty: {quantity}, Price: {price}");
}
// Access cells using row and column index (zero-based)
int columnIndex = 0;
var firstCell = sheet.Rows[1].Columns[columnIndex];
$vbLabelText   $csharpLabel

出力

C#でIronXLを使用してExcelファイルを読み取る最良の方法: 画像2 - IronXLによるシンプルなExcel読み取り出力</a

各セルオブジェクトには、生の値に加え、フォーマットに関するメタデータが含まれています。 int columnIndexのアプローチは、文字ベースの参照ではなく、プログラムによる列アクセスが必要な場合にうまく機能します。 セルに数式が含まれている場合、IronXLはそれを評価し、計算結果を返します。

行とセルを繰り返し処理するにはどうすればよいですか?

ファイル全体を処理するには、通常、行とセルをループします。 foreachパターンにより、エレガントで読みやすく、データ抽出や検証作業に最適です。

using IronXL;
using System;
 WorkBook workbook = WorkBook.Load(@"financial_report.xlsx");
 WorkSheet sheet = workbook.WorkSheets[0];
 // Skip column headers in first row, process data rows
 foreach (var row in sheet["A2:D7"])
 {
     Console.WriteLine($"Cell {row.AddressString}: {row.Text}");
 }
 // Iterate through specific row range
 for (int i = 1; i < sheet.Rows.Length; i++)
 {
     var currentRow = sheet.Rows[i];
     // Access each column in the row
     foreach (var cell in currentRow)
     {
         if (cell.Value != null)
         {
             Console.Write($"{cell.StringValue}\t");
         }
     }
     Console.WriteLine();
 }
using IronXL;
using System;
 WorkBook workbook = WorkBook.Load(@"financial_report.xlsx");
 WorkSheet sheet = workbook.WorkSheets[0];
 // Skip column headers in first row, process data rows
 foreach (var row in sheet["A2:D7"])
 {
     Console.WriteLine($"Cell {row.AddressString}: {row.Text}");
 }
 // Iterate through specific row range
 for (int i = 1; i < sheet.Rows.Length; i++)
 {
     var currentRow = sheet.Rows[i];
     // Access each column in the row
     foreach (var cell in currentRow)
     {
         if (cell.Value != null)
         {
             Console.Write($"{cell.StringValue}\t");
         }
     }
     Console.WriteLine();
 }
$vbLabelText   $csharpLabel

C#でIronXLを使用してExcelファイルを読み取る最良の方法: 画像3 - 行を反復処理する出力</a

範囲構文["A2:D100"]は、反復可能なセルのコレクションを作成します。 このアプローチでは、不要なデータを読み込むことなく、大きなスプレッドシートを効率的に処理します。 行単位または列単位の処理が必要な場合は、RowsコレクションとColumnsコレクションに直接アクセスすることもできます。

複数の Excel フォーマットを解析するにはどうすればよいですか?

IronXLは様々なExcelフォーマットを透過的に処理します。 レガシーなXLSファイル、最新のXLSXファイル、プレーンなCSVファイルのいずれを読んでも、同じコードがすべてのフォーマットで機能します。

using IronXL;
// Load different format types - the API remains consistent
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Data.csv");
// All workbooks expose identical worksheet access
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Write to different formats
xlsxBook.SaveAs("Output.csv");
csvBook.SaveAs("Converted.xlsx");
using IronXL;
// Load different format types - the API remains consistent
WorkBook xlsxBook = WorkBook.Load("Modern.xlsx");
WorkBook xlsBook = WorkBook.Load("Legacy.xls");
WorkBook csvBook = WorkBook.Load("Data.csv");
// All workbooks expose identical worksheet access
WorkSheet sheet1 = xlsxBook.DefaultWorkSheet;
WorkSheet sheet2 = xlsBook.DefaultWorkSheet;
WorkSheet sheet3 = csvBook.DefaultWorkSheet;
// Write to different formats
xlsxBook.SaveAs("Output.csv");
csvBook.SaveAs("Converted.xlsx");
$vbLabelText   $csharpLabel

この形式の柔軟性は、プログラムが異なるソースからのファイルを処理する必要がある場合に役立ちます。 このライブラリは、ファイル拡張子やコンテンツヘッダーからExcelフォーマットを自動的に検出するため、フォーマット固有のコードパスは必要ありません。 CSVファイルの場合、IronXLはカンマ区切りや引用符で囲まれた文字列値などの一般的な規約を尊重します。

どのような高度な操作を実行できますか?

IronXLは基本的な読解にとどまらず、集計計算、LINQクエリー、データ操作をサポートしています。 これらの高度な機能は、生のスプレッドシートデータを実用的な洞察に変換します。

using IronXL;
using System;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Calculate sum of values in a range
decimal totalSales = sheet["B2:B50"].Sum();
// Use LINQ for advanced queries
decimal maxValue = sheet["C2:C50"].Max(c => c.DecimalValue);
var highValues = sheet["C2:C50"].Where(c => c.DecimalValue > 1000);
// Create instance of calculated results
Console.WriteLine($"Total: {totalSales}, Maximum: {maxValue}");
// Modify and save changes
sheet["D2"].Value = totalSales;
workbook.Save();
using IronXL;
using System;
using System.Linq;
WorkBook workbook = WorkBook.Load("Financials.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Calculate sum of values in a range
decimal totalSales = sheet["B2:B50"].Sum();
// Use LINQ for advanced queries
decimal maxValue = sheet["C2:C50"].Max(c => c.DecimalValue);
var highValues = sheet["C2:C50"].Where(c => c.DecimalValue > 1000);
// Create instance of calculated results
Console.WriteLine($"Total: {totalSales}, Maximum: {maxValue}");
// Modify and save changes
sheet["D2"].Value = totalSales;
workbook.Save();
$vbLabelText   $csharpLabel

高度な読み取り操作の出力

Best Way to Read Excel File in C# with IronXL: Image 4 - Advanced Reading Operations Console Output.

LINQの互換性により、手動でループを記述することなく、強力なデータ処理が可能になります。 使い慣れたC#パターンを使用して、セルの値をフィルタリング、並べ替え、集計することができます。 列ヘッダーのあるテーブルの場合、IronXLはセルアドレスではなくヘッダー名でデータを参照することもできます。

これらの機能は、IronXLが単なるExcelリーダーではなく、完全なスプレッドシート操作ライブラリであることを示唆しています。 レポートの作成、データの検証、データベースへのエクスポートのいずれが必要であっても、APIは例外処理やOfficeの依存関係の問題なしにツールを提供します。

まとめ

C#でExcelファイルを読むことは複雑ではありません。 IronXLは、.NET Frameworkと.NET Coreプロジェクトにまたがって機能する、依存関係のない最新のアプローチを提供します。 単純なXLSXファイルの読み込みから、セルデータに対する複雑なLINQクエリの実行まで、ライブラリはクリーンで読みやすいコードですべてを処理します。

この記事の例では、ワークブックの読み込み、ワークシートへのアクセス、セル値の読み取り、データの反復処理など、日常的に使用するコアパターンを示しています。 これらのパターンは、単純なスクリプトからエンタープライズ・アプリケーションまで、変更することなく拡張できます。

Excelファイルの処理を簡素化する準備はできましたか? ライセンスを購入することで、IronXLの可能性を最大限に引き出すことができます。

よくある質問

C#でExcelファイルを読む最良の方法は何ですか?

C#でExcelファイルを読む最良の方法は、IronXLライブラリを使用することです。Microsoft ExcelがシステムにインストールされていなくてもExcelファイルを扱うことができます。

IronXLを使用するためにMicrosoft Officeをインストールする必要がありますか?

IronXL を使用するために Microsoft Office をインストールする必要はありません。IronXLはExcelファイル操作のために設計されたスタンドアロンの.NETライブラリです。

IronXLはどのような種類のExcelファイルを読み取ることができますか?

IronXLはXLSX、XLS、CSV形式を含む様々なタイプのExcelファイルを読み込むことができます。

IronXLはC#プロジェクトに簡単に統合できますか?

IronXLはC#プロジェクトに簡単に統合できるように設計されており、開発者にシンプルなAPIを提供します。

IronXLはCSVファイルを解析できますか?

はい、IronXLはXLSXとXLSファイルに加えてCSVファイルも解析できます。

IronXLをExcelファイル操作に使用する利点は何ですか?

IronXLは簡単なセットアップ、Microsoft Excelへの依存なし、複数のExcelファイル形式をサポートし、様々なファイル操作に効率的です。

IronXLを使うのに複雑な設定は必要ですか?

IronXLは複雑なセットアップを必要としないため、Excelファイルを簡単に管理したい開発者が利用しやすくなっています。

なぜExcelファイルの処理にInteropではなくIronXLを選ぶのですか?

IronXLはシンプルで、Microsoft Excelを必要とせず、Excelファイルを扱うパフォーマンスが高いため、Interopよりも好まれます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。