IRONXLの使用 .NET CLI経由でインストールする(CI/CDパイプラインに推奨) カーティス・チャウ 更新日:2026年1月17日 IronXL をダウンロード NuGet ダウンロード DLL ダウンロード 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る IronXLを使用すると、開発者はMicrosoft Officeを必要とせず、簡単なC#コードを使用して.NET Coreアプリケーション内のExcelセルを変更できます。セル操作、範囲操作、Windows、Linux、macOSへのデプロイをサポートします。 .NET Core Excel 開発に IronXL を使用する理由 .NET Core で Excel を操作することは、特にクラウド ネイティブおよびコンテナー化された環境における最新のエンタープライズ アプリケーションにとって重要です。 IronXL ライブラリは、Microsoft Office のインストールを必要とせずにプラットフォーム間でスムーズに動作する広範な Excel 機能を提供します。 この機能は、レポート生成、データ処理パイプライン、CI/CD ワークフローを自動化するDevOpsエンジニアにとって特に役立ちます。 典型的なシナリオを考えてみましょう。チームはさまざまなデータ ソースから毎月のパフォーマンス レポートを生成し、計算に基づいて特定のセルを変更し、この機能を複数の環境にわたる Docker コンテナーに展開する必要があります。 従来の Excel 自動化では、各サーバーに Office をインストールする必要があり、ライセンスの問題や展開の複雑さが生じます。 IronXL は、.NET Core アプリケーションが実行されるあらゆる場所で機能する自己完結型ソリューションを提供することで、これらの障壁を排除します。 このライブラリは、スプレッドシートを最初から作成し、ワークシートをプログラムで管理し、外部依存なしでファイル形式を変換することに優れています。 マイクロサービス、サーバーレス関数、コンテナ化されたアプリケーションのいずれを構築する場合でも、IronXL は最新のDevOpsワークフローに自然に統合されます。 クラウドネイティブ Excel 処理に IronXL を選択する理由 クラウド環境では、軽量で柔軟なソリューションが求められます。 IronXL は、 Docker デプロイメント、 Azure Functions 、 AWS Lambdaをすぐに使用できるようにサポートします。 ライブラリのアーキテクチャにより、コスト効率の高いクラウド運用に不可欠な高パフォーマンスを維持しながら、リソースの消費を最小限に抑えることができます。 Interop なしで Excel を操作できるため、展開がよりクリーンかつ効率的になります。 .NET Core Excel 編集の主な機能 能力 翻訳内容 クロスプラットフォームの互換性 Windows、Linux、macOSのネイティブサポート コンテナ対応 DockerおよびKubernetesのデプロイメントに最適化 クラウドネイティブ統合 サーバーレスプラットフォームでスムーズに動作します 外部依存関係なし Office を必要としない自己完結型ライブラリ パフォーマンスの最適化 大規模操作のための効率的なメモリ使用 IronXLライブラリのインストール方法 .NET Core プロジェクトで IronXL を使い始めるには、わずか数分しかかかりません。 このライブラリは標準パッケージ マネージャーを通じて利用でき、すべての最新の展開シナリオをサポートします。 IronXL をプロジェクトに追加する方法は次のとおりです。 dotnet add package IronXL.Excel # Or use Package Manager Console in Visual Studio Install-Package IronXL.Excel # For specific version installation (useful for reproducible builds) dotnet add package IronXL.Excel --version 2024.12.0 # Add to your .csproj file for declarative package management # <PackageReference Include="IronXL.Excel" Version="2024.12.0" /> dotnet add package IronXL.Excel # Or use Package Manager Console in Visual Studio Install-Package IronXL.Excel # For specific version installation (useful for reproducible builds) dotnet add package IronXL.Excel --version 2024.12.0 # Add to your .csproj file for declarative package management # <PackageReference Include="IronXL.Excel" Version="2024.12.0" /> SHELL 実稼働環境向けのライセンスの設定 インストール後、実稼働環境への展開用にライセンス キーを構成します。 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"] .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!"); } } 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!"); } } Imports IronXL Imports System Class QuickStartExample Shared Sub Main() ' Load existing Excel file - supports XLSX, XLS, XLSM, XLTX Dim workBook As WorkBook = WorkBook.Load("sales_report.xlsx") ' Access the default worksheet (usually first sheet) Dim sheet As WorkSheet = 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.5 ' 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!") End Sub End Class $vbLabelText $csharpLabel このパターンが自動化に最適なのはなぜですか? このパターンは決定論的であり、ユーザーの操作を必要としないため、自動化されたワークフローに最適です。 このコードは、イベントまたは時間ベースのスケジュールによってトリガーされ、コンテナー内で実行されるようにスケジュールできるため、 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 } }); } } 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 } }); } } Imports IronXL Imports System Imports System.IO Imports System.Threading.Tasks Imports Microsoft.Extensions.Logging Public Class ExcelProcessor Private ReadOnly _logger As ILogger(Of ExcelProcessor) Private ReadOnly _workingDirectory As String Public Sub New(logger As ILogger(Of ExcelProcessor), workingDirectory As String) _logger = logger _workingDirectory = workingDirectory End Sub Public Async Function ProcessExcelFileAsync(fileName As String) As Task Try Dim filePath = Path.Combine(_workingDirectory, fileName) ' Validate file exists If Not File.Exists(filePath) Then _logger.LogError($"File not found: {filePath}") Throw New FileNotFoundException("Excel file not found", fileName) End If ' Load workbook with error handling _logger.LogInformation($"Loading Excel file: {fileName}") Dim workBook As WorkBook = WorkBook.Load(filePath) ' Process each worksheet For Each worksheet In workBook.WorkSheets _logger.LogInformation($"Processing worksheet: {worksheet.Name}") Await ProcessWorksheetAsync(worksheet) Next ' Save with timestamp for version control Dim outputName = $"{Path.GetFileNameWithoutExtension(fileName)}_processed_{DateTime.Now:yyyyMMddHHmmss}.xlsx" Dim 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 ex As Exception _logger.LogError(ex, $"Error processing Excel file: {fileName}") Throw End Try End Function Private Async Function ProcessWorksheetAsync(worksheet As WorkSheet) As Task ' Example: Update timestamp in specific cell Dim timestampCell = worksheet("A1") If timestampCell.StringValue = "Last Updated:" Then worksheet("B1").Value = DateTime.Now worksheet("B1").FormatString = "yyyy-MM-dd HH:mm:ss" End If ' Example: Process data rows asynchronously Await Task.Run(Sub() For row As Integer = 2 To worksheet.RowCount ' Skip empty rows If worksheet($"A{row}").IsEmpty Then Continue For End If ' Apply business logic Dim quantity = worksheet($"B{row}").IntValue Dim price = worksheet($"C{row}").DoubleValue worksheet($"D{row}").Value = quantity * price worksheet($"E{row}").Formula = $"=D{row}*0.08" ' Tax calculation Next End Sub) End Function End Class $vbLabelText $csharpLabel エラー処理のベストプラクティス 信頼性の高いエラー処理は、本番環境への展開に不可欠です。 上記の例は、ログの統合と適切な例外処理を示しています。これらは、ランタイムに直接アクセスできない可能性のあるコンテナ化された環境での問題のデバッグに不可欠です。ユースケースに合わせて、セキュリティ対策の実装とファイルサイズ制限の見直しを検討してください。 特定のセルの値を編集する 単純な更新から複雑なデータ変換まで、セルの値を変更するためのさまざまな手法を見てみましょう。 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"); } } 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"); } } Imports IronXL Imports System Imports System.Linq Imports System.Collections.Generic Public Class CellEditingExamples Public Shared Sub DemonstrateVariousCellEdits() Dim workBook As WorkBook = WorkBook.Load("data.xlsx") Dim sheet As WorkSheet = 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 Dim rowIndex As Integer = 5 Dim columnLetter As String = "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 Dim 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 For Each cell In sheet("J1:J10") cell.Value = (New Random()).Next(0, 100) If cell.IntValue > 50 Then cell.Style.BackgroundColor = "#90EE90" ' Light green for high values Else cell.Style.BackgroundColor = "#FFB6C1" ' Light red for low values End If Next ' 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") End Sub End Class $vbLabelText $csharpLabel 異なるデータ型を効率的に処理する 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"); } } 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"); } } Imports IronXL Imports System Imports System.Diagnostics Public Class BulkCellOperations Public Shared Sub PerformBulkUpdates() Dim stopwatch = Stopwatch.StartNew() Dim workBook As WorkBook = WorkBook.Load("inventory.xlsx") Dim sheet As WorkSheet = 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 Dim ranges = {"F1:F10", "H1:H10", "J1:J10"} For Each range In ranges sheet(range).Value = "Batch Update" sheet(range).Style.BottomBorder.Type = BorderType.Double Next ' Method 6: Conditional bulk updates Dim dataRange = sheet("K1:K100") For Each cell In dataRange ' Generate test data cell.Value = New Random().Next(1, 1000) ' Apply conditional formatting based on value If cell.IntValue > 750 Then cell.Style.BackgroundColor = "#00FF00" ' Green for high values cell.Style.Font.Bold = True ElseIf cell.IntValue < 250 Then cell.Style.BackgroundColor = "#FF0000" ' Red for low values cell.Style.Font.Color = "#FFFFFF" End If Next stopwatch.Stop() Console.WriteLine($"Total execution time: {stopwatch.ElapsedMilliseconds}ms") workBook.SaveAs("inventory_bulk_updated.xlsx") End Sub End Class $vbLabelText $csharpLabel 射撃場運営の効率 範囲操作は、個々のセルを反復処理するのではなく、単一のコマンドとして実行されるため、パフォーマンスが大幅に向上します。 この効率は、大規模なデータセットを処理する場合や、リソースが制限されたコンテナ環境内で操作する場合に非常に重要になります。 範囲を選択して操作する機能により、最小限のコードで効果的なデータ変換が可能になります。 セル範囲を並べ替えたり、セル範囲をトリムしたり、複数の範囲を結合したりすることもできます。 一般的な範囲選択パターン パターン 構文 翻訳内容 列範囲 "あ:あ" 列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); } } 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); } } Imports IronXL Imports System Imports System.Collections.Generic Imports System.Threading.Tasks Public Class InteractiveExcelEditor Public Class EditRequest Public Property FileName As String Public Property WorksheetName As String Public Property CellUpdates As Dictionary(Of String, Object) Public Property RangeUpdates As List(Of RangeUpdate) End Class Public Class RangeUpdate Public Property Range As String Public Property Value As Object Public Property Style As CellStyle End Class Public Class CellStyle Public Property BackgroundColor As String Public Property Bold As Boolean Public Property NumberFormat As String End Class Public Async Function ProcessEditRequestAsync(request As EditRequest) As Task(Of String) Try ' Load workbook Dim workBook As WorkBook = WorkBook.Load(request.FileName) Dim sheet As WorkSheet = If(String.IsNullOrEmpty(request.WorksheetName), workBook.DefaultWorkSheet, workBook.GetWorkSheet(request.WorksheetName)) ' Process individual cell updates If request.CellUpdates IsNot Nothing Then For Each update In request.CellUpdates Dim cell = sheet(update.Key) cell.Value = update.Value ' Auto-detect and apply appropriate formatting If TypeOf update.Value Is Decimal OrElse TypeOf update.Value Is Double Then cell.FormatString = "#,##0.00" ElseIf TypeOf update.Value Is DateTime Then cell.FormatString = "yyyy-MM-dd" End If Next End If ' Process range updates If request.RangeUpdates IsNot Nothing Then For Each rangeUpdate In request.RangeUpdates Dim range = sheet(rangeUpdate.Range) range.Value = rangeUpdate.Value ' Apply styling if provided If rangeUpdate.Style IsNot Nothing Then If Not String.IsNullOrEmpty(rangeUpdate.Style.BackgroundColor) Then range.Style.BackgroundColor = rangeUpdate.Style.BackgroundColor End If If rangeUpdate.Style.Bold Then range.Style.Font.Bold = True End If If Not String.IsNullOrEmpty(rangeUpdate.Style.NumberFormat) Then range.FormatString = rangeUpdate.Style.NumberFormat End If End If Next End If ' Generate unique output filename Dim outputFile As String = $"edited_{DateTime.Now:yyyyMMddHHmmss}_{request.FileName}" workBook.SaveAs(outputFile) Return outputFile Catch ex As Exception Throw New InvalidOperationException($"Failed to process edit request: {ex.Message}", ex) End Try End Function ' Example REST API endpoint implementation Public Shared Async Function HandleApiRequest(jsonRequest As String) As Task(Of String) Dim request = System.Text.Json.JsonSerializer.Deserialize(Of EditRequest)(jsonRequest) Dim editor = New InteractiveExcelEditor() Return Await editor.ProcessEditRequestAsync(request) End Function End Class $vbLabelText $csharpLabel Excel 編集と CI/CD パイプラインの統合 DevOpsシナリオでは、Excel 処理をビルドおよびデプロイメント パイプラインに統合します。 必要に応じて、 ASP.NET アプリケーションで Excel ファイルを読み取ったり、 VB.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 # 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 YAML 追加のExcel自動化リソース Excel の自動化機能を拡張するには、次の専門リソースを参照してください。 探索すべき高度な機能 IronXL は、基本的なセル編集を超えた広範な機能を提供します。 Web ベースの Excel 処理のためのBlazor アプリケーションでの Excel の操作 よりクリーンな展開のために相互運用性なしで Excel を操作する .NET で Excel ファイルをゼロから作成する データベース統合のためのExcel から SQL への変換 クロスプラットフォームのモバイル アプリ向けに.NET MAUI で Excel を操作する Excel処理ワークフローの改善 次の高度なテクニックを検討してください。 -ワークシートに画像を追加して、より充実したレポートを作成 ナビゲーションを向上させるためにフリーズペインを作成する -条件付き書式を適用してパターンを強調表示する 動的な計算のための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ワークフローにこれらのパターンを実装して、レポート生成とデータ処理タスクを簡素化しましょう。 よくある質問 Excel を .NET Core アプリケーションで使用する目的は何ですか? Excel は、効率的なデータ管理と操作のために .NET Core アプリケーションで使用されます。IronXL は、開発者が C# を使用してプログラム的に Excel ファイルをロード、編集、保存することを可能にし、生産性とデータ処理能力を向上させます。 どのようにして .NET Core プロジェクトに Excel ライブラリをインストールできますか? NuGet パッケージマネージャを使用して dotnet add package IronXL.Excel コマンドで .NET Core プロジェクトに IronXL ライブラリをインストールできます。あるいは、IronXL のウェブサイトから DLL ファイルを直接ダウンロードすることもできます。 .NET Core で Excel ファイルをロードする手順は何ですか? IronXL を使用して .NET Core で Excel ファイルをロードするには WorkBook.Load メソッドを使用します。例えば、WorkBook wb = WorkBook.Load("sample.xlsx"); は 'sample.xlsx' という名前の Excel ワークブックをロードします。 .NET Core を使用して Excel シートのセル範囲を編集できますか? はい、IronXL を使用すると、Excel シートのセル範囲を同時に編集することができます。ws["A1:A9"].Value = "new value"; の構文を使って複数のセルに値を割り当てることができます。ここで ws は WorkSheet オブジェクトです。 Excel ファイル編集時に .NET Core でユーザー入力をどのように処理しますか? IronXL は、コンソールやユーザーインターフェースを通じてユーザー入力をキャプチャし、それを使って Excel スプレッドシートの更新対象にするセル範囲と値を定義することができます。 .NET Core で Excel の操作に使用するプログラミング言語は何ですか? C# は、IronXL ライブラリを使用して .NET Core アプリケーションでプログラム的に Excel ファイルを操作するために使用されます。 .NET Core で Excel ファイルを扱うためのチュートリアルはありますか? はい、C# で IronXL を使用して Excel ファイルの読み取りと操作に関する包括的なチュートリアルがあります。その他のリソースやサンプルプロジェクトは IronXL のウェブサイトで見つけることができます。 .NET Core で Excel ライブラリを使用するための互換性要件は何ですか? IronXL はさまざまな .NET Core バージョンをサポートしています。詳細な互換性情報は IronXL ドキュメンテーションのウェブサイトで確認できます。 Excel ライブラリの API ドキュメントはどこでアクセスできますか? IronXL の API ドキュメンテーションはオンラインで利用可能で、すべての名前空間、メソッド、および機能の詳細が提供されています。このリソースにアクセスするには IronXL のウェブサイトをご覧ください。 カーティス・チャウ 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 2026年2月15日 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法を学びます。 詳しく読む 公開日 2026年2月15日 IronXLを使用してOfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法 IronXLを使用して、OfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法について説明します。 詳しく読む 公開日 2026年2月15日 C# CSV to XLSX: 完全な開発者ガイド IronXLを使用してC#でCSVをXLSXに変換します。CSVファイルを読み込み、データ型を保持し、グラフを追加し、Microsoft Officeに依存せずにExcel形式にエクスポートします。 詳しく読む C#でExcelファイルを生成する
公開日 2026年2月15日 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法 C#でOleDbとIronXLを使用してDataTableをExcelにエクスポートする方法を学びます。 詳しく読む
公開日 2026年2月15日 IronXLを使用してOfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法 IronXLを使用して、OfficeがインストールされていないVB.NETで既存のExcelファイルを開く方法について説明します。 詳しく読む
公開日 2026年2月15日 C# CSV to XLSX: 完全な開発者ガイド IronXLを使用してC#でCSVをXLSXに変換します。CSVファイルを読み込み、データ型を保持し、グラフを追加し、Microsoft Officeに依存せずにExcel形式にエクスポートします。 詳しく読む