IRONSOFTWAREHOME
IRONXLの使用

How to Import, Read, and Manipulate Excel Data in C#

Curtis Chau
Curtis Chau
Updated: 2026年6月28日

StreamReader では、XLSX/XLS形式は複雑なバイナリまたは圧縮されたXML構造であり、プレーンテキストではないため、Excelファイルを読み取ることはできません。 IronXLライブラリを代わりに使用してください。これは、ファイル読み取りのためのWorkBook.Load()と、Excel Interop依存性なしでメモリストリームを処理するFromStream()を提供します。

多くのC#開発者がExcelシートファイルを読む際に共通の課題に直面します。それは、テキストファイルには完全に機能するStreamReaderが、Excelドキュメントには謎の詰まりが生じることです。 C#でStreamReaderを使用してExcelファイルを読み取ろうとして、文字化けや例外が発生した場合、あなたは一人ではありません。 このチュートリアルは、なぜStreamReaderがExcelファイルを直接処理できないのかを説明し、Excel InteropなしのIronXLを使用した適切な解決策を示します。

CSVファイルはExcelで開くことができ、StreamReaderでも問題なく動作すると混乱しがちです。 しかし、真のExcelファイル(XLSX, XLS)は根本的に異なるアプローチが必要です。 この違いを理解することで、デバッグに時間を節約し、タスクに最適なツールを見つける事ができます。 DockerコンテナやKubernetes環境でアプリケーションを展開するDevOps技術者にとって、これが特に重要になります。ネイティブ依存関係がコンテナ化を複雑にする可能性があるからです。

IronXL for .NETのホームページでは、Microsoft OfficeインターオープなしでExcelファイルを読み取るためのC#コード例を示し、ライブラリの特徴やダウンロード統計を紹介しています

なぜStreamReaderではExcelファイルを読み取れないのか?

StreamReaderはプレーンテキストファイル用に設計されており、指定されたエンコーディングを使用して文字データを1行ごとに読み込みます。 Excelファイルは、見た目はスプレッドシートですが、実際には複雑なバイナリまたはZIP圧縮されたXML構造であり、StreamReaderでは解釈できません。 最新のXLSXファイルはOffice Open XML標準に準拠していますが、古いXLSファイルは独自のバイナリ形式を使用しています。

static void Main(string[] args)
{
 // This code will NOT work - demonstrates the problem
 using (StreamReader reader = new StreamReader("ProductData.xlsx"))
 {
    string content = reader.ReadLine(); // Attempts to read Excel as text
    Console.WriteLine(content); // Outputs garbled binary data
 }
}

このコードスニペットを実行すると、スプレッドシートのデータが表示される代わりに、"PK♥♦"などのバイナリデータや類似の文字が表示されます。 XLSXファイルは、複数のXMLファイルを含むZIPアーカイブであり、XLSファイルは独自のバイナリフォーマットを使用します。 StreamReaderはプレーンテキストを期待しており、これらの複雑な構造を文字として解釈しようとするため、意味のない出力を生成します。 コンテナ化されたアプリケーションの場合、ネイティブのExcelライブラリやCOM相互運用機能を使用しようとすると、コンテナ内にMicrosoft Officeをインストールする必要があり、イメージサイズと複雑さが大幅に増加します。

StreamReaderがExcelファイルの処理を試みるとどうなるか?

以下の例は、処理したい製品データを含む典型的なExcelファイルを示しています。 Excelで表示すると、構造化されたスプレッドシートデータがどのように整理されて見やすく表示されるかに注目してください。

製品名(ノートパソコン、マウス、キーボード、モニター、ヘッドホン)、価格、およびAからD列のTRUE/FALSE値を含む製品データテーブルを示すExcelスプレッドシート

なぜ出力に文字化けが表示されるのですか?

このExcelファイルをStreamReaderが処理しようとすると、コンソール出力に基礎となる問題が表示されます。 読み取り可能なデータの代わりにバイナリコンテンツが表示されるのは、ファイル構造がテキストとして解釈できないためです。

Visual Studioデバッグコンソールの出力により、終了コード0でプログラムが成功したこと、およびウィンドウを閉じるために任意のキーを押すようにプロンプトが表示されている

最新のExcelファイル(XLSX)は複数のコンポーネントを含みます:ワークシート、スタイル、共有文字列、関連性など、すべてが一緒にパッケージ化されています。 この複雑さゆえに、Excelファイルの構造を理解する特殊なライブラリが必要となり、そこでIronXLが登場するのです。 このライブラリは、これらの複雑な処理をすべて内部的に処理しつつ、シンプルなAPIを提供するため、手動での介入が不可能な自動デプロイパイプラインに最適です。

IronXLでExcelファイルを読み取る方法は?

IronXLは、C#でExcelファイルを読み込むためのシンプルなソリューションを提供します。 StreamReaderとは異なり、IronXLはExcelの内部構造を理解し、データにアクセスするための直感的なメソッドを提供します。 このライブラリは、Windows、Linux、macOS 、およびDockerコンテナをサポートしているため、最新のクロスプラットフォームアプリケーションに最適です。 DevOpsチームにとって、IronXLのゼロ依存性アーキテクチャは、展開中に管理するネイティブライブラリやCOMコンポーネントがないことを意味します。

様々なバージョン、オペレーティングシステム、開発環境、クラウドプラットフォーム(Windows、Linux、macOS、Docker、Azure、AWSなど)で for .NET互換性を示すクロスプラットフォームサポート図

まず、NuGetパッケージマネージャーを介してIronXLをインストールします:

PM > Install-Package IronXL.Excel

Visual Studioのパッケージマネージャーコンソールを通じてIronXL.Excelパッケージおよびその依存関係のインストールが成功したことを示すターミナル出力

Excelファイルを正しく読み込む方法は次のとおりです。

using IronXL;
// Load the Excel file
WorkBook workbook = WorkBook.Load("sample.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Read specific cell values
string cellValue = worksheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a range of cells
foreach (var cell in worksheet["A1:C5"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

このコードはExcelファイルを正常に読み込み、セル値へのクリーンなアクセスを提供します。 WorkBook.Load メソッドは、ファイル形式 ( XLSXXLS 、XLSM、 CSV ) を自動的に検出し、複雑な解析処理をすべて内部的に行います。 "A1"のようなおなじみのExcel表記や、"A1:C5"のような範囲指定を使ってセルにアクセスできるため、Excelに慣れている人なら誰でも直感的にコードを読むことができます。

コンテナ化されたデプロイメントの場合、Excelの処理能力を検証するヘルスチェックエンドポイントを簡単に組み込むことができます。

// Health check endpoint for containerized apps
public async Task<IActionResult> HealthCheck()
{
    try
    {
        // Test Excel functionality
        using var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var sheet = workbook.CreateWorkSheet("HealthCheck");
        sheet["A1"].Value = DateTime.UtcNow;
        
        // Convert to byte array for validation
        var bytes = workbook.ToByteArray();
        return Ok(new { 
            status = "healthy", 
            excelSupport = true,
            timestamp = DateTime.UtcNow 
        });
    }
    catch (Exception ex)
    {
        return StatusCode(503, new { 
            status = "unhealthy", 
            error = ex.Message 
        });
    }
}

メモリストリームからExcelを読み取る方法?

実際のアプリケーションでは、ディスクファイルではなくストリームからExcelファイルを処理する必要があることが多いです。 一般的なシナリオとしては、Webアップロードの処理、データベースからのファイルの取得、 AWS S3Azure Blob Storageなどのクラウドストレージからのデータ処理などが挙げられます。 IronXLはこれらの状況をスムーズに処理します。

using IronXL;
using System.IO;
// Read Excel from a memory stream
byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx");
using (MemoryStream stream = new MemoryStream(fileBytes))
{
    WorkBook workbook = WorkBook.FromStream(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Process the data
    int rowCount = worksheet.RowCount;
    Console.WriteLine($"The worksheet has {rowCount} rows");
    // Read all data into a DataTable
    var dataTable = worksheet.ToDataTable(false);
    // Display DataTable row count 
    Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows");
}

FileStream、またはネットワークストリームであろうと、あらゆるストリームタイプを受け入れます。 この柔軟性により、さまざまなソースからの Excel ファイルを、最初にディスクに保存することなく処理できます。また、この例では、ワークシートのデータを DataTable に変換する方法も示しており、データベースやデータバインディングのシナリオとシームレスに統合できます。 マイクロサービスアーキテクチャの場合、このストリームベースのアプローチはディスクI/Oを最小限に抑え、パフォーマンスを向上させます。

メモリストリーム処理はどのような結果を生み出すのか?

Excelデータを読み取るVisual Studioデバッグコンソールの出力、'ワークシートには5行があります'と'5データ行が読み込まれました'を表示

Excelの読み込みシナリオでオブジェクト送信機能を使うべきなのはどのような場合ですか?

このコードがイベント駆動型プログラミング内で使用される場合(例:Windows FormsやASP.NETでのファイルアップロードボタンを処理する場合)、メソッド署名には通常、object senderやEventArgs eのようなパラメータが含まれます。 このコンテキストは、Excelの処理ロジックが正しくUIまたはサービスのイベントに関連付けられることを保証します。 コンテナ化されたAPIの場合、HTTPリクエストから直接アップロードを処理することができます。

[HttpPost("upload")]
public async Task<IActionResult> ProcessExcelUpload(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");
    
    using var stream = new MemoryStream();
    await file.CopyToAsync(stream);
    stream.Position = 0;
    
    var workbook = WorkBook.FromStream(stream);
    var worksheet = workbook.DefaultWorkSheet;
    
    // Process and return results
    var data = worksheet.ToDataSet();
    return Ok(new { 
        sheets = workbook.WorkSheets.Count,
        rows = worksheet.RowCount,
        processed = DateTime.UtcNow
    });
}

C#用Excel操作ライブラリの機能概要、作成、保存およびエクスポート、ワークブックの編集、データの操作、ワークブックのセキュリティ、およびそれぞれのカテゴリの詳細な機能一覧を示す6つの主要カテゴリ

ExcelとCSVの間で変換する方法?

StreamReaderはCSVファイルを処理できますが、ExcelとCSV形式を変換する必要がよくあります。 IronXLはこの変換を簡単に行うことができ、DevOpsワークフローで一般的なETLパイプラインやデータ統合シナリオに特に役立ちます。

using IronXL;
// Load an Excel file and save as CSV
WorkBook workbook = WorkBook.Load("data.xlsx");
workbook.SaveAsCsv("output.csv");
// Load a CSV file and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv");
csvWorkbook.SaveAs("output.xlsx");
// Export specific worksheet to CSV
WorkSheet worksheet = workbook.WorkSheets[0];
worksheet.SaveAsCsv("worksheet1.csv");

これらの変換は、ファイル形式を変更しながらデータを保護します。 IronXLはExcelファイルをCSVファイルに変換する際、デフォルトでは最初のワークシートをフラット化しますが、エクスポートするワークシートを指定することもできます。 CSVからExcelに変換すると、データ型を保持し、将来の書式設定数式の追加を可能にする、適切にフォーマットされたスプレッドシートが作成されます。

自動化されたデータパイプラインの場合、 JSONまたはXML形式でエクスポートすることもできます。

// Export Excel to multiple formats for data pipelines
var workbook = WorkBook.Load("report.xlsx");

// Export to JSON for API responses
string jsonData = workbook.ToJson();

// Export to HTML for web display
workbook.SaveAsHtml("report.html");

// Export to XML for integration systems
workbook.SaveAsXml("report.xml");

// Export specific range to DataTable for database insertion
var dataTable = workbook.DefaultWorkSheet["A1:D10"].ToDataTable();

コンテナ導入のベストプラクティス

Excel処理アプリケーションを展開するDevOps技術者に対して、IronXLはいくつかの利点を提供します。 以下は、Excel処理に最適化された、本番環境に対応したDockerfileです。

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# Install any required system fonts for Excel rendering
RUN apt-get update && apt-get install -y \
    fontconfig \
    libfreetype6 \
    && rm -rf /var/lib/apt/lists/*

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["YourApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build

FROM build AS publish
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

# Set environment variables for IronXL
ENV IRONXL_LICENSE_KEY=${IRONXL_LICENSE_KEY}
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false

ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

このDockerfileは、最小限の依存関係でExcel処理アプリケーションがコンテナ内でスムーズに動作することを保証します。 ライセンスは環境変数を通じて管理されるため、異なる展開環境間でも容易に管理できます。

C#でのExcel処理の次のステップは何ですか?

StreamReaderがExcelファイルを処理できないのは、プレーンテキストとExcelの複雑なファイル構造の基本的な違いに起因します。 StreamReaderはCSVや他のテキスト形式には完璧に機能しますが、実際のExcelファイルには、このバイナリおよびXML構造を理解するIronXLのような専門ライブラリが必要です。

IronXLは、直感的なAPI、幅広いフォーマットサポート、そしてシームレスなストリーム処理機能を備えた包括的なソリューションを提供します。 ウェブアプリケーション、デスクトップソフトウェア、クラウドサービスなど、どのようなアプリケーションを開発する場合でも、 IronXLはあらゆるプラットフォームでExcelファイルを確実に処理します。 このライブラリは、条件付き書式設定グラフ数式、および高度なExcel機能をサポートしているため、Enterpriseアプリケーションのための包括的なソリューションとなっています。

DevOpsチームにとって、IronXLのコンテナフレンドリーなアーキテクチャ、最小限のシステム依存関係、および堅実なパフォーマンス特性は、最新のクラウドネイティブアプリケーションに理想的な選択肢となります。 このライブラリは水平スケーリングをサポートし、 Kubernetesポッド内でシームレスに動作し、CI/CDパイプラインとの統合性にも優れています。

Excelファイルを適切に扱い始める準備はできていますか? プロジェクトのニーズに最適なIronXLの無料トライアル版をダウンロードしてください。 このライブラリは、開発、ステージング、本番環境への展開を含む柔軟なライセンスオプションを提供しており、コンテナ環境やクラウドネイティブアプリケーション向けのオプションも用意されています。

Curtis Chau
テクニカルライター

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

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。