IronXL チュートリアル C#でのExcelファイルの読み方 How to Read Excel Files in C# Without Interop: Complete Developer Guide Jacob Mellor 更新日:8月 17, 2025 Download IronXL NuGet Download テキストの検索と置換 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article This article was translated from English: Does it need improvement? Translated View the article in English IronXLを使用してC#でExcelファイルを操作する方法を習得します。Microsoft Officeのインストールを必要とせず、スプレッドシートデータを読み込み、検証し、エクスポートできる強力な.NETライブラリです。 この包括的なチュートリアルは、データ検証、データベース変換、およびREST API統合を含む実践的なExcel操作を示しています。 クイックスタート:IronXLで1行でセルを読み取る IronXLを使用して1行でExcelワークブックをロードし、セルの値を取得できます。 複雑なセットアップは不要、Interopも不要で迅速にデータにアクセスできます。 Get started making PDFs with NuGet now: Install IronXL with NuGet Package Manager PM > Install-Package IronXL.Excel Copy and run this code snippet. var value = IronXL.WorkBook.Load("file.xlsx").GetWorkSheet(0)["A1"].StringValue; Deploy to test on your live environment Start using IronXL in your project today with a free trial Free 30 day Trial IronXLを設定してC♯でExcelファイルを読み込むにはどうすればよいですか? C#プロジェクトでExcelファイルを読み込むためのIronXLの設定は数分で完了します。 ライブラリは.XLSと.XLSXフォーマットの両方をサポートしているため、あらゆるExcel関連のタスクに対応しています。 開始するには、以下の手順に従ってください: C#ライブラリをダウンロードしてExcelファイルを読み込みます WorkBook.Load()を使用してExcelワークブックをロードして読み取ります GetWorkSheet()メソッドを使用してワークシートにアクセスします sheet["A1"].Valueのような直感的な構文を使用してセルの値を読み取ります プログラムでスプレッドシートデータを検証および処理します エンティティフレームワークを使用してデータをデータベースにエクスポートします IronXLは、C#でMicrosoft Excelドキュメントを読み取りおよび編集するのに優れています。 ライブラリは独立して動作し、Microsoft ExcelやInteropを必要としません。 実際に、IronXLはMicrosoft.Office.Interop.Excelよりも高速で直感的なAPIを提供します。 IronXLには以下が含まれます: .NETエンジニアによる専用の製品サポート Microsoft Visual Studioを介した簡単なインストール 開発用の無料試用版。 ライセンスは$liteLicenseから IronXLソフトウェアライブラリを使用すると、C#およびVB.NETでのExcelファイルの読み取りおよび作成が簡単になります。 IronXLを使用して.XLSおよび.XLSX Excelファイルを読み取る IronXLを使用してExcelファイルを読み取る基本的なワークフローは次のとおりです: Install the IronXL Excel Library via NuGet package or download the .NET Excel DLL 任意のXLS、XLSX、またはCSV文書を読み取るためにWorkBook.Load()メソッドを使用します sheet["A11"].DecimalValueのような直感的な構文を使用してセルの値にアクセスします :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-1.cs using IronXL; using System; using System.Linq; // Load Excel workbook from file path WorkBook workBook = WorkBook.Load("test.xlsx"); // Access the first worksheet using LINQ WorkSheet workSheet = workBook.WorkSheets.First(); // Read integer value from cell A2 int cellValue = workSheet["A2"].IntValue; Console.WriteLine($"Cell A2 value: {cellValue}"); // Iterate through a range of cells foreach (var cell in workSheet["A2:A10"]) { Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text); } // Advanced Operations with LINQ // Calculate sum using built_in Sum() method decimal sum = workSheet["A2:A10"].Sum(); // Find maximum value using LINQ decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue); // Output calculated results Console.WriteLine($"Sum of A2:A10: {sum}"); Console.WriteLine($"Maximum value: {max}"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel このコードは、IronXLのいくつかの主要な機能、ワークブックのロード、アドレスによるセルへのアクセス、範囲の反復、および計算の実行を示しています。 WorkBook.Load()メソッドはファイルフォーマットを賢く検出し、範囲構文["A2:A10"]はExcelライクなセル選択を提供します。 LINQの統合により、セルコレクションへの強力なデータクエリと集計が可能になります。 このチュートリアルのコード例は、さまざまなデータシナリオを紹介する3つのサンプルExcelスプレッドシートで動作します: このチュートリアルで使用されるサンプルExcelファイル(GDP.xlsx、People.xlsx、PopulationByState.xlsx)は、さまざまなIronXL操作を示します。 IronXL C#ライブラリをインストールするにはどうすればいいですか? 今日あなたのプロジェクトでIronXLを無料トライアルで使用開始。 最初のステップ: 無料で始める IronXL.Excelライブラリをインストールすると、.NETフレームワークプロジェクトに包括的なExcel機能が追加されます。 NuGetインストールまたは手動DLL統合から選択できます。 IronXL NuGetパッケージのインストール Visual Studioで、プロジェクトを右クリックし、「NuGetパッケージの管理」を選択します。 「参照」タブで「IronXL.Excel」を検索します。 インストールボタンをクリックして、IronXLをプロジェクトに追加します Visual StudioのNuGetパッケージマネージャーを通じてIronXLをインストールすることにより、自動的な依存関係の管理を提供します。 または、パッケージマネージャーコンソールを使用してIronXLをインストールします: パッケージマネージャーコンソールを開く(ツール → NuGetパッケージマネージャー → パッケージマネージャーコンソール) インストールコマンドを実行します: Install-Package IronXL.Excel また、NuGet Webサイトでパッケージ詳細を確認することもできます。 手動インストール 手動インストールでは、IronXLの.NET Excel DLLをダウンロードし、Visual Studioプロジェクトに直接参照として追加します。 Excelワークブックを読み込んで読み取るにはどうすればいいですか? WorkBookクラスはExcelファイル全体を表します。WorkBook.Load()メソッドを使用してExcelファイルをロードします。このメソッドは、XLS、XLSX、CSV、およびTSVフォーマットのファイルパスを受け入れます。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-2.cs using IronXL; using System; using System.Linq; // Load Excel file from specified path WorkBook workBook = WorkBook.Load(@"Spreadsheets\GDP.xlsx"); Console.WriteLine("Workbook loaded successfully."); // Access specific worksheet by name WorkSheet sheet = workBook.GetWorkSheet("Sheet1"); // Read and display cell value string cellValue = sheet["A1"].StringValue; Console.WriteLine($"Cell A1 contains: {cellValue}"); // Perform additional operations // Count non_empty cells in column A int rowCount = sheet["A:A"].Count(cell => !cell.IsEmpty); Console.WriteLine($"Column A has {rowCount} non_empty cells"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 各WorkBookには、個別のExcelシートを表す複数のWorkSheetオブジェクトが含まれています。 GetWorkSheet()を使用して、名前でワークシートにアクセスします: :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-3.cs using IronXL; using System; // Get worksheet by name WorkSheet workSheet = workBook.GetWorkSheet("GDPByCountry"); Console.WriteLine("Worksheet 'GDPByCountry' not found"); // List available worksheets foreach (var sheet in workBook.WorkSheets) { Console.WriteLine($"Available: {sheet.Name}"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel C#で新しいExcelドキュメントを作成するにはどうすればいいですか? お好みのファイルフォーマットでWorkBookオブジェクトを構築することで、新しいExcelドキュメントを作成します。 IronXLは、最新のXLSXフォーマットと旧式のXLSフォーマットの両方をサポートしています。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-4.cs using IronXL; // Create new XLSX workbook (recommended format) WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX); // Set workbook metadata workBook.Metadata.Author = "Your Application"; workBook.Metadata.Comments = "Generated by IronXL"; // Create new XLS workbook for legacy support WorkBook legacyWorkBook = WorkBook.Create(ExcelFileFormat.XLS); // Save the workbook workBook.SaveAs("NewDocument.xlsx"); Imports IronXL ' Create new XLSX workbook (recommended format) Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Set workbook metadata workBook.Metadata.Author = "Your Application" workBook.Metadata.Comments = "Generated by IronXL" ' Create new XLS workbook for legacy support Dim legacyWorkBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLS) ' Save the workbook workBook.SaveAs("NewDocument.xlsx") $vbLabelText $csharpLabel 注意: ExcelFileFormat.XLSは、Excel 2003およびそれ以前との互換性が必要な場合にのみ使用してください。 Excelドキュメントにワークシートを追加するにはどうすればいいですか? IronXLのWorkBookは、ワークシートのコレクションを含んでいます。 この構造を理解することで、複数シートのExcelファイルを構築する際に役立ちます。 IronXLの複数のWorkSheetオブジェクトを含むWorkBookの視覚的表現。 CreateWorkSheet()を使用して新しいワークシートを作成します: :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-5.cs using IronXL; // Create multiple worksheets with descriptive names WorkSheet summarySheet = workBook.CreateWorkSheet("Summary"); WorkSheet dataSheet = workBook.CreateWorkSheet("RawData"); WorkSheet chartSheet = workBook.CreateWorkSheet("Charts"); // Set the active worksheet workBook.SetActiveTab(0); // Makes "Summary" the active sheet // Access default worksheet (first sheet) WorkSheet defaultSheet = workBook.DefaultWorkSheet; IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel セルの値を読み取って編集するにはどうすればいいですか? 単一のセルを読み取って編集する ワークシートのインデクサープロパティを通じて個々のセルにアクセスします。 IronXLのCellクラスは、強く型付けされた値プロパティを提供します。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-6.cs using IronXL; using System; using System.Linq; // Load workbook and get worksheet WorkBook workBook = WorkBook.Load("test.xlsx"); WorkSheet workSheet = workBook.DefaultWorkSheet; // Access cell B1 IronXL.Cell cell = workSheet["B1"].First(); // Read cell value with type safety string textValue = cell.StringValue; int intValue = cell.IntValue; decimal decimalValue = cell.DecimalValue; DateTime? dateValue = cell.DateTimeValue; // Check cell data type if (cell.IsNumeric) { Console.WriteLine($"Numeric value: {cell.DecimalValue}"); } else if (cell.IsText) { Console.WriteLine($"Text value: {cell.StringValue}"); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel Cellクラスは、可能な場合に自動的に値を変換する複数のプロパティを提供します。 セルの操作の詳細については、セルのフォーマットチュートリアルを参照してください。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-7.cs // Write different data types to cells workSheet["A1"].Value = "Product Name"; // String workSheet["B1"].Value = 99.95m; // Decimal workSheet["C1"].Value = DateTime.Today; // Date workSheet["D1"].Formula = "=B1*1.2"; // Formula // Format cells workSheet["B1"].FormatString = "$#,##0.00"; // Currency format workSheet["C1"].FormatString = "yyyy-MM-dd";// Date format // Save changes workBook.Save(); ' Write different data types to cells workSheet("A1").Value = "Product Name" ' String workSheet("B1").Value = 99.95D ' Decimal workSheet("C1").Value = DateTime.Today ' Date workSheet("D1").Formula = "=B1*1.2" ' Formula ' Format cells workSheet("B1").FormatString = "$#,##0.00" ' Currency format workSheet("C1").FormatString = "yyyy-MM-dd" ' Date format ' Save changes workBook.Save() $vbLabelText $csharpLabel セル範囲を操作するにはどうすればいいですか? IronXLのRangeクラスは、複数のセルを表し、Excelデータに対する一括操作を可能にします。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-8.cs // Select range using Excel notation Range range = workSheet["D2:D101"]; // Alternative: Use Range class for dynamic selection Range dynamicRange = workSheet.GetRange("D2:D101"); // Row 2_101, Column D // Perform bulk operations range.Value = 0; // Set all cells to 0 ' Select range using Excel notation Dim range As Range = workSheet("D2:D101") ' Alternative: Use Range class for dynamic selection Dim dynamicRange As Range = workSheet.GetRange("D2:D101") ' Row 2_101, Column D ' Perform bulk operations range.Value = 0 ' Set all cells to 0 $vbLabelText $csharpLabel セルカウントが既知の場合はループを使用して範囲を効率的に処理します: // Data validation example public class ValidationResult { public int Row { get; set; } public string PhoneError { get; set; } public string EmailError { get; set; } public string DateError { get; set; } public bool IsValid => string.IsNullOrEmpty(PhoneError) && string.IsNullOrEmpty(EmailError) && string.IsNullOrEmpty(DateError); } // Validate data in rows 2-101 var results = new List<ValidationResult>(); for (int row = 2; row <= 101; row++) { var result = new ValidationResult { Row = row }; // Get row data efficiently var phoneCell = workSheet[$"B{row}"]; var emailCell = workSheet[$"D{row}"]; var dateCell = workSheet[$"E{row}"]; // Validate phone number if (!IsValidPhoneNumber(phoneCell.StringValue)) result.PhoneError = "Invalid phone format"; // Validate email if (!IsValidEmail(emailCell.StringValue)) result.EmailError = "Invalid email format"; // Validate date if (!dateCell.IsDateTime) result.DateError = "Invalid date format"; results.Add(result); } // Helper methods bool IsValidPhoneNumber(string phone) => System.Text.RegularExpressions.Regex.IsMatch(phone, @"^\d{3}-\d{3}-\d{4}$"); bool IsValidEmail(string email) => email.Contains("@") && email.Contains("."); // Data validation example public class ValidationResult { public int Row { get; set; } public string PhoneError { get; set; } public string EmailError { get; set; } public string DateError { get; set; } public bool IsValid => string.IsNullOrEmpty(PhoneError) && string.IsNullOrEmpty(EmailError) && string.IsNullOrEmpty(DateError); } // Validate data in rows 2-101 var results = new List<ValidationResult>(); for (int row = 2; row <= 101; row++) { var result = new ValidationResult { Row = row }; // Get row data efficiently var phoneCell = workSheet[$"B{row}"]; var emailCell = workSheet[$"D{row}"]; var dateCell = workSheet[$"E{row}"]; // Validate phone number if (!IsValidPhoneNumber(phoneCell.StringValue)) result.PhoneError = "Invalid phone format"; // Validate email if (!IsValidEmail(emailCell.StringValue)) result.EmailError = "Invalid email format"; // Validate date if (!dateCell.IsDateTime) result.DateError = "Invalid date format"; results.Add(result); } // Helper methods bool IsValidPhoneNumber(string phone) => System.Text.RegularExpressions.Regex.IsMatch(phone, @"^\d{3}-\d{3}-\d{4}$"); bool IsValidEmail(string email) => email.Contains("@") && email.Contains("."); ' Data validation example Public Class ValidationResult Public Property Row() As Integer Public Property PhoneError() As String Public Property EmailError() As String Public Property DateError() As String Public ReadOnly Property IsValid() As Boolean Get Return String.IsNullOrEmpty(PhoneError) AndAlso String.IsNullOrEmpty(EmailError) AndAlso String.IsNullOrEmpty(DateError) End Get End Property End Class ' Validate data in rows 2-101 Private results = New List(Of ValidationResult)() For row As Integer = 2 To 101 Dim result = New ValidationResult With {.Row = row} ' Get row data efficiently Dim phoneCell = workSheet($"B{row}") Dim emailCell = workSheet($"D{row}") Dim dateCell = workSheet($"E{row}") ' Validate phone number If Not IsValidPhoneNumber(phoneCell.StringValue) Then result.PhoneError = "Invalid phone format" End If ' Validate email If Not IsValidEmail(emailCell.StringValue) Then result.EmailError = "Invalid email format" End If ' Validate date If Not dateCell.IsDateTime Then result.DateError = "Invalid date format" End If results.Add(result) Next row ' Helper methods 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: 'bool IsValidPhoneNumber(string phone) '{ ' Return System.Text.RegularExpressions.Regex.IsMatch(phone, "^\d{3}-\d{3}-\d{4}$"); '} 'INSTANT VB TODO TASK: Local functions are not converted by Instant VB: 'bool IsValidEmail(string email) '{ ' Return email.Contains("@") && email.Contains("."); '} $vbLabelText $csharpLabel Excelスプレッドシートに数式を追加するにはどうすればいいですか? Formulaプロパティを使用してExcelの数式を適用します。 IronXLは、標準のExcel数式構文をサポートしています。 :path=/static-assets/excel/content-code-examples/tutorials/how-to-read-excel-file-csharp-9.cs using IronXL; // Add formulas to calculate percentages int lastRow = 50; for (int row = 2; row < lastRow; row++) { // Calculate percentage: current value / total workSheet[$"C{row}"].Formula = $"=B{row}/B{lastRow}"; // Format as percentage workSheet[$"C{row}"].FormatString = "0.00%"; } // Add summary formulas workSheet["B52"].Formula = "=SUM(B2:B50)"; // Sum workSheet["B53"].Formula = "=AVERAGE(B2:B50)"; // Average workSheet["B54"].Formula = "=MAX(B2:B50)"; // Maximum workSheet["B55"].Formula = "=MIN(B2:B50)"; // Minimum // Force formula evaluation workBook.EvaluateAll(); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 既存の数式を編集するには、Excel数式チュートリアルを探索してください。 スプレッドシートデータを検証するにはどうすればいいですか? IronXLはスプレッドシートの包括的なデータ検証を可能にします。 この例は、電話番号、メール、および日付を外部ライブラリと組み込みのC#機能を使用して検証します。 using System.Text.RegularExpressions; using IronXL; // Validation implementation for (int i = 2; i <= 101; i++) { var result = new PersonValidationResult { Row = i }; results.Add(result); // Get cells for current person var cells = workSheet[$"A{i}:E{i}"].ToList(); // Validate phone (column B) string phone = cells[1].StringValue; if (!Regex.IsMatch(phone, @"^\+?1?\d{10,14}$")) { result.PhoneNumberErrorMessage = "Invalid phone format"; } // Validate email (column D) string email = cells[3].StringValue; if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) { result.EmailErrorMessage = "Invalid email address"; } // Validate date (column E) if (!cells[4].IsDateTime) { result.DateErrorMessage = "Invalid date format"; } } using System.Text.RegularExpressions; using IronXL; // Validation implementation for (int i = 2; i <= 101; i++) { var result = new PersonValidationResult { Row = i }; results.Add(result); // Get cells for current person var cells = workSheet[$"A{i}:E{i}"].ToList(); // Validate phone (column B) string phone = cells[1].StringValue; if (!Regex.IsMatch(phone, @"^\+?1?\d{10,14}$")) { result.PhoneNumberErrorMessage = "Invalid phone format"; } // Validate email (column D) string email = cells[3].StringValue; if (!Regex.IsMatch(email, @"^[^@\s]+@[^@\s]+\.[^@\s]+$")) { result.EmailErrorMessage = "Invalid email address"; } // Validate date (column E) if (!cells[4].IsDateTime) { result.DateErrorMessage = "Invalid date format"; } } Imports System.Text.RegularExpressions Imports IronXL ' Validation implementation For i As Integer = 2 To 101 Dim result = New PersonValidationResult With {.Row = i} results.Add(result) ' Get cells for current person Dim cells = workSheet($"A{i}:E{i}").ToList() ' Validate phone (column B) Dim phone As String = cells(1).StringValue If Not Regex.IsMatch(phone, "^\+?1?\d{10,14}$") Then result.PhoneNumberErrorMessage = "Invalid phone format" End If ' Validate email (column D) Dim email As String = cells(3).StringValue If Not Regex.IsMatch(email, "^[^@\s]+@[^@\s]+\.[^@\s]+$") Then result.EmailErrorMessage = "Invalid email address" End If ' Validate date (column E) If Not cells(4).IsDateTime Then result.DateErrorMessage = "Invalid date format" End If Next i $vbLabelText $csharpLabel 検証結果を新しいワークシートに保存します: // Create results worksheet var resultsSheet = workBook.CreateWorkSheet("ValidationResults"); // Add headers resultsSheet["A1"].Value = "Row"; resultsSheet["B1"].Value = "Valid"; resultsSheet["C1"].Value = "Phone Error"; resultsSheet["D1"].Value = "Email Error"; resultsSheet["E1"].Value = "Date Error"; // Style headers resultsSheet["A1:E1"].Style.Font.Bold = true; resultsSheet["A1:E1"].Style.SetBackgroundColor("#4472C4"); resultsSheet["A1:E1"].Style.Font.Color = "#FFFFFF"; // Output validation results for (int i = 0; i < results.Count; i++) { var result = results[i]; int outputRow = i + 2; resultsSheet[$"A{outputRow}"].Value = result.Row; resultsSheet[$"B{outputRow}"].Value = result.IsValid ? "Yes" : "No"; resultsSheet[$"C{outputRow}"].Value = result.PhoneNumberErrorMessage ?? ""; resultsSheet[$"D{outputRow}"].Value = result.EmailErrorMessage ?? ""; resultsSheet[$"E{outputRow}"].Value = result.DateErrorMessage ?? ""; // Highlight invalid rows if (!result.IsValid) { resultsSheet[$"A{outputRow}:E{outputRow}"].Style.SetBackgroundColor("#FFE6E6"); } } // Auto-fit columns for (int col = 0; col < 5; col++) { resultsSheet.AutoSizeColumn(col); } // Save validated workbook workBook.SaveAs(@"Spreadsheets\PeopleValidated.xlsx"); // Create results worksheet var resultsSheet = workBook.CreateWorkSheet("ValidationResults"); // Add headers resultsSheet["A1"].Value = "Row"; resultsSheet["B1"].Value = "Valid"; resultsSheet["C1"].Value = "Phone Error"; resultsSheet["D1"].Value = "Email Error"; resultsSheet["E1"].Value = "Date Error"; // Style headers resultsSheet["A1:E1"].Style.Font.Bold = true; resultsSheet["A1:E1"].Style.SetBackgroundColor("#4472C4"); resultsSheet["A1:E1"].Style.Font.Color = "#FFFFFF"; // Output validation results for (int i = 0; i < results.Count; i++) { var result = results[i]; int outputRow = i + 2; resultsSheet[$"A{outputRow}"].Value = result.Row; resultsSheet[$"B{outputRow}"].Value = result.IsValid ? "Yes" : "No"; resultsSheet[$"C{outputRow}"].Value = result.PhoneNumberErrorMessage ?? ""; resultsSheet[$"D{outputRow}"].Value = result.EmailErrorMessage ?? ""; resultsSheet[$"E{outputRow}"].Value = result.DateErrorMessage ?? ""; // Highlight invalid rows if (!result.IsValid) { resultsSheet[$"A{outputRow}:E{outputRow}"].Style.SetBackgroundColor("#FFE6E6"); } } // Auto-fit columns for (int col = 0; col < 5; col++) { resultsSheet.AutoSizeColumn(col); } // Save validated workbook workBook.SaveAs(@"Spreadsheets\PeopleValidated.xlsx"); ' Create results worksheet Dim resultsSheet = workBook.CreateWorkSheet("ValidationResults") ' Add headers resultsSheet("A1").Value = "Row" resultsSheet("B1").Value = "Valid" resultsSheet("C1").Value = "Phone Error" resultsSheet("D1").Value = "Email Error" resultsSheet("E1").Value = "Date Error" ' Style headers resultsSheet("A1:E1").Style.Font.Bold = True resultsSheet("A1:E1").Style.SetBackgroundColor("#4472C4") resultsSheet("A1:E1").Style.Font.Color = "#FFFFFF" ' Output validation results For i As Integer = 0 To results.Count - 1 Dim result = results(i) Dim outputRow As Integer = i + 2 resultsSheet($"A{outputRow}").Value = result.Row resultsSheet($"B{outputRow}").Value = If(result.IsValid, "Yes", "No") resultsSheet($"C{outputRow}").Value = If(result.PhoneNumberErrorMessage, "") resultsSheet($"D{outputRow}").Value = If(result.EmailErrorMessage, "") resultsSheet($"E{outputRow}").Value = If(result.DateErrorMessage, "") ' Highlight invalid rows If Not result.IsValid Then resultsSheet($"A{outputRow}:E{outputRow}").Style.SetBackgroundColor("#FFE6E6") End If Next i ' Auto-fit columns For col As Integer = 0 To 4 resultsSheet.AutoSizeColumn(col) Next col ' Save validated workbook workBook.SaveAs("Spreadsheets\PeopleValidated.xlsx") $vbLabelText $csharpLabel Excelデータをデータベースにエクスポートするにはどうすればよいですか? Entity Frameworkを使用してIronXLを使用してスプレッドシートデータを直接データベースにエクスポートします。 この例では、国のGDPデータをSQLiteにエクスポートする方法を示しています。 using System; using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; using IronXL; // Define entity model public class Country { [Key] public Guid Id { get; set; } = Guid.NewGuid(); [Required] [MaxLength(100)] public string Name { get; set; } [Range(0, double.MaxValue)] public decimal GDP { get; set; } public DateTime ImportedDate { get; set; } = DateTime.UtcNow; } using System; using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; using IronXL; // Define entity model public class Country { [Key] public Guid Id { get; set; } = Guid.NewGuid(); [Required] [MaxLength(100)] public string Name { get; set; } [Range(0, double.MaxValue)] public decimal GDP { get; set; } public DateTime ImportedDate { get; set; } = DateTime.UtcNow; } Imports System Imports System.ComponentModel.DataAnnotations Imports Microsoft.EntityFrameworkCore Imports IronXL ' Define entity model Public Class Country <Key> Public Property Id() As Guid = Guid.NewGuid() <Required> <MaxLength(100)> Public Property Name() As String <Range(0, Double.MaxValue)> Public Property GDP() As Decimal Public Property ImportedDate() As DateTime = DateTime.UtcNow End Class $vbLabelText $csharpLabel データベース操作のためにEntity Frameworkコンテキストを構成します: public class CountryContext : DbContext { public DbSet<Country> Countries { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Configure SQLite connection optionsBuilder.UseSqlite("Data Source=CountryGDP.db"); // Enable sensitive data logging in development #if DEBUG optionsBuilder.EnableSensitiveDataLogging(); #endif } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Configure decimal precision modelBuilder.Entity<Country>() .Property(c => c.GDP) .HasPrecision(18, 2); } } public class CountryContext : DbContext { public DbSet<Country> Countries { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Configure SQLite connection optionsBuilder.UseSqlite("Data Source=CountryGDP.db"); // Enable sensitive data logging in development #if DEBUG optionsBuilder.EnableSensitiveDataLogging(); #endif } protected override void OnModelCreating(ModelBuilder modelBuilder) { // Configure decimal precision modelBuilder.Entity<Country>() .Property(c => c.GDP) .HasPrecision(18, 2); } } Public Class CountryContext Inherits DbContext Public Property Countries() As DbSet(Of Country) Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder) ' Configure SQLite connection optionsBuilder.UseSqlite("Data Source=CountryGDP.db") ' Enable sensitive data logging in development #If DEBUG Then optionsBuilder.EnableSensitiveDataLogging() #End If End Sub Protected Overrides Sub OnModelCreating(ByVal modelBuilder As ModelBuilder) ' Configure decimal precision modelBuilder.Entity(Of Country)().Property(Function(c) c.GDP).HasPrecision(18, 2) End Sub End Class $vbLabelText $csharpLabel ご注意注意: 異なるデータベースを使用するには、適切なNuGetパッケージ(例: Microsoft.EntityFrameworkCore.SqlServer for SQL Server)をインストールし、接続構成を適宜変更してください。 Excelデータをデータベースにインポートします: using System.Threading.Tasks; using IronXL; using Microsoft.EntityFrameworkCore; public async Task ImportGDPDataAsync() { try { // Load Excel file var workBook = WorkBook.Load(@"Spreadsheets\GDP.xlsx"); var workSheet = workBook.GetWorkSheet("GDPByCountry"); using (var context = new CountryContext()) { // Ensure database exists await context.Database.EnsureCreatedAsync(); // Clear existing data (optional) await context.Database.ExecuteSqlRawAsync("DELETE FROM Countries"); // Import data with progress tracking int totalRows = 213; for (int row = 2; row <= totalRows; row++) { // Read country data var countryName = workSheet[$"A{row}"].StringValue; var gdpValue = workSheet[$"B{row}"].DecimalValue; // Skip empty rows if (string.IsNullOrWhiteSpace(countryName)) continue; // Create and add entity var country = new Country { Name = countryName.Trim(), GDP = gdpValue * 1_000_000 // Convert to actual value if in millions }; await context.Countries.AddAsync(country); // Save in batches for performance if (row % 50 == 0) { await context.SaveChangesAsync(); Console.WriteLine($"Imported {row - 1} of {totalRows} countries"); } } // Save remaining records await context.SaveChangesAsync(); Console.WriteLine($"Successfully imported {await context.Countries.CountAsync()} countries"); } } catch (Exception ex) { Console.WriteLine($"Import failed: {ex.Message}"); throw; } } using System.Threading.Tasks; using IronXL; using Microsoft.EntityFrameworkCore; public async Task ImportGDPDataAsync() { try { // Load Excel file var workBook = WorkBook.Load(@"Spreadsheets\GDP.xlsx"); var workSheet = workBook.GetWorkSheet("GDPByCountry"); using (var context = new CountryContext()) { // Ensure database exists await context.Database.EnsureCreatedAsync(); // Clear existing data (optional) await context.Database.ExecuteSqlRawAsync("DELETE FROM Countries"); // Import data with progress tracking int totalRows = 213; for (int row = 2; row <= totalRows; row++) { // Read country data var countryName = workSheet[$"A{row}"].StringValue; var gdpValue = workSheet[$"B{row}"].DecimalValue; // Skip empty rows if (string.IsNullOrWhiteSpace(countryName)) continue; // Create and add entity var country = new Country { Name = countryName.Trim(), GDP = gdpValue * 1_000_000 // Convert to actual value if in millions }; await context.Countries.AddAsync(country); // Save in batches for performance if (row % 50 == 0) { await context.SaveChangesAsync(); Console.WriteLine($"Imported {row - 1} of {totalRows} countries"); } } // Save remaining records await context.SaveChangesAsync(); Console.WriteLine($"Successfully imported {await context.Countries.CountAsync()} countries"); } } catch (Exception ex) { Console.WriteLine($"Import failed: {ex.Message}"); throw; } } Imports System.Threading.Tasks Imports IronXL Imports Microsoft.EntityFrameworkCore Public Async Function ImportGDPDataAsync() As Task Try ' Load Excel file Dim workBook = WorkBook.Load("Spreadsheets\GDP.xlsx") Dim workSheet = workBook.GetWorkSheet("GDPByCountry") Using context = New CountryContext() ' Ensure database exists Await context.Database.EnsureCreatedAsync() ' Clear existing data (optional) Await context.Database.ExecuteSqlRawAsync("DELETE FROM Countries") ' Import data with progress tracking Dim totalRows As Integer = 213 Dim row As Integer = 2 Do While row <= totalRows ' Read country data Dim countryName = workSheet($"A{row}").StringValue Dim gdpValue = workSheet($"B{row}").DecimalValue ' Skip empty rows If String.IsNullOrWhiteSpace(countryName) Then row += 1 Continue Do End If ' Create and add entity Dim country As New Country With { .Name = countryName.Trim(), .GDP = gdpValue * 1_000_000 } Await context.Countries.AddAsync(country) ' Save in batches for performance If row Mod 50 = 0 Then Await context.SaveChangesAsync() Console.WriteLine($"Imported {row - 1} of {totalRows} countries") End If row += 1 Loop ' Save remaining records Await context.SaveChangesAsync() Console.WriteLine($"Successfully imported {Await context.Countries.CountAsync()} countries") End Using Catch ex As Exception Console.WriteLine($"Import failed: {ex.Message}") Throw End Try End Function $vbLabelText $csharpLabel APIデータをExcelスプレッドシートにインポートするにはどうすればよいですか? HTTPクライアントとIronXLを組み合わせてスプレッドシートをライブAPIデータで埋めます。 この例ではRestClient.Netを使用して国データを取得します。 using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; using IronXL; // Define data model matching API response public class RestCountry { public string Name { get; set; } public long Population { get; set; } public string Region { get; set; } public string NumericCode { get; set; } public List<Language> Languages { get; set; } } public class Language { public string Name { get; set; } public string NativeName { get; set; } } // Fetch and process API data public async Task ImportCountryDataAsync() { using var httpClient = new HttpClient(); try { // Call REST API var response = await httpClient.GetStringAsync("https://restcountries.com/v3.1/all"); var countries = JsonConvert.DeserializeObject<List<RestCountry>>(response); // Create new workbook var workBook = WorkBook.Create(ExcelFileFormat.XLSX); var workSheet = workBook.CreateWorkSheet("Countries"); // Add headers with styling string[] headers = { "Country", "Population", "Region", "Code", "Language 1", "Language 2", "Language 3" }; for (int col = 0; col < headers.Length; col++) { var headerCell = workSheet[0, col]; headerCell.Value = headers[col]; headerCell.Style.Font.Bold = true; headerCell.Style.SetBackgroundColor("#366092"); headerCell.Style.Font.Color = "#FFFFFF"; } // Import country data await ProcessCountryData(countries, workSheet); // Save workbook workBook.SaveAs("CountriesFromAPI.xlsx"); } catch (Exception ex) { Console.WriteLine($"API import failed: {ex.Message}"); } } using System; using System.Collections.Generic; using System.Net.Http; using System.Threading.Tasks; using Newtonsoft.Json; using IronXL; // Define data model matching API response public class RestCountry { public string Name { get; set; } public long Population { get; set; } public string Region { get; set; } public string NumericCode { get; set; } public List<Language> Languages { get; set; } } public class Language { public string Name { get; set; } public string NativeName { get; set; } } // Fetch and process API data public async Task ImportCountryDataAsync() { using var httpClient = new HttpClient(); try { // Call REST API var response = await httpClient.GetStringAsync("https://restcountries.com/v3.1/all"); var countries = JsonConvert.DeserializeObject<List<RestCountry>>(response); // Create new workbook var workBook = WorkBook.Create(ExcelFileFormat.XLSX); var workSheet = workBook.CreateWorkSheet("Countries"); // Add headers with styling string[] headers = { "Country", "Population", "Region", "Code", "Language 1", "Language 2", "Language 3" }; for (int col = 0; col < headers.Length; col++) { var headerCell = workSheet[0, col]; headerCell.Value = headers[col]; headerCell.Style.Font.Bold = true; headerCell.Style.SetBackgroundColor("#366092"); headerCell.Style.Font.Color = "#FFFFFF"; } // Import country data await ProcessCountryData(countries, workSheet); // Save workbook workBook.SaveAs("CountriesFromAPI.xlsx"); } catch (Exception ex) { Console.WriteLine($"API import failed: {ex.Message}"); } } Imports System Imports System.Collections.Generic Imports System.Net.Http Imports System.Threading.Tasks Imports Newtonsoft.Json Imports IronXL ' Define data model matching API response Public Class RestCountry Public Property Name() As String Public Property Population() As Long Public Property Region() As String Public Property NumericCode() As String Public Property Languages() As List(Of Language) End Class Public Class Language Public Property Name() As String Public Property NativeName() As String End Class ' Fetch and process API data Public Async Function ImportCountryDataAsync() As Task Dim httpClient As New HttpClient() Try ' Call REST API Dim response = Await httpClient.GetStringAsync("https://restcountries.com/v3.1/all") Dim countries = JsonConvert.DeserializeObject(Of List(Of RestCountry))(response) ' Create new workbook Dim workBook = WorkBook.Create(ExcelFileFormat.XLSX) Dim workSheet = workBook.CreateWorkSheet("Countries") ' Add headers with styling Dim headers() As String = { "Country", "Population", "Region", "Code", "Language 1", "Language 2", "Language 3" } For col As Integer = 0 To headers.Length - 1 Dim headerCell = workSheet(0, col) headerCell.Value = headers(col) headerCell.Style.Font.Bold = True headerCell.Style.SetBackgroundColor("#366092") headerCell.Style.Font.Color = "#FFFFFF" Next col ' Import country data Await ProcessCountryData(countries, workSheet) ' Save workbook workBook.SaveAs("CountriesFromAPI.xlsx") Catch ex As Exception Console.WriteLine($"API import failed: {ex.Message}") End Try End Function $vbLabelText $csharpLabel APIはこの形式でJSONデータを返します: 階層的な国情報を示すREST Countries APIからのサンプルJSON応答。 APIデータを処理してExcelに書き込みます: private async Task ProcessCountryData(List<RestCountry> countries, WorkSheet workSheet) { for (int i = 0; i < countries.Count; i++) { var country = countries[i]; int row = i + 1; // Start from row 1 (after headers) // Write basic country data workSheet[$"A{row}"].Value = country.Name; workSheet[$"B{row}"].Value = country.Population; workSheet[$"C{row}"].Value = country.Region; workSheet[$"D{row}"].Value = country.NumericCode; // Format population with thousands separator workSheet[$"B{row}"].FormatString = "#,##0"; // Add up to 3 languages for (int langIndex = 0; langIndex < Math.Min(3, country.Languages?.Count ?? 0); langIndex++) { var language = country.Languages[langIndex]; string columnLetter = ((char)('E' + langIndex)).ToString(); workSheet[$"{columnLetter}{row}"].Value = language.Name; } // Add conditional formatting for regions if (country.Region == "Europe") { workSheet[$"C{row}"].Style.SetBackgroundColor("#E6F3FF"); } else if (country.Region == "Asia") { workSheet[$"C{row}"].Style.SetBackgroundColor("#FFF2E6"); } // Show progress every 50 countries if (i % 50 == 0) { Console.WriteLine($"Processed {i} of {countries.Count} countries"); } } // Auto-size all columns for (int col = 0; col < 7; col++) { workSheet.AutoSizeColumn(col); } } private async Task ProcessCountryData(List<RestCountry> countries, WorkSheet workSheet) { for (int i = 0; i < countries.Count; i++) { var country = countries[i]; int row = i + 1; // Start from row 1 (after headers) // Write basic country data workSheet[$"A{row}"].Value = country.Name; workSheet[$"B{row}"].Value = country.Population; workSheet[$"C{row}"].Value = country.Region; workSheet[$"D{row}"].Value = country.NumericCode; // Format population with thousands separator workSheet[$"B{row}"].FormatString = "#,##0"; // Add up to 3 languages for (int langIndex = 0; langIndex < Math.Min(3, country.Languages?.Count ?? 0); langIndex++) { var language = country.Languages[langIndex]; string columnLetter = ((char)('E' + langIndex)).ToString(); workSheet[$"{columnLetter}{row}"].Value = language.Name; } // Add conditional formatting for regions if (country.Region == "Europe") { workSheet[$"C{row}"].Style.SetBackgroundColor("#E6F3FF"); } else if (country.Region == "Asia") { workSheet[$"C{row}"].Style.SetBackgroundColor("#FFF2E6"); } // Show progress every 50 countries if (i % 50 == 0) { Console.WriteLine($"Processed {i} of {countries.Count} countries"); } } // Auto-size all columns for (int col = 0; col < 7; col++) { workSheet.AutoSizeColumn(col); } } Private Async Function ProcessCountryData(ByVal countries As List(Of RestCountry), ByVal workSheet As WorkSheet) As Task For i As Integer = 0 To countries.Count - 1 Dim country = countries(i) Dim row As Integer = i + 1 ' Start from row 1 (after headers) ' Write basic country data workSheet($"A{row}").Value = country.Name workSheet($"B{row}").Value = country.Population workSheet($"C{row}").Value = country.Region workSheet($"D{row}").Value = country.NumericCode ' Format population with thousands separator workSheet($"B{row}").FormatString = "#,##0" ' Add up to 3 languages For langIndex As Integer = 0 To Math.Min(3, If(country.Languages?.Count, 0)) - 1 Dim language = country.Languages(langIndex) Dim columnLetter As String = (ChrW(AscW("E"c) + langIndex)).ToString() workSheet($"{columnLetter}{row}").Value = language.Name Next langIndex ' Add conditional formatting for regions If country.Region = "Europe" Then workSheet($"C{row}").Style.SetBackgroundColor("#E6F3FF") ElseIf country.Region = "Asia" Then workSheet($"C{row}").Style.SetBackgroundColor("#FFF2E6") End If ' Show progress every 50 countries If i Mod 50 = 0 Then Console.WriteLine($"Processed {i} of {countries.Count} countries") End If Next i ' Auto-size all columns For col As Integer = 0 To 6 workSheet.AutoSizeColumn(col) Next col End Function $vbLabelText $csharpLabel オブジェクトリファレンスとリソース 詳細なクラスドキュメントと高度な機能に関する詳細は、包括的なIronXL APIリファレンスを探索してください。 Excel操作の追加のチュートリアル: プログラムでExcelファイルを作成する Excelのフォーマットとスタイルガイド Excelの数式の操作 Excelチャート作成チュートリアル まとめ IronXL.Excelは、さまざまなフォーマットでExcelファイルを読み取りおよび操作するための包括的な.NETライブラリです。 それはMicrosoft ExcelまたはInteropのインストールを必要とせずに独立して動作します。 クラウドベースのスプレッドシート操作には、IronXLのローカルファイル機能を補完するためにGoogle Sheets APIクライアントライブラリも探索することができます。 C#プロジェクトでExcel自動化を実装する準備はできましたか? Download IronXL or explore ライセンスオプションを探索してください。 よくある質問 Microsoft Officeを使用せずにC#でExcelファイルを読む方法は? Microsoft Officeを必要とせずにC#でExcelファイルを読むにはIronXLを使用できます。IronXLはWorkBook.Load()のようなメソッドを提供し、Excelファイルを開きデータを直感的な構文でアクセスおよび操作できます。 C#でどの形式のExcelファイルを読むことができますか? IronXLを使用すると、C#でXLSおよびXLSXファイル形式の両方を読むことができます。ライブラリはWorkBook.Load()メソッドを使用してファイル形式を自動的に検出し、対応する処理を行います。 C#でExcelデータをどのように検証しますか? IronXLを使用すると、C#でプログラム的にExcelデータを検証できます。セルを反復し、メール情報の正規表現やカスタム検証関数などのロジックを適用することができます。 CreateWorkSheet()を使用してレポートを生成できます。 C#を使用してExcelからSQLデータベースにデータをエクスポートするにはどうすればよいですか? ExcelからSQLデータベースにデータをエクスポートするには、IronXLを使用してWorkBook.Load()およびGetWorkSheet()メソッドでExcelデータを読み取り、セルを反復してデータをEntity Frameworkを使用してデータベースへ転送します。 Excel機能をASP.NET Coreアプリケーションと統合することは可能ですか? はい、IronXLはASP.NET Coreアプリケーションとの統合をサポートしています。WorkBookおよびWorkSheetクラスをコントローラで使用してExcelファイルのアップロード、レポートの生成などを行うことができます。 C#を使用してExcelスプレッドシートに数式を追加することは可能ですか? IronXLを使用すると、プログラムでExcelスプレッドシートに数式を追加できます。Formulaプロパティを使用して数式を設定し(例:cell.Formula = "=SUM(A1:A10)")、workBook.EvaluateAll()を使用して結果を算出します。 REST APIからのデータでExcelファイルをどのように埋めることができますか? REST APIからのデータでExcelファイルを埋めるには、IronXLをHTTPクライアントと共に使用し、APIデータをフェッチした後、sheet["A1"].Valueのようなメソッドを使用してExcelに書き込みます。IronXLはExcelのフォーマットと構造を管理します。 プロダクション環境でExcelライブラリを使用する際のライセンスオプションは何ですか? IronXLは開発目的での無料トライアルを提供し、プロダクションライセンスは$749から開始します。これらのライセンスには専任の技術サポートが含まれ、追加のOfficeライセンスを必要とせずに様々な環境でのデプロイを可能にします。 Jacob Mellor 今すぐエンジニアリングチームとチャット 最高技術責任者(CTO) Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。 準備はいいですか? Nuget ダウンロード 1,686,155 | バージョン: 2025.11 ただ今リリースされました 試用ライセンスキーがメールで送信されました。 総ダウンロード数: 1,686,155 ライセンスを見る