IRONXLの使用 C#でExcelをSQL Serverにインポートする方法 Curtis Chau 更新日:6月 22, 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 多くの異なるビジネスコンテキストで、ExcelからSQL Serverへデータをインポートすることは一般的な必要性です。 Excelファイルからデータを読み取り、それをSQL Serverデータベースに入力することがこの活動に関わるタスクです。 エクスポートウィザードがよく使われますが、IronXLはデータ処理に対してよりプログラム的で柔軟なアプローチを提供します。 IronXLは、ファイルからExcelデータをインポートできる強力なC#ライブラリです; これにより、この操作を迅速化することが可能です。 そのため、本投稿はC#を使用してExcelをSQL Serverにインポートするための設定、実行、改善についての詳細なガイドを提供します。 ExcelをSQL Serverにインポートする方法 開発環境をセットアップする Excelファイルを準備する SQL Serverデータベースと接続する IronXLを使用してExcelファイルからデータを読み取る IronPDFを使用してデータをエクスポートし、PDFレポートを生成する PDFレポートを確認する IronXLとは? IronXLは、時々IronXL.Excelとも呼ばれるように、.NETアプリケーションでExcelファイルを扱う作業を簡単にするために開発された機能豊富なC#ライブラリです。 この強力なツールは、Microsoft Excelをコンピュータにインストールする必要がなく、Excelファイルを読み取り、作成、および編集できるため、サーバーサイドのアプリケーションに最適です。 Excel 2007以降(.xlsx)およびExcel 97–2003(.xls)形式がIronXLでサポートされており、さまざまなExcelファイルのバージョンを管理する柔軟性を提供します。 ワークシート、行、列を操作するほかに、データを挿入、更新、および削除するなど、重大なデータ操作が可能です。 IronXLは、セルの書式設定やExcelの数式もサポートしており、複雑でよくフォーマットされたスプレッドシートのプログラム化された生成を可能にします。 複数の.NETプラットフォーム、.NET Framework、.NET Core、および.NET 5/6との互換性とパフォーマンスの最適化により、IronXLは大規模なデータセットを効果的に処理することを保証します。 シンプルなデータのインポート/エクスポート活動にも、複雑な報告システムにもかかわらず、アプリケーションにExcelファイル操作を統合したい開発者にとって、他の.NETフレームワークとのスムーズなインターフェースのおかげで柔軟な選択肢となります。 主要機能 Excelファイルの読み書き 開発者はIronXLを使用してExcelファイルへのデータの読み書きができます。 新しいExcelファイルを作成して既存のものを編集するのは簡単です。 Microsoft Excelのインストール不要 IronXLは他のいくつかのライブラリと異なり、アプリケーションをホストしているコンピュータ上にMicrosoft Excelをインストールする必要がありません。 このため、サーバーサイドのアプリには最適です。 さまざまなExcel形式のサポート ライブラリはExcel 97-2003 (.xls) および Excel 2007以降 (.xlsx) 形式をサポートすることで、さまざまなExcelファイルタイプの管理に柔軟性を提供します。 新しいVisual Studioプロジェクトを作成 Visual Studioコンソールプロジェクトは簡単に作成できます。 Visual Studioでコンソールアプリケーションを作成するために次の操作を行います: Visual Studioを開く: Visual Studioがコンピュータにインストールされていることを確認してから開きます。 新しいプロジェクトを開始: ファイル -> 新規作成 -> プロジェクト を選択します。 Create a new project ボックスの左パネルで、好みのプログラミング言語を選びます。例えば、C#。 使用可能なプロジェクトテンプレートのリストから コンソールアプリ または コンソールアプリ (.NET Core) テンプレートを選択します。 名前 セクションにプロジェクトの名前を入力します。 プロジェクトを保存する場所を決定します。 作成 をクリックしてコンソール用のアプリケーションプロジェクトを起動します。 IronXLライブラリをインストールする 次の更新のためにはIronXLライブラリのインストールが必要です。 最後に、手続きを完了するためにはNuGetパッケージマネージャコンソールを起動し、以下のコマンドを入力します: Install-Package IronXL.Excel 別の方法として、NuGetパッケージマネージャを使用して IronXL パッケージを検索する手段もあります。 これにより、IronXLに関連付けられたNuGetパッケージの中からどれをダウンロードするか選択できます。 IronXLを使ったExcelのSQLへのインポート IronXLを使ったExcelからのデータ読み取り Excelファイルからデータを読み取るプロセスはIronXLによって容易にされています。 以下の例では、IronXLを使ってExcelファイルからデータを読み取る方法を示しています。このアプローチで、データは読み取られ、各Excelシートの行に対応する辞書のリストに保存されます。 using IronXL; using System; using System.Collections.Generic; public class ExcelReader { public static List<Dictionary<string, object>> ReadExcelFile(string filePath) { // Initialize a list to store data from Excel var data = new List<Dictionary<string, object>>(); // Load the workbook from the file path provided WorkBook workbook = WorkBook.Load(filePath); // Access the first worksheet in the workbook WorkSheet sheet = workbook.WorkSheets[0]; // Retrieve column headers from the first row var headers = new List<string>(); foreach (var header in sheet.Rows[0].Columns) { headers.Add(header.ToString()); } // Loop through each row starting from the second row for (int i = 1; i < sheet.Rows.Count; i++) { // Create a dictionary to store the row data associated with column headers var rowData = new Dictionary<string, object>(); for (int j = 0; j < headers.Count; j++) { rowData[headers[j]] = sheet.Rows[i][j].Value; } data.Add(rowData); } return data; } } using IronXL; using System; using System.Collections.Generic; public class ExcelReader { public static List<Dictionary<string, object>> ReadExcelFile(string filePath) { // Initialize a list to store data from Excel var data = new List<Dictionary<string, object>>(); // Load the workbook from the file path provided WorkBook workbook = WorkBook.Load(filePath); // Access the first worksheet in the workbook WorkSheet sheet = workbook.WorkSheets[0]; // Retrieve column headers from the first row var headers = new List<string>(); foreach (var header in sheet.Rows[0].Columns) { headers.Add(header.ToString()); } // Loop through each row starting from the second row for (int i = 1; i < sheet.Rows.Count; i++) { // Create a dictionary to store the row data associated with column headers var rowData = new Dictionary<string, object>(); for (int j = 0; j < headers.Count; j++) { rowData[headers[j]] = sheet.Rows[i][j].Value; } data.Add(rowData); } return data; } } Imports IronXL Imports System Imports System.Collections.Generic Public Class ExcelReader Public Shared Function ReadExcelFile(ByVal filePath As String) As List(Of Dictionary(Of String, Object)) ' Initialize a list to store data from Excel Dim data = New List(Of Dictionary(Of String, Object))() ' Load the workbook from the file path provided Dim workbook As WorkBook = WorkBook.Load(filePath) ' Access the first worksheet in the workbook Dim sheet As WorkSheet = workbook.WorkSheets(0) ' Retrieve column headers from the first row Dim headers = New List(Of String)() For Each header In sheet.Rows(0).Columns headers.Add(header.ToString()) Next header ' Loop through each row starting from the second row For i As Integer = 1 To sheet.Rows.Count - 1 ' Create a dictionary to store the row data associated with column headers Dim rowData = New Dictionary(Of String, Object)() For j As Integer = 0 To headers.Count - 1 rowData(headers(j)) = sheet.Rows(i)(j).Value Next j data.Add(rowData) Next i Return data End Function End Class $vbLabelText $csharpLabel SQL Serverへの接続 System.Data.SqlClient 名前空間から SqlConnection クラスを使用してSQL Serverに接続を確立します。 通常、データベース名、サーバー名、認証情報で構成される正しい接続文字列を持っていることを確認してください。 SQL Serverデータベースに接続しデータを追加する方法は以下の例で説明しています。 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; public class SqlServerConnector { private string connectionString; // Constructor accepts a connection string public SqlServerConnector(string connectionString) { this.connectionString = connectionString; } // Inserts data into the specified table public void InsertData(Dictionary<string, object> data, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Construct an SQL INSERT command with parameterized values to prevent SQL injection var columns = string.Join(",", data.Keys); var parameters = string.Join(",", data.Keys.Select(key => "@" + key)); string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})"; using (SqlCommand command = new SqlCommand(query, connection)) { // Add parameters to the command foreach (var kvp in data) { command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value); } // Execute the command command.ExecuteNonQuery(); } } } } using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; public class SqlServerConnector { private string connectionString; // Constructor accepts a connection string public SqlServerConnector(string connectionString) { this.connectionString = connectionString; } // Inserts data into the specified table public void InsertData(Dictionary<string, object> data, string tableName) { using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Construct an SQL INSERT command with parameterized values to prevent SQL injection var columns = string.Join(",", data.Keys); var parameters = string.Join(",", data.Keys.Select(key => "@" + key)); string query = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})"; using (SqlCommand command = new SqlCommand(query, connection)) { // Add parameters to the command foreach (var kvp in data) { command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value); } // Execute the command command.ExecuteNonQuery(); } } } } Imports System Imports System.Collections.Generic Imports System.Data.SqlClient Imports System.Linq Public Class SqlServerConnector Private connectionString As String ' Constructor accepts a connection string Public Sub New(ByVal connectionString As String) Me.connectionString = connectionString End Sub ' Inserts data into the specified table Public Sub InsertData(ByVal data As Dictionary(Of String, Object), ByVal tableName As String) Using connection As New SqlConnection(connectionString) connection.Open() ' Construct an SQL INSERT command with parameterized values to prevent SQL injection Dim columns = String.Join(",", data.Keys) Dim parameters = String.Join(",", data.Keys.Select(Function(key) "@" & key)) Dim query As String = $"INSERT INTO {tableName} ({columns}) VALUES ({parameters})" Using command As New SqlCommand(query, connection) ' Add parameters to the command For Each kvp In data command.Parameters.AddWithValue("@" & kvp.Key, If(kvp.Value, DBNull.Value)) Next kvp ' Execute the command command.ExecuteNonQuery() End Using End Using End Sub End Class $vbLabelText $csharpLabel IronXLとSQL Serverの組み合わせ Excelファイルを読み取りSQLデータベースにデータを挿入するためのロジックが確立されたら、これらの機能を統合してインポートプロセスを完了します。 次のアプリケーションは、Excelファイルから情報を受け取りMicrosoft SQL Serverデータベースに追加します。 using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Define the path to the Excel file, SQL connection string, and target table name string excelFilePath = "path_to_your_excel_file.xlsx"; string connectionString = "your_sql_server_connection_string"; string tableName = "your_table_name"; // Read data from Excel List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath); // Create an instance of the SQL connector and insert data SqlServerConnector sqlConnector = new SqlServerConnector(connectionString); foreach (var row in excelData) { sqlConnector.InsertData(row, tableName); } Console.WriteLine("Data import completed successfully."); } } using System; using System.Collections.Generic; class Program { static void Main(string[] args) { // Define the path to the Excel file, SQL connection string, and target table name string excelFilePath = "path_to_your_excel_file.xlsx"; string connectionString = "your_sql_server_connection_string"; string tableName = "your_table_name"; // Read data from Excel List<Dictionary<string, object>> excelData = ExcelReader.ReadExcelFile(excelFilePath); // Create an instance of the SQL connector and insert data SqlServerConnector sqlConnector = new SqlServerConnector(connectionString); foreach (var row in excelData) { sqlConnector.InsertData(row, tableName); } Console.WriteLine("Data import completed successfully."); } } Imports System Imports System.Collections.Generic Friend Class Program Shared Sub Main(ByVal args() As String) ' Define the path to the Excel file, SQL connection string, and target table name Dim excelFilePath As String = "path_to_your_excel_file.xlsx" Dim connectionString As String = "your_sql_server_connection_string" Dim tableName As String = "your_table_name" ' Read data from Excel Dim excelData As List(Of Dictionary(Of String, Object)) = ExcelReader.ReadExcelFile(excelFilePath) ' Create an instance of the SQL connector and insert data Dim sqlConnector As New SqlServerConnector(connectionString) For Each row In excelData sqlConnector.InsertData(row, tableName) Next row Console.WriteLine("Data import completed successfully.") End Sub End Class $vbLabelText $csharpLabel このクラスはIronXLを使用して指定されたExcelファイルからデータを読み取る責任があります。ReadExcelFile 関数はExcelワークブックをロードし、最初のワークシートを開き、データワークシートの行をループすることでデータを収集します。 テーブルの扱いを容易にするために情報は辞書のリストに保存されます。 このクラスは指定されたデータベーステーブルにデータを挿入し、SQL Serverデータベースへの接続を管理します。 InsertData メソッドはSQLインジェクションを避けるためにパラメータ化されたクエリを使用し、辞書のキーを表す列名に基づいて動的にSQL INSERTクエリを構築します。 ExcelReader クラスを使用してExcelファイルからSQLテーブルにデータを読み込み、 SqlServerConnector クラスを使用して各行をSQL Serverテーブルに挿入し、Main 関数が全プロセスを管理します。 エラーハンドリングと最適化は、堅牢で効率的なインポートプロセスを確保するために重要です。 欠落したファイル、無効なデータ形式、SQL例外などの潜在的な問題を管理するために、強力なエラーハンドリングを実装することができます。 エラーハンドリングを組み込む例を以下に示します。 try { // Insert the importing logic here } catch (Exception ex) { Console.WriteLine("An error occurred: " + ex.Message); } try { // Insert the importing logic here } catch (Exception ex) { Console.WriteLine("An error occurred: " + ex.Message); } Try ' Insert the importing logic here Catch ex As Exception Console.WriteLine("An error occurred: " & ex.Message) End Try $vbLabelText $csharpLabel 結論 最後に、C#とIronXLを使用してExcelからMS SQLデータベースにデータをインポートすることは.NETアプリケーション内でExcelファイルを管理するための効果的で信頼性のある方法です。 IronXLは複数のExcel形式と互換性があり、Microsoft ExcelをインストールすることなくExcelデータの読み書きを容易にする強力な機能を持っています。 System.Data.SqlClient とIronXLの統合により、開発者はSQLサーバー間のデータ移動を安全性を高め、SQLインジェクションを防止するためのパラメータ化されたクエリを使用して簡単に行うことができます。 最後に、IronXLとIron Softwareを.NET開発のツールセットに追加することで、Excelの操作、PDFの作成、OCRの使用、バーコードの活用を効率的に管理できます。 Iron Softwareの柔軟なスイートとIronXLの使いやすさ、相互運用性、およびパフォーマンスを組み合わせることで、開発を合理化し、アプリケーションの機能を向上させます。 プロジェクトの要件に合わせた明確なライセンスオプションにより、開発者は適切なモデルを自信を持って選択できます。 これらの利点を利用することで、開発者はコンプライアンスと透明性を保ちつつ、多様な困難に効果的に取り組むことができます。 よくある質問 C#を使用してExcelデータをSQL Serverにインポートする最良の方法は何ですか? IronXLライブラリを使用すると、Microsoft Excelをインストールすることなく、Excelファイルを読み取り、データベースにデータを挿入することで、効率的にExcelデータをSQL Serverにインポートできます。 Microsoft Excelを使用せずに、C#でExcelファイルを読み取るにはどうすればよいですか? IronXLは、Microsoft Excelを必要とせずにC#でExcelファイルを読み取ることを可能にします。Excelワークブックを読み込み、ワークシートにアクセスし、シンプルなメソッドを使用してデータを抽出できます。 C#アプリケーションでExcelファイルをSQL Serverに接続するステップは何ですか? 最初に、IronXLを使用してExcelファイルを読み取ります。その後、SqlConnectionクラスを使用してSQL Serverに接続を確立し、SqlCommandを使用してSQLデータベースにデータを挿入します。 なぜ.NETアプリケーションでExcel操作にIronXLを使用するべきですか? IronXLは効率的なデータ処理を提供し、複数の.NETプラットフォームと互換性があり、Excelをインストールする必要がないため、サーバーサイドアプリケーションや大規模なデータセットの処理に最適です。 C#で大規模なExcelデータセットを処理するにはどうすればよいですか? IronXLは大規模なデータセットをサポートしており、Excelファイル内のデータを効率的に読み取り、操作し、アプリケーションに統合することができ、パフォーマンスの問題を回避できます。 ExcelをSQL Serverにインポートする際のエラーハンドリング戦略は何ですか? ファイルが見つからない、無効なデータ形式、SQL例外などの潜在的なエラーを処理するために、try-catchブロックを実装して、スムーズなインポートプロセスを確保します。 C#アプリケーションでExcelデータのSQL Serverへのインポートを自動化できますか? はい、IronXLを使用して、Excelファイルを読み取り、最小限の手作業でデータをSQL Serverに挿入するC#アプリケーションを書くことで、自動化できます。 C#におけるSQLインジェクションを防止するために、パラメータ化されたクエリはどのように機能しますか? C#のパラメータ化されたクエリは、SQLコマンド内でパラメータ用のプレースホルダーを使用することで、データを安全にSQL Serverに挿入でき、SQLインジェクション攻撃を防ぐことができます。 ExcelデータをSQL Serverにインポートする際のパフォーマンスを最適化するにはどうすればよいですか? バッチ挿入を使用し、大規模データセットをIronXLで効率よく処理し、SQL Serverの接続とコマンドが適切に構成されていることを確認して、パフォーマンスを最適化します。 プロジェクトでIronXLを使用するライセンスのオプションは何ですか? IronXLは、プロジェクトのニーズに合わせた柔軟なライセンスオプションを提供し、開発者がアプリケーション要件と予算に合った最適なプランを選択できるようにします。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む 公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む C#でExcelファイルを操作する方法{"8":"C#\u3092\u4f7f\u7528\u3057\u3...
公開日 10月 27, 2025 C#でExcelピボットテーブルを作成する方法 この明確なステップバイステップガイドを使用して、C# InteropとIronXLを使用してExcelでピボットテーブルを作成する方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 C#で列ヘッダー付きのDataGridViewをExcelにエクスポートする方法 IronXLライブラリを使用したステップバイステップのC#チュートリアルで、列ヘッダーを保持しながらDataGridViewデータをExcelにエクスポートする方法を学びましょう。 詳しく読む
公開日 10月 27, 2025 .NET Core CSVリーダーとしてのIronXLの使用方法 実用的な例とともにIronXLを.NET Core CSVリーダーとして効果的に使用する方法を学びましょう。 詳しく読む