ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
多くのビジネスコンテキストにおいて、ExcelからSQL Serverへのデータインポートは一般的な必要性です。 Excelファイルからデータを読み取り、SQL Serverデータベースに入力することがこの活動に含まれるタスクです。 エクスポートウィザードがよく使用されていますが、IronXLはデータ処理に対してよりプログラム的で柔軟なアプローチを提供します。 IronXLは、ファイルからExcelデータをインポートできる強力なC#ライブラリです。 したがって、この操作を迅速化することが可能です。 そのため、本投稿では、C#を使用してExcelをSQL Serverにインポートする際の設定、実行、及び拡張に関する詳細なガイドを提供します。
開発環境を設定する
エクセルファイルを準備する
SQL Serverデータベースに接続する
IronXLを使用してExcelファイルからデータを読み取る
IronPDFを使用してデータをエクスポートし、PDFレポートを生成する
IronXLは、時々IronXL.Excelとも呼ばれますが、.NETアプリケーションでExcelファイルを扱うのを容易にするために作られた、機能豊富なC#ライブラリです。 この強力なツールは、サーバーサイドアプリケーションに最適です。開発者は、コンピューターにMicrosoft Excelをインストールすることなく、Excelファイルを読み取り、作成し、編集することができます。 Excel 2007以降(.xlsx)Excel 97–2003(.xls)IronXLは様々なExcelファイルバージョンの管理において柔軟性を提供するため、複数の形式をサポートしています。 シート、行、列の操作に加えて、データの挿入、更新、削除などの大幅なデータ操作を可能にします。
IronXLは、セルのフォーマットやExcelの数式の対応もしており、複雑で整ったスプレッドシートのプログラム生成を可能にします。 パフォーマンス最適化と.NET Framework、.NET Core、.NET 5/6などの複数の.NETプラットフォームとの互換性により、IronXLは巨大なデータセットの効果的な処理を保証します。 それは、他の.NETフレームワークとのスムーズなインターフェースによって、シンプルなデータのインポート/エクスポート活動から複雑なレポートシステムに至るまで、Excelファイル操作をアプリケーションに統合したいと考える開発者にとって柔軟なオプションです。
開発者はIronXLを使用してExcelファイルからデータを読み書きできます。 新しいExcelファイルを作成したり、既存のファイルを編集したりするのは簡単です。
IronXLは、他の特定のライブラリとは対照的に、アプリケーションをホストしているコンピュータにMicrosoft Excelをインストールする必要がありません。 そのため、サーバーサイドアプリケーションに最適です。
このライブラリは、.xls 形式をサポートすることでさまざまなExcelファイルタイプの管理において高い汎用性を提供します。(Excel 97-2003)および .xlsx(Excel 2007以降)形式
Visual Studioコンソールプロジェクトは簡単に作成できます。 Visual Studioで、コンソールアプリケーションを作成するために以下の操作を行ってください。
Visual Studio を開く: Visual Studio がコンピュータにインストールされていることを確認してから開いてください。
新しいプロジェクトを開始: ファイル
-> 新規
-> プロジェクト
を選択します。
Create a new project
ボックスの左パネルから、お好みのプログラミング言語を選択してください。例えば、C#。
「コンソールアプリ」または「コンソールアプリ」(.NET Core(ドットネット コア))` 利用可能なプロジェクトテンプレートのリストからテンプレートを選択します。
Name欄にプロジェクトの名前を入力してください。
プロジェクトを保存する場所を決定してください。
Createをクリックして、コンソールアプリケーションプロジェクトを起動します。
アップデートに伴い、IronXLライブラリのインストールが必要です。 最後に、手順を完了するために、NuGetパッケージマネージャーコンソールを起動し、次のコマンドを入力してください。
Install-Package IronXL.Excel
NuGetパッケージマネージャーを使用して IronXL
パッケージを検索することも別の方法です。 これにより、IronXLにリンクされたNuGetパッケージのどれをダウンロードするか選択できます。
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)
{
var data = new List<Dictionary<string, object>>();
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.WorkSheets[0];
var headers = new List<string>();
foreach (var header in sheet.Rows[0].Columns)
{
headers.Add(header.ToString());
}
for (int i = 1; i < sheet.Rows.Count; i++)
{
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)
{
var data = new List<Dictionary<string, object>>();
WorkBook workbook = WorkBook.Load(filePath);
WorkSheet sheet = workbook.WorkSheets[0];
var headers = new List<string>();
foreach (var header in sheet.Rows[0].Columns)
{
headers.Add(header.ToString());
}
for (int i = 1; i < sheet.Rows.Count; i++)
{
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))
Dim data = New List(Of Dictionary(Of String, Object))()
Dim workbook As WorkBook = WorkBook.Load(filePath)
Dim sheet As WorkSheet = workbook.WorkSheets(0)
Dim headers = New List(Of String)()
For Each header In sheet.Rows(0).Columns
headers.Add(header.ToString())
Next header
For i As Integer = 1 To sheet.Rows.Count - 1
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
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;
public SqlServerConnector(string connectionString)
{
this.connectionString = connectionString;
}
public void InsertData(Dictionary<string, object> data, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
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))
{
foreach (var kvp in data)
{
command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value);
}
command.ExecuteNonQuery();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
public class SqlServerConnector
{
private string connectionString;
public SqlServerConnector(string connectionString)
{
this.connectionString = connectionString;
}
public void InsertData(Dictionary<string, object> data, string tableName)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
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))
{
foreach (var kvp in data)
{
command.Parameters.AddWithValue("@" + kvp.Key, kvp.Value ?? DBNull.Value);
}
command.ExecuteNonQuery();
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Data.SqlClient
Imports System.Linq
Public Class SqlServerConnector
Private connectionString As String
Public Sub New(ByVal connectionString As String)
Me.connectionString = connectionString
End Sub
Public Sub InsertData(ByVal data As Dictionary(Of String, Object), ByVal tableName As String)
Using connection As New SqlConnection(connectionString)
connection.Open()
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)
For Each kvp In data
command.Parameters.AddWithValue("@" & kvp.Key, If(kvp.Value, DBNull.Value))
Next kvp
command.ExecuteNonQuery()
End Using
End Using
End Sub
End Class
Excelファイルを読み込み、SQLデータベースにデータを挿入するロジックが確立されたら、これらの機能を統合してインポートプロセスを完了させます。 次のアプリケーションは、Excelファイルから情報を受け取り、Microsoft SQL Serverデータベースに追加します。
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
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);
// Insert data into SQL Server
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)
{
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);
// Insert data into SQL Server
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)
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)
' Insert data into SQL Server
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
このクラスは、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
.NETアプリケーション内でExcelファイルを管理するための効果的かつ信頼性の高い方法として、C#とIronXLを使用してExcelからMS SQLデータベースにデータをインポートすることです。 IronXLは、複数のExcel形式に対応しており、Microsoft Excelをインストールする必要なく、Excelデータの読み書きを簡単にする強力な機能を備えています。 System.Data.SqlClient
とIronXLを統合することで、開発者はパラメータ化されたクエリを使用してSQLサーバー間でデータを簡単に移動させることができ、セキュリティを改善しSQLインジェクションを防止できます。
最後に、.NET開発のツールセットにIronXLとIron Softwareを追加すると、Excelの操作、PDFの作成、OCRの利用、バーコードの活用を効率的に行うことができます。 Iron Software の柔軟なスイートと IronXL の使いやすさ、相互運用性、およびパフォーマンスを組み合わせることで、開発が効率化され、アプリケーションの機能が向上します。 プロジェクトの要件に応じてカスタマイズされた明確なライセンスオプションにより、開発者は自信を持って適切なモデルを選択できます。 これらの利点を活用することで、開発者はコンプライアンスと透明性を維持しながら、さまざまな課題に効果的に取り組むことができます。
9つの .NET API製品 オフィス文書用