IronXLを使用してC#でExcelレポートを作成する方法
C#でIronXLを使ってExcelレポートを作成する
C#でExcelレポートを作成することは、現代のビジネスや.NETアプリケーションにおいて基本的な要件です。 財務諸表、販売分析、または在庫ダッシュボードを生成するかどうかにかかわらず、ExcelファイルやExcelスプレッドシートの作成プロセスを自動化することで、手動の労力を数時間節約し、エラーを減らすことができます。
IronXL は、Microsoft Office、MS Excel、または従来のInteropの依存関係を必要とせずに、C#でExcelレポートを作成するための強力で直感的なソリューションを開発者に提供します。 OLE AutomationやExcelアプリケーションに依存するアプローチとは異なり、IronXLはExcelワークブックとExcelデータをコード内で直接生成することを可能にし、必要な場合はわずか1行で行えます。 このガイドでは、IronXLを使ってExcelレポートを作成する方法を、あなた自身のプロジェクトに簡単に実装できるように、わかりやすいサンプルコード付きで説明します!
IronXLとは何か、そしてExcelファイル生成になぜ利用するのか?
IronXLは.NET Excelライブラリで、開発者はC#やVisual Basicのソースコードから直接Excelスプレッドシートを作成、読み込み、Excelファイルを操作することができます。 Excelアプリケーション全体やOpen XML SDKによるリバースエンジニアリングに依存するMicrosoft Office Interopアプローチとは異なり、IronXLはWindows、Linux、macOS、クラウド環境でExcelのインストールやサードパーティの依存関係を必要とせずに動作します。 これにより、サーバーサイドのExcelレポート、ワークフローの自動化、.NET Coreまたは.NET Frameworkで構築されたWebアプリケーションに理想的です。
手動のExcelプロセス、古いライブラリ、またはさまざまなXML名前空間をナビゲートする必要があるOpen XML生産性ツールワークフローから移行するチームには、IronXLは直感的なAPIを提供します。 それは、レガシーXLSファイルと、XMLファイルやさまざまなフォルダーを含む本質的にZIPファイルである現代のXLSXファイルの両方をサポートします。 新しいExcelワークブックを生成したい場合でも、複数のワークシートを操作する場合でも、外部コードからExcelデータを読み込む場合でも、IronXLは、基礎の形式を理解する必要なしにプロセスを大幅に簡素化します。
Excelファイルを作成するためのIronXLの基本
Excelレポートを作成するためのIronXLのセットアップは数分で完了します。 Visual StudioのNuGetパッケージマネージャーを介してライブラリをインストールします:
Install-Package IronXL.Excel
今日IronXLをダウンロードして、Excelレポート生成の自動化を始めましょう。
インストールが完了すると、最初のExcelレポートを作成するにはわずか数行のコードのみが必要です:
using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");using IronXL;
// Create a new Excel workbook for reports
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a worksheet for the report
WorkSheet reportSheet = workBook.CreateWorkSheet("Monthly Report");
// Add a title
reportSheet["A1"].Value = "Sales Report - January 2024";
reportSheet["A1"].Style.Font.Bold = true;
// Save the Excel report
workBook.SaveAs("MonthlyReport.xlsx");IRON VB CONVERTER ERROR developers@ironsoftware.comこのコードは、整形式のタイトルを持つ新しいExcelレポートファイルを作成します。 使い慣れたセル参照構文(reportSheet["A1"])により、開発者はExcelを手動で操作するのと同じように、データを表示する場所を正確に指定することが簡単になります。
出力
複数のソースからデータを読み込む
現実のExcelレポートでは静的なデータを使用することは稀です。 IronXLは、さまざまなフォーマット、API、新しいDataTableソース、またはいくつかの異なるXMLファイルからExcelデータを統合することに優れています。 これにより、サーバーサイドまたはWebアプリケーションでのダイナミックなC# Excelレポート生成に最適です。
データベース統合
データベース駆動型のExcelレポートでは、IronXLはADO.NET DataTablesとシームレスに連携します:
using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
sheet[$"A{row}"].Value = dataRow["ProductName"];
sheet[$"B{row}"].Value = dataRow["Quantity"];
sheet[$"C{row}"].Value = dataRow["Revenue"];
row++;
}using System.Data;
using System.Data.SqlClient;
// Fetch data from database
string connectionString = "Server=localhost;Database=Sales;Integrated Security=true;";
DataTable salesData = new DataTable();
using (SqlConnection conn = new SqlConnection(connectionString))
{
SqlDataAdapter adapter = new SqlDataAdapter(
"SELECT ProductName, Quantity, Revenue FROM MonthlySales", conn);
adapter.Fill(salesData);
}
// Create Excel report from DataTable
WorkBook workBook = WorkBook.Create();
WorkSheet sheet = workBook.CreateWorkSheet("Sales Data");
// Add headers
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Revenue";
// Populate data
int row = 2;
foreach (DataRow dataRow in salesData.Rows)
{
sheet[$"A{row}"].Value = dataRow["ProductName"];
sheet[$"B{row}"].Value = dataRow["Quantity"];
sheet[$"C{row}"].Value = dataRow["Revenue"];
row++;
}IRON VB CONVERTER ERROR developers@ironsoftware.comこのアプローチにより、SQL Serverから販売データを直接Excelレポートに読み込みます。 DataTable統合により、既存のデータアクセスコードを変更せずに使用できます。 より複雑なシナリオについては、SQLデータベースからExcelを読み込む方法を確認してください。
コレクションの作業
インメモリデータ、APIレスポンスからのExcelデータ、または新しいDataTableの場合、コレクションはMicrosoft Excelやサードパーティに依存することなく、Excelワークシートに簡単に入力できます:
var salesRecords = new List<SalesRecord>
{
new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
sheet[$"A{i+2}"].Value = salesRecords[i].Product;
sheet[$"B{i+2}"].Value = salesRecords[i].Units;
sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}var salesRecords = new List<SalesRecord>
{
new SalesRecord { Product = "Widget A", Units = 150, Price = 29.99m },
new SalesRecord { Product = "Widget B", Units = 82, Price = 49.99m }
};
// Convert collection to Excel
for (int i = 0; i < salesRecords.Count; i++)
{
sheet[$"A{i+2}"].Value = salesRecords[i].Product;
sheet[$"B{i+2}"].Value = salesRecords[i].Units;
sheet[$"C{i+2}"].Value = salesRecords[i].Price;
}IRON VB CONVERTER ERROR developers@ironsoftware.comこの方法により、.NETアプリケーション内でのC#によるExcelレポートの作成を可能にし、複数のワークシートまたはXLSXファイルを生成するためのプロセスが手動のOLE AutomationやXMLファイルの逆エンジニアリングよりもはるかに簡単になります。
出力
How to Create Excel Reports in C# Using IronXL: Image 2 - Sample worksheet from data outputHow to Create Excel Reports in C# Using IronXL: Image 2 - Sample worksheet from data output
プロフェッショナルExcelレポートのフォーマット
生データだけではプロフェッショナルなレポートを作成できません。 IronXLは洗練されたビジネス向けExcelファイルを作成するためのセルフォーマットオプションを豊富に提供します。 以下のコードは、IronXLを使用してこの操作がどれほど簡単かを示しています:
using IronXL;
using IronXL.Styles;
class Program
{
static void Main(string[] args)
{
// Create a new workbook
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a new worksheet
var sheet = workbook.CreateWorkSheet("MySheet");
// Add header values
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Price";
// Add sample data rows
sheet["A2"].Value = "Laptop";
sheet["B2"].Value = 5;
sheet["C2"].Value = 1299.99;
sheet["A3"].Value = "Headphones";
sheet["B3"].Value = 15;
sheet["C3"].Value = 199.50;
sheet["A4"].Value = "Keyboard";
sheet["B4"].Value = 10;
sheet["C4"].Value = 89.99;
sheet["A5"].Value = "Monitor";
sheet["B5"].Value = 7;
sheet["C5"].Value = 249.00;
// Header formatting
var headerRange = sheet["A1:C1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.BottomBorder.Type = BorderType.Thick;
// Number formatting for currency
sheet["C:C"].FormatString = "$#,##0.00";
// Alternating row colors for readability
for (int row = 2; row <= 10; row++)
{
if (row % 2 == 0)
{
sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
}
}
// Column width adjustment
sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
sheet.Columns[2].Width = 12 * 256;
// Add borders around data
var dataRange = sheet["A1:C10"];
dataRange.Style.TopBorder.Type = BorderType.Thin;
dataRange.Style.RightBorder.Type = BorderType.Thin;
dataRange.Style.BottomBorder.Type = BorderType.Thin;
dataRange.Style.LeftBorder.Type = BorderType.Thin;
// Save the workbook to a file
workbook.SaveAs("MyWorkbook.xlsx");
}
}using IronXL;
using IronXL.Styles;
class Program
{
static void Main(string[] args)
{
// Create a new workbook
var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
// Add a new worksheet
var sheet = workbook.CreateWorkSheet("MySheet");
// Add header values
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Quantity";
sheet["C1"].Value = "Price";
// Add sample data rows
sheet["A2"].Value = "Laptop";
sheet["B2"].Value = 5;
sheet["C2"].Value = 1299.99;
sheet["A3"].Value = "Headphones";
sheet["B3"].Value = 15;
sheet["C3"].Value = 199.50;
sheet["A4"].Value = "Keyboard";
sheet["B4"].Value = 10;
sheet["C4"].Value = 89.99;
sheet["A5"].Value = "Monitor";
sheet["B5"].Value = 7;
sheet["C5"].Value = 249.00;
// Header formatting
var headerRange = sheet["A1:C1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.SetBackgroundColor("#4472C4");
headerRange.Style.Font.Color = "#FFFFFF";
headerRange.Style.BottomBorder.Type = BorderType.Thick;
// Number formatting for currency
sheet["C:C"].FormatString = "$#,##0.00";
// Alternating row colors for readability
for (int row = 2; row <= 10; row++)
{
if (row % 2 == 0)
{
sheet[$"A{row}:C{row}"].Style.SetBackgroundColor("#F2F2F2");
}
}
// Column width adjustment
sheet.Columns[0].Width = 15 * 256; // Width in 1/256th of character width
sheet.Columns[2].Width = 12 * 256;
// Add borders around data
var dataRange = sheet["A1:C10"];
dataRange.Style.TopBorder.Type = BorderType.Thin;
dataRange.Style.RightBorder.Type = BorderType.Thin;
dataRange.Style.BottomBorder.Type = BorderType.Thin;
dataRange.Style.LeftBorder.Type = BorderType.Thin;
// Save the workbook to a file
workbook.SaveAs("MyWorkbook.xlsx");
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comこれらのフォーマットオプションにより、基本データがプロフェッショナルなレポートに変わります。 スタイルAPIは、フォントや色からボーダーと配置までをカバーし、Excelレポートの外観を完全に制御できます。 高度なフォーマットニーズのために、条件付きフォーマットを探索して重要なデータを自動的にハイライトすることができます。
動的なExcelレポート計算のための数式の使用
Excelの力はその数式にありますが、IronXLはExcel式の作成を完全にサポートしています:
// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";// Add formula for row totals
sheet["D1"].Value = "Total";
sheet["D2"].Formula = "=B2*C2";
// Copy formula down the column
for (int row = 3; row <= 10; row++)
{
sheet[$"D{row}"].Formula = $"=B{row}*C{row}";
}
// Add summary formulas
sheet["A12"].Value = "Summary";
sheet["B12"].Formula = "=SUM(B2:B10)";
sheet["C12"].Formula = "=AVERAGE(C2:C10)";
sheet["D12"].Formula = "=SUM(D2:D10)";IRON VB CONVERTER ERROR developers@ironsoftware.com数式サポートには、SUM、AVERAGE、IF、VLOOKUPなどのExcelの標準関数がすべて含まれています。 IronXLは数式依存関係と計算順序を自動で扱い、複雑な計算を含むExcelレポートの生成を簡素化します。 IronXLの数学関数についてさらに学びましょう。
C#でIronXLを使用してExcelレポートを作成する方法: 画像4 - 数式による出力例How to Create Excel Reports in C# Using IronXL: Image 4 - Example output with formulas.
テンプレートに基づくレポート
繰り返しのExcelレポートや標準化されたワークブックのために、IronXLはテンプレートに基づく生成をサポートしており、開発者がOpen XML SDK、relsファイル、またはさまざまなフォルダーを扱うことなくテンプレートからExcelファイルを作成することを可能にします:
// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
if (cell.Text.Contains("{{CompanyName}}"))
cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
if (cell.Text.Contains("{{ReportDate}}"))
cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");// Load existing template
Workbook templateBook = Workbook.Load("ReportTemplate.xlsx");
Worksheet templateSheet = templateBook.DefaultWorksheet;
// Find and replace template markers
foreach (var cell in templateSheet["A1:Z100"])
{
if (cell.Text.Contains("{{CompanyName}}"))
cell.Value = cell.Text.Replace("{{CompanyName}}", "Acme Corp");
if (cell.Text.Contains("{{ReportDate}}"))
cell.Value = cell.Text.Replace("{{ReportDate}}", DateTime.Now.ToString("MMMM yyyy"));
}
// Save as new report
templateBook.SaveAs($"Report_{DateTime.Now:yyyyMMdd}.xlsx");IRON VB CONVERTER ERROR developers@ironsoftware.comこのアプローチは、動的コンテンツを更新しながら一貫したフォーマットを維持し、月次レポートや標準化された文書に最適です。
C#でIronXLを使用してExcelレポートを作成する方法: 画像5 - レポート・テンプレートとテンプレートを使用して作成したExcelファイル</a
ベストプラクティスとトラブルシューティング
Excelレポート生成を実装する際には、次のヒントに注意してください:
- 大きなファイルでのメモリ使用:データセット全体を読み込むのではなく、データをチャンク単位で処理する(大きな Excel ファイルに対する Microsoft の推奨事項)。
- 日付書式の問題:Excel 互換の日付には
DateTime.ToOADate()を使用してください (Excel 日付システムの説明)。 - ファイルロックのエラー:
usingステートメントまたは新しいMemoryStreamアプローチを使用して、常に Excel オブジェクトを適切に破棄してください。 - スタイルの欠落:いくつかのスタイルプロパティは、最初に背景色を設定する必要があります
結論
IronXLは、Excelレポート生成を面倒な手動プロセスから自動化された信頼性の高いワークフローに変えます。 直感的なAPI、クロスプラットフォームサポート、包括的な機能セットにより、開発者は数時間ではなく数分でプロフェッショナルなExcelレポートを作成できます。 容易なデータ統合、強力なフォーマットオプション、および数式サポートの組み合わせは、Excelレポートを扱うすべてのC#開発者にとってIronXLを必須のツールにします。 興味のある開発者のために、IronXLは無料トライアルと企業や個人向けのライセンスオプションを提供しています。
よくある質問
IronXLはC#で何に使われていますか?
IronXLは、開発者が簡単にExcelファイルを作成、編集、読み取ることを可能にするC#用の強力なライブラリです。高度な書式設定、数式、データ統合により、ProfessionalなExcelレポートの作成をサポートします。
IronXLを使ってExcelレポートを作成するにはどうすればいいですか?
IronXLを使用してExcelレポートを作成するには、その堅牢なAPIを利用して、データの追加、セルの書式設定、数式の適用、データベースとの統合をすべてC#環境で行うことができます。
IronXLはエクセルのレポート作成にどのような機能を提供していますか?
IronXLはセルの書式設定、数式の適用、データ検証、チャート作成、包括的なExcelレポート作成のためのシームレスなデータベース統合などの機能を提供します。
IronXLはデータベース統合をサポートしていますか?
IronXLはデータベースとの統合をサポートしており、データベースから直接データを取得し、Excelレポートに取り込むことができます。
IronXLは複雑なExcelの数式を扱えますか?
IronXLは幅広いExcelの数式を扱うことができ、開発者はExcelのレポート内で複雑な計算を実行し、データ処理を自動化することができます。
IronXLを使ってExcelのセルをフォーマットすることはできますか?
IronXLは幅広い書式設定機能を備えており、フォントのスタイル、色、枠線など、セルの外観をカスタマイズして、視覚的に魅力的なExcelレポートを作成することができます。
IronXLを使ってExcelでチャートを作成できますか?
IronXLはExcelスプレッドシート内で様々なチャートを作成することができ、データを視覚的に表現し、レポートの解釈性を高めることができます。
IronXLはエクセルのレポート作成プロセスをどのように簡素化しますか?
IronXLはC#プログラミング環境において、データの入力、フォーマット、計算、出力を効率化する包括的な機能を提供することにより、Excelのレポート作成プロセスを簡素化します。
IronXLは大量のデータセットを効率的に処理できますか?
IronXLはパフォーマンスを最適化し、大規模なデータセットを効率的に処理できるため、速度や信頼性を犠牲にすることなく複雑なレポートを作成するのに適しています。
IronXLはどのようなプログラミング言語に対応していますか?
IronXLは特にC#用に設計されており、.NETフレームワークで作業する開発者にシームレスな統合と機能を提供します。






