C#'da Excel'i SQL Server'a Nasıl İçe Aktarırsınız
Pek çok farklı iş bağlamında, Excel'den SQL Server'a veri importu tipik bir gerekliliktir. Excel dosyasından veri okuma ve bunu bir SQL Server veritabanına girme bu faaliyetin gerektirdiği görevlerdir. Genellikle dışa aktarma sihirbazı kullanılırken, IronXL veri işleme için daha programatik ve esnek bir yaklaşım sunar. IronXL, dosyalardan Excel verilerini içe aktarabilen güçlü bir C# kütüp, hanesidir; bu nedenle, bu işlemi hızlandırmak mümkündür. Bu amaçla, bu gönderi, C# kullanarak Excel'i SQL Server'a import etmeye yönelik yapılandırma, yürütme ve iyileştirme konularını ele alan kapsamlı bir kılavuz sunacaktır.

How to Import Excel to SQL Server in C
- Geliştirme Ortamınızı Kurun
- Excel Dosyanızı Hazırlayın
- SQL Server Veritabanınıza Bağlanın
- IronXL Kullanarak Excel Dosyalarından Veri Okuyun
- IronPDF'i Kullanarak Veri Dışa Aktarma ve PDF Raporu Oluşturma
- PDF Raporunu İnceleyin
IronXL nedir?
Bazen IronXl.Excel olarak bahsedilen IronXL, .NET uygulamalarında Excel dosyaları ile çalışmayı kolaylaştırmak için yapılmış özellik açısından zengin bir C# kütüphanesidir. Bu sağlam araç, geliştiricilerin bilgisayarlarına Microsoft Excel yüklemelerine gerek kalmadan Excel dosyalarını okuma, oluşturma ve düzenleme yeteneği sunduğundan sunucu tarafı uygulamalar için idealdir. IronXL, çeşitli Excel dosya sürümlerini yönetme esnekliği sağlayarak Excel 2007 ve sonrası (.xlsx) ve Excel 97–2003 (.xls) formatlarını destekler. Çalışma sayfalarını, satır ve sütunları düzenleme yanı sıra veri ekleme, güncelleme ve kaldırma gibi önemli veri manipülasyonlarını mümkün kılar.
IronXL, hücre formatlamasını ve Excel formüllerini de destekleyerek karmaşık ve iyi biçimlendirilmiş elektronik tabloların programlanmış olarak oluşturulmasını sağlar. .NET Framework, .NET Core ve .NET 5/6 dahil olmak üzere birden fazla .NET platformuyla uyumluluğu ve performans optimizasyonuyla birlikte, IronXL büyük veri kümelerinin etkili bir şekilde işlenmesini garanti eder. IronXL, diğer .NET framework'leri ile sorunsuz entegrasyonu sayesinde, geliştiriciler için basit veri import/dışa aktarma işlemleri veya karmaşık raporlama sistemleri için uygulamalarına Excel dosyası operasyonları entegre etmek isteyenler için esnek bir seçenektir.
Temel Özellikler
Excel Dosyalarını Okuyup Yazma
Geliştiriciler, IronXL kullanarak Excel dosyalarına veri okuyup yazabilirler. Yeni Excel dosyaları oluşturmak ve mevcut olanları düzenlemek kolaydır.
Microsoft Excel Yüklemesi Gerekmiyor
IronXL, bazı diğer kütüphanelerin aksine, uygulamanın barındırıldığı bilgisayarda Microsoft Excel yüklemesini gerektirmez. Bu nedenle, sunucu tarafı uygulamalarda idealdir.
Çeşitli Excel Formatları için Destek
Kütüphane, .xls (Excel 97-2003) ve .xlsx (Excel 2007 ve sonrası) formatlarını destekleyerek çeşitli Excel dosya türlerini yönetmede esneklik sunar.
Yeni Bir Visual Studio Projesi Oluşturun
Visual Studio konsol projesi oluşturmak basittir. Visual Studio'da, bir Konsol Uygulaması oluşturmak için aşağıdaki adımları izleyin:
- Visual Studio'yu Açın: Bilgisayarınıza Visual Studio'yu kurduğunuzdan emin olun ve ardından açın.
- Yeni Bir Proje Başlat:
File->New->Projectseçin.

Create a new projectkutusunun sol panelinden tercih ettiğiniz programlama dilini seçin—örneğin C#.- Mevcut proje şablonları listesinden
Console AppveyaConsole App (.NET Core)şablonunu seçin. - İsim alanında projenize bir isim verin.

- Projeyi kaydedilecek bir yer seçin.
- Bir Konsol uygulaması projesi başlatmak için Oluştur'a tıklayın.

IronXL Kütüphanesini Yükleme
Gelecek güncelleme için IronXL kütüphanesini yüklemek gereklidir. Son olarak, işlemi tamamlamak için NuGet Paketi Yöneticisi Konsolunu başlatın ve şu komutu yazın:
Install-Package IronXl.Excel

NuGet Paket Yöneticisini kullanarak IronXL paketini aramak başka bir yöntemdir. Bu, IronXL ile ilgili hangi NuGet paketlerini indirip indirilmeyeceğimizi seçmemizi sağlar.

IronXL ile SQL'e Excel Import Etme
IronXL Kullanarak Excel'den Veri Okuma
Excel dosyalarından veri okuma süreci IronXL ile kolaylaştırılır. Aşağıdaki örnek, size IronXL kullanarak bir Excel dosyasından veri okuma işleminin nasıl yapılacağını gösterir. Bu yaklaşımda, veriler, her biri Excel tablosundaki bir satıra karşılık gelen sözlükler listesine kaydedilir.
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
SQL Server'a Bağlanma
SQL Server'a bağlantı kurmak için System.Data.SqlClient namespace'indeki SqlConnection sınıfını kullanın. Genellikle veritabanı adı, sunucu adı ve kimlik doğrulama bilgilerinden oluşan doğru bağlantı dizinizin olduğundan emin olun. Bir SQL Server veritabanına nasıl bağlanılacağını ve veri ekleneceğini aşağıdaki örnek anlatmaktadır.
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
IronXL ile SQL Server'i Birleştirme
Excel dosyalarını okuma ve verileri SQL veritabanına ekleme mantığını kurduktan sonra, bu özellikleri entegre ederek içe aktarma işlemini tamamlayın. Aşağıdaki uygulama, bir Excel dosyasından bilgi alır ve bunu bir Microsoft SQL Server veritabanına ekler.
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
Bu sınıf, verilen Excel dosyasından IronXL kullanarak veri okumaktan sorumludur. ReadExcelFile fonksiyonu Excel kitabını yükler, ilk çalışma sayfasını açar ve veri çalışma sayfasının satırları arasında dönerek veri toplar. Tabloları idare etmeyi kolaylaştırmak için bilgiler bir sözlükler listesinde saklanır.

Bu sınıf, SQL Server veritabanı ile olan bağlantıyı yöneterek verilerin belirlenen veritabanı tablosuna eklenmesinden sorumludur. InsertData yöntemi, SQL enjeksiyonunu önlemek için parametreli sorguları kullanır ve sütun adlarını temsil eden sözlük anahtarlarına dayalı olarak dinamik bir SQL INSERT sorgusu oluşturur.
Verileri Excel dosyasından SQL tablosuna okumak için ExcelReader sınıfını ve her satırı SQL Server tablosuna eklemek için SqlServerConnector sınıfını kullanarak, Main fonksiyonu tüm süreci yönetir.

Hata işleme ve optimizasyon, sağlam ve etkili bir içe aktarma sürecini garanti etmek için kritiktir. Sağlam hata işleme uygulaması, eksik dosyalar, geçersiz veri biçimleri ve SQL istisnaları gibi olası sorunları yönetebilir. Hata işleme entegre etmenin bir örneği.
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
Sonuç
Son olarak, C# ve IronXL kullanarak, .NET uygulamalarında Excel dosyalarını yönetmenin etkili ve güvenilir bir yolu, Excel'den MS SQL veritabanına veri import etmektir. IronXL, çeşitli Excel formatları ile uyumludur ve Microsoft Excel yüklemeye gerek kalmadan Excel veri okuma ve yazmayı kolaylaştıran güçlü yeteneklere sahiptir. System.Data.SqlClient ile IronXL'yi entegre ederek, geliştiriciler güvenliği artırmak ve SQL enjeksiyonunu önlemek için parametreli sorgular kullanarak SQL Sunucuları arasında verileri kolayca taşıyabilir.
Son olarak, Excel manipülasyonu, PDF oluşturma, OCR ve barkod kullanma gibi .NET geliştirmesi için araç setinize IronXL ve Iron Software eklemenize izin verir. Iron Software'in esnek suite'ini IronXL'nin kullanım kolaylığı, birlikte çalışabilirliği ve performansı ile birleştirerek, geliştirmeyi kolaylaştırır ve uygulama yeteneklerini artırır. Net lisans seçenekleri, projenin gereksinimlerine özelleştirilmiş olarak sunularak, geliştiricilerin doğru modeli güvenle seçmelerine olanak tanır. Bu avantajlardan yararlanarak, geliştiriciler bir dizi zorluğun üstesinden etkili bir şekilde gelirken uyumluluk ve şeffaflığı sürdürebilirler.
Sıkça Sorulan Sorular
C# kullanarak SQL Sunucusuna Excel verilerini ithal etmenin en iyi yolu nedir?
IronXL kütüphanesini kullanarak, Excel dosyasini okuyarak ve verileri veritabanina yerlestirerek Microsoft Excel yuklemeye gerek kalmadan Excel verilerini SQL Sunucusuna efektif bir şekilde ithal edebilirsiniz.
C#'ta Microsoft Excel kullanmadan Excel dosyalarini nasil okuyabilirim?
IronXL, Microsoft Excel gerektirmeden C#'ta Excel dosyalarini okumaniza olanak tanir. Excel workbook'u yukleyebilir, worksheet'lere erisabilir ve basit metodlar kullanarak verileri nasil yiyeceginizi buradan öğrenebilirsiniz.
Bir C# uygulamasinda bir Excel dosyasini SQL Server'a baglamak için hangi adimlar izlenmelidir?
Önce, IronXL kullanarak Excel dosyasini okuyun. Ardindan, SqlConnection sınıfini kullanarak SQL Server'a bir baglanti kurun ve SQL veritabanina veri eklemek için SqlCommand kullanin.
.NET uygulamalarinda Excel işlemleri için neden IronXL'i kullanmaliyim?
IronXL, coklu .NET platformlariyla uyumlu ve Excel kurulumunu gerektirmeyen efektif veri işlemleri sunar, bu da onu sunucu-tarafi uygulamalar ve büyük veri setlerinin islenmesi için ideal kilar.
C#'ta büyük Excel veri setlerini nasil yönetebilirim?
IronXL, büyük veri setleri için saglam destek saglar, Excel dosyalarindaki verileri etkili bir şekilde okuyup işlemenize ve uygulamalarla entegre etmenize olanak tanir.
C# uygulamasinda SQL Server'a Excel veri ithalati işlemi sirasinda hangi hata yönetimi stratejileri kullanilmalidir?
Hata ayiksama süreçine sorunsuz bir şekilde devam etmek için dosya bulunamadi, gecersiz veri formatlari veya SQL istisnalari gibi potansiyel hatalari ele almak için try-catch bloklari uygulayin.
Bir C# uygulamasinda Excel verilerinin SQL Server'a ithalini otomatiklestirebilir miyim?
Evet, IronXL kullanarak, Excel dosyalarini okuyup verileri SQL Server'a minimal manuel mudahale ile yerlestirerek bir C# uygulamasi ile ithal süreçini otomatiklestirebilirsiniz.
Otomatik sorgular SQL enjeksiyonunu C#'ta nasil onler?
C#'ta otomatik sorgular, SQL komutlarinda parametreler için yer tasmalarina uygun olarak verileri SQL Sunucusuna guvenli bir şekilde yerlestirmenizi olanak tanir, bu da SQL enjeksiyon saldirilarini onlemeye yardimci olur.
Excel verilerini SQL Server'a ithal ederken performansi nasil optimize ederim?
Batch insertler kullanarak, IronXL ile büyük veri setlerini etkin bir şekilde yöneterek ve SQL Server baglantinizin ve komutlarinizin doğru şekilde yapilandirildigindan emin olunarak performansi optimize edin.
Bir projede IronXL kullanmak için lisanslama seçenekleri nelerdir?
IronXL, proje ihtiyaçlarina uyarlanmış esnek lisanslama seçenekleri sunarak geliştiricilerin uygulama gereksinimlerine ve bütçelerine en uygun olan seçenegi secmelerini saglar.




