フッターコンテンツにスキップ
IRONXLの使用

IronXLを使用してC#で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は、開発者がExcelを作成し、Excelスプレッドシートを読み取り、C#やVisual Basicのソースコードから直接Excelファイルを操作できる.NETのExcelライブラリです。 Microsoft Office Interopアプローチが完全なExcelアプリケーションに依存したり、Open XML SDKを通じて逆エンジニアリングしたりするのとは異なり、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
$vbLabelText   $csharpLabel

このコードは、整形式のタイトルを持つ新しいExcelレポートファイルを作成します。 親しみやすいセル参照構文(reportSheet["A1")によって、開発者がデータの表示場所をExcelで手動で作業するのと同様に簡単に指定できるようになります。

出力

IronXLを使用したC#でのExcelレポート作成方法:図1 - Excel出力の例

複数のソースからデータを読み込む

現実のExcelレポートでは静的なデータを使用することは稀です。 IronXLは、さまざまなフォーマット、API、新しいDataTableソース、またはいくつかの異なるXMLファイルからExcelデータを統合することに優れています。 これにより、サーバーサイドまたはWebアプリケーションでのダイナミックなC# Excelレポート生成に最適です。

データベース統合

For database-driven Excel reports, IronXL seamlessly works with 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
$vbLabelText   $csharpLabel

このアプローチにより、SQL Serverから販売データを直接Excelレポートに読み込みます。 DataTable統合により、既存のデータアクセスコードを変更せずに使用できます。 より複雑なシナリオについては、SQLデータベースからExcelを読み込む方法を確認してください。

コレクションの作業

メモリ上のデータ、API応答からのExcelデータ、または新しいDataTableでは、コレクションでExcelワークシートを簡単にMicrosoft 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
$vbLabelText   $csharpLabel

この方法により、.NETアプリケーション内でのC#によるExcelレポートの作成を可能にし、複数のワークシートまたはXLSXファイルを生成するためのプロセスが手動のOLE AutomationやXMLファイルの逆エンジニアリングよりもはるかに簡単になります。

出力

IronXLを使用したC#でのExcelレポートの作成方法:図2 - データ出力のサンプルワークシート

プロフェッショナル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
$vbLabelText   $csharpLabel

これらのフォーマットオプションにより、基本データがプロフェッショナルなレポートに変わります。 The style API covers everything from fonts and colors to borders and alignment, giving complete control over the Excel report appearance. 高度なフォーマットニーズのために、条件付きフォーマットを探索して重要なデータを自動的にハイライトすることができます。

IronXLを使用したC#でのExcelレポート作成方法:図3 - フォーマットされた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
$vbLabelText   $csharpLabel

数式サポートにはSUM、AVERAGE、IF、VLOOKUPなどのすべての標準的なExcel関数が含まれます。 IronXLは数式依存関係と計算順序を自動で扱い、複雑な計算を含むExcelレポートの生成を簡素化します。 IronXLの数学関数についてさらに学びましょう。

IronXLを使用したC#でのExcelレポート作成方法:図4 - 数式を使った出力例

テンプレートに基づくレポート

繰り返しの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
$vbLabelText   $csharpLabel

このアプローチは、動的コンテンツを更新しながら一貫したフォーマットを維持し、月次レポートや標準化された文書に最適です。

IronXLを使用したC#でのExcelレポート作成方法:図5 - テンプレートを使用して作成された報告書テンプレートとExcelファイル

ベストプラクティスとトラブルシューティング

Excelレポート生成を実装する際には、次のヒントに注意してください:

  • 大きなファイルのメモリ使用量:データをチャンクに分けて処理し、全データセットをロードしないでください(大きなExcelファイルに関するMicrosoftの推奨事項
  • 日付フォーマットの問題:Excel互換の日付にはDateTime.ToOADate()を使用してください(Excelの日付システムの説明
  • ファイルのロックエラー:usingステートメントまたは新しいMemoryStreamアプローチを使用してExcelオブジェクトを常に適切に破棄してください。 スタイルの欠落:背景色を最初に設定する必要があります

結論

IronXLは、Excelレポート生成を面倒な手動プロセスから自動化された信頼性の高いワークフローに変えます。 直感的なAPI、クロスプラットフォームサポート、包括的な機能セットにより、開発者は数時間ではなく数分でプロフェッショナルなExcelレポートを作成できます。 容易なデータ統合、強力なフォーマットオプション、および数式サポートの組み合わせは、Excelレポートを扱うすべてのC#開発者にとってIronXLを必須のツールにします。 For developers who are interested, IronXL offers a free trial and further licensing options for companies and individuals.

今IronXLを始めましょう。
green arrow pointer

よくある質問

C#でExcelレポートを作成するにはどうすればよいですか?

IronXLライブラリを使用することで、C#でExcelレポートを作成できます。これにより、フォーマット、数式、データベース統合などの機能を備えたExcelファイルの生成プロセスが簡素化されます。

Excelレポートの生成にIronXLを使用することの利点は何ですか?

IronXLはExcelレポート生成を自動化する効率的な方法を提供し、手作業の手間を削減し、エラーを最小限に抑えます。高度なフォーマット、数式計算、データベースとのシームレスな統合など、さまざまな機能をサポートしています。

IronXLを使用してExcelレポートを作成する際にデータベースを統合することは可能ですか?

はい、IronXLはデータベースとの容易な統合を可能にし、データベースからExcelレポートにデータを直接取り込むことができます。

IronXLを使用してExcelレポートにカスタムフォーマットを適用できますか?

絶対に、IronXLはカスタムフォーマットをサポートしており、プロフェッショナルな基準に合致するフォント、色、セルスタイルでExcelレポートをスタイリングできます。

IronXLはExcelレポートでの数式計算をサポートしていますか?

はい、IronXLはExcelレポート内での数式の使用をサポートしており、生成したExcelファイル内での計算およびデータ分析を可能にします。

.NETアプリケーションでのExcelレポート生成を自動化する理由は何ですか?

.NETアプリケーションでのExcelレポート生成を自動化することで、時間を節約し、人為的なエラーを減らし、手動によるレポート作成に関わる繰り返し作業を排除して生産性を向上させます。

IronXLはExcelレポート作成時に大規模なデータセットを処理できますか?

IronXLは、大規模なデータセットを効率的に処理するように設計されており、多量のデータを処理する必要があるExcelレポートの生成に最適です。

IronXLを使用してどのような種類のExcelレポートを作成できるのですか?

IronXLでは、財務諸表、販売分析、在庫ダッシュボードなど、特定のビジネスニーズに合わせたさまざまなタイプのExcelレポートを作成できます。

IronXLは、Excelレポート作成における手作業の削減にどのように役立ちますか?

IronXLは、自動的にExcelファイルを生成することでレポート作成プロセスを自動化し、フォーマット、データ入力、計算に関わる手作業を大幅に削減します。

IronXLはプロフェッショナルなExcelレポートの作成に適していますか?

はい、IronXLはプロフェッショナルなExcelレポートの作成に適しており、レポートがよくフォーマットされ、正確でビジネス使用に準備できた状態にするために、さまざまな機能を提供します。

Curtis Chau
テクニカルライター

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

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。