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

IronXLを使ってC#でSQLデータをExcelにエクスポートする方法

SQL ServerからMicrosoft Excelへのデータエクスポートは、レポートシステム、データ分析ツール、ビジネスアプリケーションを構築する.NET開発者にとって一般的な要件です。 このチュートリアルでは、IronXLを使用してC#でSQLデータをExcelにエクスポートする方法を示します。

無料トライアルを開始して、以下のコード例に従ってください。

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

SQLサーバーのデータベースからデータをエクスポートする最良の方法は何ですか?

SQL ServerからExcelファイルにデータをエクスポートする最も効率的な方法は、次の3つのステップです。データベース接続を確立し、DataTableにデータを取得し、IronXLを使用してExcelワークシートにデータを書き込みます。 Microsoft Interopソリューションとは異なり、IronXL.Excelは独立して動作し、大規模なデータセットを優れたパフォーマンスで処理します。

どのように SQL Server に接続し、データを取得しますか?

SQL データをエクスポートする前に、接続を確立し、DataTableを埋める SQL クエリを実行する必要があります。 接続文字列には、データへのアクセスに必要なSQL Serverデータベースの認証情報とサーバー情報が含まれています。

Visual Studioプロジェクトで以下の名前空間をインポートする必要があります:

using IronXL;
using System.Data;
using System.Data.SqlClient;
// Define connection string for SQL Server
string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
// SQL query to retrieve data from SQL Server table
string sql = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Use SqlDataAdapter to fill DataTable with query results
    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
    DataTable dt = new DataTable();
    adapter.Fill(dt);
    // Create new workbook and worksheet
    WorkBook workBook = WorkBook.Create();
    WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData");
    // Export DataTable to Excel worksheet with column names
    int rowIndex = 1;
    // Write column headers from DataTable
    for (int j = 0; j < dt.Columns.Count; j++)
    {
        workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName);
    }
    // Fill worksheet with data values
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            string cellValue = dt.Rows[i][j].ToString();
            workSheet.SetCellValue(rowIndex, j, cellValue);
        }
        rowIndex++;
    }
    // Save Excel file in xlsx format
    workBook.SaveAs("CustomerExport.xlsx");
}
using IronXL;
using System.Data;
using System.Data.SqlClient;
// Define connection string for SQL Server
string connectionString = @"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=True";
// SQL query to retrieve data from SQL Server table
string sql = "SELECT * FROM Customers";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Use SqlDataAdapter to fill DataTable with query results
    SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
    DataTable dt = new DataTable();
    adapter.Fill(dt);
    // Create new workbook and worksheet
    WorkBook workBook = WorkBook.Create();
    WorkSheet workSheet = workBook.CreateWorkSheet("CustomerData");
    // Export DataTable to Excel worksheet with column names
    int rowIndex = 1;
    // Write column headers from DataTable
    for (int j = 0; j < dt.Columns.Count; j++)
    {
        workSheet.SetCellValue(0, j, dt.Columns[j].ColumnName);
    }
    // Fill worksheet with data values
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        for (int j = 0; j < dt.Columns.Count; j++)
        {
            string cellValue = dt.Rows[i][j].ToString();
            workSheet.SetCellValue(rowIndex, j, cellValue);
        }
        rowIndex++;
    }
    // Save Excel file in xlsx format
    workBook.SaveAs("CustomerExport.xlsx");
}
$vbLabelText   $csharpLabel

出力

How to Export SQL Data to Excel Using C# with IronXL: Image 1 - Generated Excel file.

このコードは、SQL Serverのテーブル構造から適切な形式の列ヘッダーを持つExcelファイルを作成します。 DataTable dtは、クエリ結果を格納し、Excelシートの各セルに体系的に書き込まれます。 次のコードは、ワークシートのセルに値を入力するaddメソッド・パターンを示しています。 IronXLはMicrosoft Officeアプリケーションとの互換性を最大限に高めるため、xlsとxlsxの両フォーマットをサポートしています。

どのようにASP.NETエクスポートボタンを使用してデータをエクスポートできますか?

Webアプリケーションの場合、通常、ユーザーがエクスポートボタンをクリックすると、エクスポートが開始されます。 次のコードは、ボタンをクリックしたイベントを処理し、Response.AddHeaderを使用してファイルのダウンロードを開始する方法を示しています。

using IronXL;
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;
public partial class ExportPage : Page
{
    private void ExportButton_Click(object sender, EventArgs e)
    {
        string connectionString = @"Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Execute SQL query to get data from SQL server
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);
                // Create Excel workbook from DataSet - each table becomes a sheet
                WorkBook workBook = WorkBook.Create();
                WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
                // Convert to byte array for download
                byte[] fileBytes = workBook.ToByteArray();
                string filename = "OrdersExport.xlsx";
                // Set response headers for file download
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;filename=" + filename);
                Response.BinaryWrite(fileBytes);
                Response.End();
            }
        }
        catch (Exception ex)
        {
            // Handle any errors during export
            Response.Write("Export error: " + ex.Message);
        }
    }
}
using IronXL;
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Web.UI;
public partial class ExportPage : Page
{
    private void ExportButton_Click(object sender, EventArgs e)
    {
        string connectionString = @"Data Source=localhost;Initial Catalog=Sales;Integrated Security=True";
        try
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                // Execute SQL query to get data from SQL server
                SqlDataAdapter adapter = new SqlDataAdapter("SELECT * FROM Orders", connection);
                DataSet dataSet = new DataSet();
                adapter.Fill(dataSet);
                // Create Excel workbook from DataSet - each table becomes a sheet
                WorkBook workBook = WorkBook.Create();
                WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
                // Convert to byte array for download
                byte[] fileBytes = workBook.ToByteArray();
                string filename = "OrdersExport.xlsx";
                // Set response headers for file download
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment;filename=" + filename);
                Response.BinaryWrite(fileBytes);
                Response.End();
            }
        }
        catch (Exception ex)
        {
            // Handle any errors during export
            Response.Write("Export error: " + ex.Message);
        }
    }
}
$vbLabelText   $csharpLabel

エクスポート ボタンの例

How to Export SQL Data to Excel Using C# with IronXL: Image 2 - Example export button ui.

出力

How to Export SQL Data to Excel Using C# with IronXL: Image 3 - Generated file.

object senderEventArgs eパラメータは、ASP.NETイベントハンドラの標準です。 Microsoft Interopがobject misValueを必要とするのとは異なり、IronXLはよりクリーンなAPIを使用しています。 ユーザがエクスポートボタンをクリックすると、このプライベートボイドメソッドがデータベースクエリを実行し、Excelドキュメントを作成し、ブラウザを介してファイルのダウンロードをトリガします。

どのようにデータをインポートし、列ヘッダー付きの Excel ファイルを作成しますか?

IronXLはExcelファイルの作成データのインポートを効率的に行う複数の方法を提供します。 LoadWorkSheetsFromDataSet メソッドは DataTable コレクションを受け入れ、Excel ワークシートのヘッダーとして列名を自動的に保持します。 このアプローチは、System.DataオブジェクトとMicrosoft SQL Serverでシームレスに動作します。

using IronXL;
using System.Data;
using System.Data.SqlClient;
// Connection to SQL database
string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Query multiple tables from database
    SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection);
    SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection);
    DataSet dataSet = new DataSet();
    productsAdapter.Fill(dataSet, "Products");
    categoriesAdapter.Fill(dataSet, "Categories");
    // Create new workbook and load all tables
    WorkBook workBook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
    // Save as xlsx file
    workBook.SaveAs("InventoryReport.xlsx");
}
using IronXL;
using System.Data;
using System.Data.SqlClient;
// Connection to SQL database
string connectionString = @"Data Source=.;Initial Catalog=Inventory;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Query multiple tables from database
    SqlDataAdapter productsAdapter = new SqlDataAdapter("SELECT * FROM Products", connection);
    SqlDataAdapter categoriesAdapter = new SqlDataAdapter("SELECT * FROM Categories", connection);
    DataSet dataSet = new DataSet();
    productsAdapter.Fill(dataSet, "Products");
    categoriesAdapter.Fill(dataSet, "Categories");
    // Create new workbook and load all tables
    WorkBook workBook = WorkBook.Create();
    WorkBook.LoadWorkSheetsFromDataSet(dataSet, workBook);
    // Save as xlsx file
    workBook.SaveAs("InventoryReport.xlsx");
}
$vbLabelText   $csharpLabel

出力

How to Export SQL Data to Excel Using C# with IronXL: Image 4 - Generated file with column headersHow to Export SQL Data to Excel Using C# with IronXL: Image 4 - Generated file with column headers.

このアプローチでは、複数のSQL Serverテーブルを効率的に処理し、1つのワークブック内に個別のワークシート・タブを作成します。 ストアドプロシージャを使用するアプリケーションでは、CommandType.StoredProcedureを使用して、インラインSQLクエリをプロシージャ呼び出しに置き換えるだけです。

HTMLマークアップを使用したWebアプリケーションについてはどうですか?

HTMLマークアップがボタンやデータグリッドで構成されているASP.NETアプリケーションでは、IronXLはシームレスに統合されます。 あなたのページのHTMLマークアップは標準的なウェブコントロールで構成され、サーバーサイドのエクスポート操作をトリガーし、IronXLはMicrosoft Officeに依存することなくすべてのExcel生成を処理します。

DataSetおよびDataTableオブジェクトのエクスポートに関する詳細なガイダンスについては、IronXLのドキュメントをご覧ください。

結論

C#を使用してSQLデータをExcelにエクスポートするのは、IronXLを使えば簡単です。 このライブラリは、DataTableDataSet、およびデータベースの直接統合のための堅牢なサポートを提供しながら、複雑なInterop依存関係を排除します。 コンソールアプリケーションやファイルダウンロード機能を持つウェブベースのレポートシステムを構築する場合でも、IronXLは信頼性の高いExcelファイル生成を提供します。

Purchase a license for production deployment, or continue exploring with a free trial to test the full capabilities of this Excel library in your .NET projects.

よくある質問

C#を使用してSQLデータをExcelにエクスポートするにはどうすればよいですか?

強力なExcelライブラリであるIronXLを活用することで、C#を使ってSQLデータをExcelにエクスポートすることができます。これはプロセスを簡素化し、Microsoft Officeのインストールを必要としません。

IronXLを使ってSQLデータをエクスポートするための前提条件は何ですか?

SQLデータのエクスポートにIronXLを使用するには、C#の基本的な理解、SQLサーバーへのアクセス、開発環境にインストールされたIronXLライブラリが必要です。

IronXLでSQLデータをExcelにエクスポートするにはMicrosoft Officeがインストールされている必要がありますか?

IronXLでは、Microsoft OfficeをインストールしなくてもSQLデータをExcelにエクスポートすることができます。

SQLデータをExcelにエクスポートする際、IronXLは大きなデータセットを扱えますか?

IronXLは大規模なデータセットを効率的に処理できるため、SQLの膨大なデータをExcelにエクスポートするのに適しています。

IronXLはすべてのバージョンのSQL Serverと互換性がありますか?

IronXLは様々なバージョンのSQL Serverで動作するように設計されており、異なる環境での互換性と使いやすさを保証します。

SQLデータをExcelにエクスポートするには、どのような使用例がありますか?

SQLデータをExcelにエクスポートすることは、レポーティングシステム、データ分析ツール、ビジネスアプリケーションを構築する際に有用です。

IronXLはExcelファイルのフォーマットオプションをサポートしていますか?

IronXLには様々なフォーマットオプションがあり、エクスポートしたExcelファイルの外観や構造をカスタマイズすることができます。

IronXLはSQLデータをExcelにエクスポートするプロセスをどのように簡素化しますか?

IronXLは、SQL Serverへの接続、DataTableレコードの取得、Excelファイルの生成など、複雑なセットアップや追加ソフトウェアを必要としない直感的な方法を提供することで、エクスポートプロセスを簡素化します。

カーティス・チャウ
テクニカルライター

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

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