IRONSOFTWAREHOME
IRONXLの使用

.NET CLI 経由でインストールする (CI/CD パイプラインに推奨)

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

IronXLを使用すると、開発者はMicrosoft Officeを必要とせずに、シンプルなC#コードを使用して.NET Coreアプリケーション内でExcelセルを変更できます。セル操作、範囲操作、およびWindows、Linux、macOSへのデプロイをサポートしています。

.NET Core Excel開発にIronXLを使用する理由とは?

.NET Coreで Excel を操作することは、特にクラウドネイティブ環境やコンテナ環境における最新のEnterpriseアプリケーションにとって非常に重要です。 IronXLライブラリは、Microsoft Officeのインストールを必要とせず、プラットフォームを問わずスムーズに動作する、豊富なExcel機能を提供します。 この機能は、レポート生成の自動化、データ処理パイプライン、およびCI/CDワークフローを自動化するDevOpsエンジニアにとって特に価値があります。

典型的なシナリオを考えてみましょう。あなたのチームは、さまざまなデータソースから月次パフォーマンスレポートを作成し、計算に基づいて特定のセルを変更し、この機能を複数の環境にわたるDockerコンテナにデプロイする必要があります。 従来のExcel自動化では、各サーバーにOfficeをインストールする必要があり、ライセンスの問題や導入の複雑さを招いていた。 IronXLは、 .NET Coreアプリケーションが実行されるあらゆる環境で動作する自己完結型のソリューションを提供することで、これらの障壁を取り除きます。

このライブラリは、スプレッドシートをゼロから作成したりワークシートをプログラムで管理したり、外部ライブラリに依存せずにファイル形式を変換したりすることに優れています。 マイクロサービス、サーバーレス関数、またはコンテナ化されたアプリケーションを構築しているかどうかにかかわらず、IronXLは現代のDevOpsワークフローに自然に統合されます。

クラウドネイティブなExcel処理にIronXLを選ぶ理由とは?

クラウド環境では、軽量で柔軟なソリューションが求められる。 IronXLは、 DockerデプロイメントAzure FunctionsAWS Lambdaを標準でサポートすることで、これらのニーズに応えます。 このライブラリのアーキテクチャは、高いパフォーマンスを維持しながらリソース消費を最小限に抑えることを保証するものであり、これは費用対効果の高いクラウド運用にとって非常に重要です。 Interopを使用せずにExcelを操作することもできるため、デプロイメントがよりクリーンで効率的になります。

.NET Core Excel編集の主な機能

能力翻訳内容
クロスプラットフォーム互換性Windows、Linux、macOSをネイティブサポート
コンテナ対応DockerおよびKubernetesのデプロイメントに最適化されています
クラウドネイティブ統合サーバーレスプラットフォームとスムーズに連携します。
外部依存関係なしOfficeを必要としない、自己完結型のライブラリ
パフォーマンスを最適化大規模演算のための効率的なメモリ使用

IronXLライブラリのインストール方法

.NET CoreプロジェクトでIronXLを使い始めるのは、ほんの数分で済みます。 このライブラリは標準的なパッケージマネージャーを通じて利用可能で、あらゆる最新の導入シナリオに対応しています。 プロジェクトにIronXLを追加する方法は以下のとおりです。

dotnet add package IronXL.Excel

または、Visual Studioのパッケージマネージャーコンソールを使用します

PM > Install-Package IronXL.Excel

特定のバージョンインストール (再現可能なビルドに便利)

dotnet add package IronXL.Excel --version 2024.12.0

または、宣言的なパッケージ管理のために.csprojファイルに追加します

<PackageReference Include="IronXL.Excel" Version="2024.12.0" />
Text

本番環境向けライセンスの設定

インストール後、本番環境への展開用にライセンスキーを設定してください。 IronXLは、単一サーバーアプリケーションから企業全体のソリューションまで、さまざまな導入規模に適した柔軟なライセンスオプションを提供します。 Webアプリケーションの場合、ライセンスはweb.configファイルで設定することで一元管理できます。 アプリケーションの拡張性を考慮したライセンス延長や、ニーズの拡大に応じたアップグレードオプションを検討してください。

コンテナ環境向けIronXLの改善

コンテナにデプロイする際は、 Dockerのセットアップにおけるベストプラクティスに沿った以下の最適化戦略を検討してください。

# Dockerfile example for IronXL applications
FROM mcr.microsoft.com/dotnet/runtime:6.0-alpine AS base
WORKDIR /app

# Install required dependencies for Excel processing
RUN apk add --no-cache \
    icu-libs \
    krb5-libs \
    libgcc \
    libintl \
    libssl1.1 \
    libstdc++ \
    zlib

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

FROM build AS publish
RUN dotnet publish "YourProject.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "YourProject.dll"]
Text

.NET CoreでExcelセルを素早く変更する方法

以下に、コア機能を示す実例を示します。 このコードは、既存のExcelファイルを読み込み、特定のセルを変更する方法を示しています。

using IronXL;
using System;

class QuickStartExample
{
    static void Main()
    {
        // Load existing Excel file - supports XLSX, XLS, XLSM, XLTX
        WorkBook workBook = WorkBook.Load("sales_report.xlsx");
        
        // Access the default worksheet (usually first sheet)
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // Modify individual cells with different data types
        sheet["A1"].Value = "Q4 Sales Report";  // String value
        sheet["B2"].Value = DateTime.Now;       // Date value
        sheet["C2"].Value = 158750.50;          // Numeric value
        
        // Apply formulas for calculations
        sheet["D2"].Formula = "=C2*1.15";       // 15% markup
        sheet["E2"].Formula = "=D2-C2";         // Profit calculation
        
        // Bulk update a range of cells
        sheet["A5:A15"].Value = "Updated by Automation";
        
        // Style the header row
        sheet["A1:E1"].Style.Font.Bold = true;
        sheet["A1:E1"].Style.BackgroundColor = "#1F4788";
        sheet["A1:E1"].Style.Font.Color = "#FFFFFF";
        
        // Save the modified workbook
        workBook.SaveAs("sales_report_updated.xlsx");
        
        Console.WriteLine("Excel file updated successfully!");
    }
}

なぜこのパターンは自動化に最適なのか?

このパターンは決定論的でユーザー操作を必要としないため、自動化されたワークフローにおいて完璧に機能します。 このコードをイベントや時間に基づくスケジュールでトリガされるコンテナ内で実行するようにスケジュールすることができ、それはDevOps自動化シナリオに理想的です。 Excelワークシートを開いてプログラムで編集できる機能は、効果的な自動化の可能性を広げます。

.NET Core Excel編集プロジェクトの開始

信頼性の高いExcel編集ソリューションを構築するには、適切なプロジェクト設定が必要です。エラー処理ログ記録を組み込んだ、本番環境への展開におけるベストプラクティスを示す完全な例を作成してみましょう。

using IronXL;
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

public class ExcelProcessor
{
    private readonly ILogger<ExcelProcessor> _logger;
    private readonly string _workingDirectory;
    
    public ExcelProcessor(ILogger<ExcelProcessor> logger, string workingDirectory)
    {
        _logger = logger;
        _workingDirectory = workingDirectory;
    }
    
    public async Task ProcessExcelFileAsync(string fileName)
    {
        try
        {
            var filePath = Path.Combine(_workingDirectory, fileName);
            
            // Validate file exists
            if (!File.Exists(filePath))
            {
                _logger.LogError($"File not found: {filePath}");
                throw new FileNotFoundException("Excel file not found", fileName);
            }
            
            // Load workbook with error handling
            _logger.LogInformation($"Loading Excel file: {fileName}");
            WorkBook workBook = WorkBook.Load(filePath);
            
            // Process each worksheet
            foreach (var worksheet in workBook.WorkSheets)
            {
                _logger.LogInformation($"Processing worksheet: {worksheet.Name}");
                await ProcessWorksheetAsync(worksheet);
            }
            
            // Save with timestamp for version control
            var outputName = $"{Path.GetFileNameWithoutExtension(fileName)}_processed_{DateTime.Now:yyyyMMddHHmmss}.xlsx";
            var outputPath = Path.Combine(_workingDirectory, "output", outputName);
            
            // Ensure output directory exists
            Directory.CreateDirectory(Path.GetDirectoryName(outputPath));
            
            workBook.SaveAs(outputPath);
            _logger.LogInformation($"Saved processed file: {outputName}");
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, $"Error processing Excel file: {fileName}");
            throw;
        }
    }
    
    private async Task ProcessWorksheetAsync(WorkSheet worksheet)
    {
        // Example: Update timestamp in specific cell
        var timestampCell = worksheet["A1"];
        if (timestampCell.StringValue == "Last Updated:")
        {
            worksheet["B1"].Value = DateTime.Now;
            worksheet["B1"].FormatString = "yyyy-MM-dd HH:mm:ss";
        }
        
        // Example: Process data rows asynchronously
        await Task.Run(() =>
        {
            for (int row = 2; row <= worksheet.RowCount; row++)
            {
                // Skip empty rows
                if (worksheet[$"A{row}"].IsEmpty)
                    continue;
                
                // Apply business logic
                var quantity = worksheet[$"B{row}"].IntValue;
                var price = worksheet[$"C{row}"].DoubleValue;
                worksheet[$"D{row}"].Value = quantity * price;
                worksheet[$"E{row}"].Formula = $"=D{row}*0.08"; // Tax calculation
            }
        });
    }
}

エラー処理のベストプラクティス

信頼性の高いエラー処理は、本番環境への導入において極めて重要です。 上記の例は、ログ記録の統合と適切な例外処理を示しています。これらは、ランタイムに直接アクセスできないコンテナ環境で問題をデバッグする際に不可欠です。ご使用の環境に合わせて、セキュリティ対策の実施とファイルサイズ制限の見直しをご検討ください。

特定のセル値を編集する

セル値を変更するためのさまざまな手法を、単純な更新から複雑なデータ変換まで探ってみましょう。 IronXLは、さまざまなデータ型とフォーマットをサポートしながら、 Excelセルに値を書き込むための直感的な方法を提供します。 必要に応じて、セルをコピーしたり、セルの内容を消去したりすることもできます。

using IronXL;
using System;
using System.Linq;
using System.Collections.Generic;

public class CellEditingExamples
{
    public static void DemonstrateVariousCellEdits()
    {
        WorkBook workBook = WorkBook.Load("data.xlsx");
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // 1. Simple value assignment
        sheet["A1"].Value = "Product Name";
        sheet["B1"].Value = 99.99;
        sheet["C1"].Value = true;
        sheet["D1"].Value = DateTime.Now;
        
        // 2. Using cell references with variables
        int rowIndex = 5;
        string columnLetter = "E";
        sheet[$"{columnLetter}{rowIndex}"].Value = "Dynamic Reference";
        
        // 3. Setting values with specific formatting
        sheet["F1"].Value = 0.175;
        sheet["F1"].FormatString = "0.00%"; // Display as 17.50%
        
        // 4. Currency formatting
        sheet["G1"].Value = 1234.56;
        sheet["G1"].FormatString = "$#,##0.00"; // Display as $1,234.56
        
        // 5. Date formatting variations
        var dateCell = sheet["H1"];
        dateCell.Value = DateTime.Now;
        dateCell.FormatString = "MMM dd, yyyy"; // Display as "Dec 25, 2024"
        
        // 6. Setting hyperlinks
        sheet["I1"].Value = "Visit Documentation";
        sheet["I1"].Hyperlink = "___PROTECTED_URL_54___";
        
        // 7. Applying conditional formatting
        foreach (var cell in sheet["J1:J10"])
        {
            cell.Value = new Random().Next(0, 100);
            if (cell.IntValue > 50)
            {
                cell.Style.BackgroundColor = "#90EE90"; // Light green for high values
            }
            else
            {
                cell.Style.BackgroundColor = "#FFB6C1"; // Light red for low values
            }
        }
        
        // 8. Working with formulas
        sheet["K1"].Formula = "=SUM(B1:B10)";
        sheet["K2"].Formula = "=AVERAGE(B1:B10)";
        sheet["K3"].Formula = "=IF(K2>50,\"Above Average\",\"Below Average\")";
        
        workBook.SaveAs("data_edited.xlsx");
    }
}

さまざまなデータ型を効率的に処理する

IronXLはデータ型を自動的に検出して変換しますが、明示的な書式設定を行うことで適切な表示が保証されます。 このライブラリは、通貨、パーセンテージ、日付、およびカスタムパターンのセルデータ形式を設定することをサポートしています。 高度な書式設定オプションについては、 Excelの数値形式を参照してください。 さらに、セルのフォントやサイズをカスタマイズしたり背景のパターンや色を適用したり、セルの境界線や配置を設定したりすることもできます。

複数のセルに値を割り当てる

効率的なExcel処理には、一括処理が不可欠です。 IronXLは、複数のセルを同時に簡単に更新できる効果的な範囲選択機能を提供します。 必要に応じて、行や列を追加したり新しい行や列を挿入したりセルを結合したりすることもできます。

using IronXL;
using System;
using System.Diagnostics;

public class BulkCellOperations
{
    public static void PerformBulkUpdates()
    {
        var stopwatch = Stopwatch.StartNew();
        
        WorkBook workBook = WorkBook.Load("inventory.xlsx");
        WorkSheet sheet = workBook.DefaultWorkSheet;
        
        // Method 1: Update entire column
        sheet["A:A"].Value = "Updated";
        Console.WriteLine($"Column update: {stopwatch.ElapsedMilliseconds}ms");
        
        // Method 2: Update specific range
        sheet["B2:B100"].Value = DateTime.Now.ToShortDateString();
        
        // Method 3: Update entire row
        sheet["1:1"].Style.Font.Bold = true;
        sheet["1:1"].Style.BackgroundColor = "#333333";
        sheet["1:1"].Style.Font.Color = "#FFFFFF";
        
        // Method 4: Update rectangular range
        sheet["C2:E50"].Formula = "=ROW()*COLUMN()";
        
        // Method 5: Update non-contiguous ranges efficiently
        var ranges = new[] { "F1:F10", "H1:H10", "J1:J10" };
        foreach (var range in ranges)
        {
            sheet[range].Value = "Batch Update";
            sheet[range].Style.BottomBorder.Type = BorderType.Double;
        }
        
        // Method 6: Conditional bulk updates
        var dataRange = sheet["K1:K100"];
        foreach (var cell in dataRange)
        {
            // Generate test data
            cell.Value = new Random().Next(1, 1000);
            
            // Apply conditional formatting based on value
            if (cell.IntValue > 750)
            {
                cell.Style.BackgroundColor = "#00FF00"; // Green for high values
                cell.Style.Font.Bold = true;
            }
            else if (cell.IntValue < 250)
            {
                cell.Style.BackgroundColor = "#FF0000"; // Red for low values
                cell.Style.Font.Color = "#FFFFFF";
            }
        }
        
        stopwatch.Stop();
        Console.WriteLine($"Total execution time: {stopwatch.ElapsedMilliseconds}ms");
        
        workBook.SaveAs("inventory_bulk_updated.xlsx");
    }
}

射撃場運営の効率性

範囲操作は個々のセルを反復処理するのではなく、単一のコマンドとして実行されるため、パフォーマンスが大幅に向上します。 この効率性は、大規模なデータセットを処理する場合や、リソースが限られたコンテナ環境で運用する場合に非常に重要になります。 範囲を選択および操作できる機能により、最小限のコードで効果的なデータ変換が可能になります。 セル範囲の並べ替えセル範囲のトリミング複数の範囲の結合も可能です。

一般的な範囲選択パターン

パターン構文翻訳内容
列範囲"A:A"列A全体を選択します
行範囲"1対1"行1全体を選択します
長方形の範囲"A1:C3"3x3ブロックを選択します
名前付き範囲名前付き範囲を作成して使用する明確にするために
ダイナミックレンジ範囲文字列をプログラムで構築する柔軟な選択が可能

ユーザー入力によるセルの編集

対話型のExcel編集は、ユーザー入力や外部データソースと組み合わせることで効果を発揮します。 このアプローチは、パラメータを受け取り、カスタマイズされたレポートを生成するAPIを構築する際に有効です。 さまざまなソースからExcelデータをインポートしたり、異なる形式でエクスポートしたりしたい場合があるかもしれません。

using IronXL;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class InteractiveExcelEditor
{
    public class EditRequest
    {
        public string FileName { get; set; }
        public string WorksheetName { get; set; }
        public Dictionary<string, object> CellUpdates { get; set; }
        public List<RangeUpdate> RangeUpdates { get; set; }
    }
    
    public class RangeUpdate
    {
        public string Range { get; set; }
        public object Value { get; set; }
        public CellStyle Style { get; set; }
    }
    
    public class CellStyle
    {
        public string BackgroundColor { get; set; }
        public bool Bold { get; set; }
        public string NumberFormat { get; set; }
    }
    
    public async Task<string> ProcessEditRequestAsync(EditRequest request)
    {
        try
        {
            // Load workbook
            WorkBook workBook = WorkBook.Load(request.FileName);
            WorkSheet sheet = string.IsNullOrEmpty(request.WorksheetName) 
                ? workBook.DefaultWorkSheet 
                : workBook.GetWorkSheet(request.WorksheetName);
            
            // Process individual cell updates
            if (request.CellUpdates != null)
            {
                foreach (var update in request.CellUpdates)
                {
                    var cell = sheet[update.Key];
                    cell.Value = update.Value;
                    
                    // Auto-detect and apply appropriate formatting
                    if (update.Value is decimal || update.Value is double)
                    {
                        cell.FormatString = "#,##0.00";
                    }
                    else if (update.Value is DateTime)
                    {
                        cell.FormatString = "yyyy-MM-dd";
                    }
                }
            }
            
            // Process range updates
            if (request.RangeUpdates != null)
            {
                foreach (var rangeUpdate in request.RangeUpdates)
                {
                    var range = sheet[rangeUpdate.Range];
                    range.Value = rangeUpdate.Value;
                    
                    // Apply styling if provided
                    if (rangeUpdate.Style != null)
                    {
                        if (!string.IsNullOrEmpty(rangeUpdate.Style.BackgroundColor))
                            range.Style.BackgroundColor = rangeUpdate.Style.BackgroundColor;
                        
                        if (rangeUpdate.Style.Bold)
                            range.Style.Font.Bold = true;
                        
                        if (!string.IsNullOrEmpty(rangeUpdate.Style.NumberFormat))
                            range.FormatString = rangeUpdate.Style.NumberFormat;
                    }
                }
            }
            
            // Generate unique output filename
            string outputFile = $"edited_{DateTime.Now:yyyyMMddHHmmss}_{request.FileName}";
            workBook.SaveAs(outputFile);
            
            return outputFile;
        }
        catch (Exception ex)
        {
            throw new InvalidOperationException($"Failed to process edit request: {ex.Message}", ex);
        }
    }
    
    // Example REST API endpoint implementation
    public static async Task<string> HandleApiRequest(string jsonRequest)
    {
        var request = System.Text.Json.JsonSerializer.Deserialize<EditRequest>(jsonRequest);
        var editor = new InteractiveExcelEditor();
        return await editor.ProcessEditRequestAsync(request);
    }
}

Excel編集とCI/CDパイプラインの統合

DevOpsシナリオの場合、Excel処理を構築と展開のパイプラインに統合します。 ASP.NETアプリケーションでExcelファイルを読み込んだり、必要に応じて.NETのExcelファイルを操作したりできます。

# Example GitHub Actions workflow
name: Process Excel Reports

on:
  schedule:
    - cron: '0 2 * * *' # Run daily at 2 AM
  workflow_dispatch:

jobs:
  process-excel:
    runs-on: ubuntu-latest
    container:
      image: mcr.microsoft.com/dotnet/sdk:6.0
    
    steps:
    - uses: actions/checkout@v2
    
    - name: Restore dependencies
      run: dotnet restore
    
    - name: Build
      run: dotnet build --configuration Release
    
    - name: Process Excel files
      run: |
        dotnet run -- \
          --input-dir ./data/input \
          --output-dir ./data/output \
          --operation bulk-update
    
    - name: Upload processed files
      uses: actions/upload-artifact@v2
      with:
        name: processed-excel-files
        path: ./data/output/*.xlsx
Text

その他のExcel自動化リソース

Excelの自動化機能を拡張するには、以下の専門リソースをご活用ください。

高度な機能を探る

IronXLは、基本的な細胞編集機能にとどまらず、幅広い機能を提供します。

Excel処理ワークフローの改善

以下の高度なテクニックを検討してみてください。

ワークシートに画像を追加して、より充実したレポートを作成しましょう。

Excel編集のクイックリファレンスガイド

以下は、一般的なExcel編集操作に関する包括的なリファレンスです。

手術コード例使用例
単一細胞編集sheet["A1"].Value = "New Value"特定のデータポイントを更新する
範囲編集sheet["A1:C10"].Value = "Bulk Update"効率化のためのバッチ更新
処方箋の適用sheet["D1"].Formula = "=SUM(A1:C1)"動的計算
条件付き書式設定明度に基づいて色を適用する視覚的データ分析
日付の書式設定cell.FormatString = "yyyy-MM-dd"一貫した日付表示
通貨形式cell.FormatString = "$#,##0.00"財務報告
セルを結合するsheet["A1:C1"].Merge()ヘッダーとタイトルを作成する
列の自動サイズ調整sheet.AutoSizeColumn(0)読みやすさを向上させる

この完全ガイドでは、 IronXLが.NET Core環境におけるExcelの自動化をいかに簡素化するかを解説します。 マイクロサービスの構築、コンテナへのデプロイ、サーバーレス関数の作成など、どのような場合でも、 IronXLは外部依存関係なしに効率的なExcel処理に必要なツールを提供します。 レポート生成とデータ処理タスクを簡素化するために、今日からDevOpsワークフローでこれらのパターンを実装し始めてください。

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。