C#'da Excel'i SQL Server'a Nasıl İçe Aktarırsınız
Birçok farklı iş bağlamında, Excel verilerini SQL Server'a aktarmak tipik bir gerekliliktir. Bir Excel dosyasından veri okumak ve bunları bir SQL Server veritabanına nakletmek bu faaliyeti kapsar. Aktarma sihirbazı sıkça kullanılsa da, IronXL, veri işleme için daha programatik ve esnek bir yaklaşım sunar. IronXL, dosyalardan Excel verilerini ithal edebilen güçlü bir C# kütüphanesidir; bu nedenle bu işlemi hızlandırmak mümkündür. Bu nedenle, bu gönderi, IronXL'u kullanarak Excel'den SQL Server'a veri ithal etmeyi, yapılandırmayı, çalıştırmayı ve geliştirmeyi kapsamlı bir şekilde ele alan 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 Okuma
- Verileri Dışa Aktarma ve IronPDF Kullanarak Bir PDF Raporu Oluşturma
- PDF Raporunu İnceleme
IronXL Nedir?
IronXL, bazen IronXL.Excel olarak da anılır, .NET uygulamalarında Excel dosyalarıyla çalışmayı kolaylaştırmak üzere geliştirilmiş özellik açısından zengin bir C# kütüphanesidir. Bu sağlam araç, geliştiricilerin Excel dosyalarını okumalarını, yaratmalarını ve düzenlemelerini sağlar ve bilgisayara Microsoft Excel kurulumuna ihtiyaç duymaz, bu nedenle sunucu-tabanlı uygulamalar için idealdir. Excel 2007 ve üzeri (.xlsx) ve Excel 97–2003 (.xls) formatları, çeşitli Excel dosya sürümlerini yönetmekte esneklik sağlar. Çalışma sayfalarını, satırları ve sütunları düzenlemek gibi önemli veri manipülasyonlarına, ayrıca veri eklemek, güncellemek ve silmek için olanak tanır.
IronXL ayrıca hücre formatlamasını ve Excel formüllerini destekler, programlı olarak karmaşık ve iyi biçimlendirilmiş çalışma sayfaları oluşturmayı sağlar. Performans optimizasyonu ve .NET Framework, .NET Core ve .NET 5/6 dahil birden fazla .NET platformuyla uyumluluğuyla IronXL, büyük veri kümelerinin etkin bir şekilde işlenmesini garanti eder. Basit veri ithal/ihracat işlemleri veya karmaşık raporlama sistemleri için, uygulamalarına Excel dosya işlemlerini entegre etmek isteyen geliştiriciler için esnek bir seçenektir, çünkü diğer .NET çerçeveleriyle pürüzsüz bir arayüz entegrasyonu sağlar.
Başlıca Özellikler
Excel Dosyaları Okuma ve Yazma
Geliştiriciler, IronXL kullanarak Excel dosyalarına veri yazabilir ve okuyabilirler. Yeni Excel dosyaları oluşturmak ve var olanları düzenlemek basittir.
Microsoft Excel Kurulumu Gerekmez
IronXL, bazı diğer kütüphanelerin aksine, uygulamayı barındıran bilgisayarda Microsoft Excel kurulumunu gerektirmez. Bu nedenle, sunucu-tabanlı uygulamalar için idealdir.
Çeşitli Excel Formatları İç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önetmekte esneklik sunar.
Yeni Bir Visual Studio Projesi Oluşturun
Bir Visual Studio konsolu projesi oluşturmak basittir. Visual Studio'da bir Konsol Uygulaması oluşturmak için şu adımları izleyin:
- Visual Studio'yu Aç: Bilgisayarınıza Visual Studio kurulu olduğundan emin olun ve açın.
- Yeni Bir Proje Başlatın:
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. - Ad alanında projenize bir isim verin.

- Projeyi kaydetmek için bir yer belirleyin.
- Bir Konsol için bir uygulama projesi başlatmak için Oluştur'a tıklayın.

IronXL Kütüphanesi Yükleme
Gelecek güncelleme nedeniyle IronXL kütüphanesini yüklemek gereklidir. Son olarak, işlemi bitirmek için, NuGet Paket Yöneticisi Konsolu'nu açın ve şu komutu girin:
Install-Package IronXL.Excel

NuGet Paket Yöneticisini kullanarak IronXL paketini aramak başka bir yöntemdir. Bu, IronXL ile bağlantılı hangi NuGet paketlerini indirme seçeneklerini seçmemizi sağlar.

IronXL ile SQL'e Excel İthal Et
IronXL Kullanarak Excel'den Veri Okuma
Excel dosyalarından veri okuma süreci, IronXL ile daha kolay hale gelir. Aşağıdaki örnek, IronXL kullanarak Excel dosyasından veri okuma konusunda size rehberlik eder. Bu yaklaşımla, veriler birer satıra karşılık gelen sözlüklerden oluşan bir listede okunur ve saklanır.
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 alanından SqlConnection sınıfını kullanın. Genellikle veritabanı adı, sunucu adı ve kimlik bilgileri içeren doğru bağlantı dizesine sahip olun. Bir SQL Server veritabanına nasıl bağlanılacağını ve veri eklenmek istendiğ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 ve SQL Server'ı Birleştirme
Excel dosyalarını okuma ve SQL veritabanına veri ekleme mantığı kurulduktan sonra, bu özellikleri tüm ithalat işlemini bitirmek için entegre edin. Aşağıdaki uygulama, bir Excel dosyasından bilgi alır ve 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ındaki verileri IronXL kullanarak okumaktan sorumludur. ReadExcelFile fonksiyonu Excel çalışma kitabını yükler, ilk çalışma sayfasını açar ve veri çalışma sayfasının satırlarını döngüye alarak veri toplar. Tabloları yönetmeyi kolaylaştırmak için bilgiler bir sözlük listesinde saklanır.

Bu sınıf, verileri belirtilen veritabanı tablosuna eklemekle ve SQL Server veritabanına bağlantıyı yönetmekle 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 dayanarak bir SQL INSERT sorgusu dinamik olarak oluşturur.
Excel dosyasından SQL tablosuna verileri 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.

Hataların işlenmesi ve optimizasyon, dayanıklı ve etkili bir ithalat sürecini sağlamak için önemlidir. Muhtemel eksik dosyalar, geçersiz veri formatları ve SQL istisnaları gibi olası sorunları yönetmek için sağlam hata işleme uygulanabilir. Hata işleme dahil etmenin bir örneği burada.
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, .NET uygulamaları içerisinde Excel dosyalarını yönetmek için etkili ve güvenilir bir yöntem C# ve IronXL kullanarak verileri Excel'den MS SQL veritabanına ithal etmektir. IronXL, çoklu Excel formatlarıyla uyumludur ve veri okuma ve yazma işlemlerini kolaylaştıran güçlü yetenekleri vardır, böylece Microsoft Excel kurulumuna gerek kalmaz. System.Data.SqlClient entegrasyonu ile IronXL aracılığıyla geliştiriciler, güvenliği artırmak ve SQL enjeksiyonunu önlemek için parametreli sorgular kullanarak SQL Server'lar arasında verileri kolayca taşıyabilir.
Sonuç olarak, IronXL ve Iron Software'i .NET geliştirme için araç setinize eklemek, Excel'i etkin bir şekilde manipüle etmenize, PDF'ler oluşturmanıza, OCR yapmanıza ve barkod kullanmanıza olanak tanır. Iron Software'ın esnek paketini IronXL'un kullanım kolaylığı, birlikte çalışabilirlik ve performans garantisi ile birleştiren birleşimler, doğrudan geliştirme ve artırılmış uygulama yetenekleri sağlar. Projenin gereksinimlerine göre özelleştirilmiş net lisans seçenekleri ile geliştiriciler doğru modeli güvenle seçebilirler. Bu avantajları kullanarak, geliştiriciler, uyum ve açıklığı korurken çeşitli zorlukları etkili bir şekilde ele alabilirler.
Sıkça Sorulan Sorular
C# kullanarak SQL Server'a Excel verilerini içe aktarmanın en iyi yolu nedir?
IronXL kütüphanesini kullanarak, Microsoft Excel kurulumu gerektirmeden Excel dosyasını okuyarak ve verileri veritabanına ekleyerek Excel verilerini SQL Server'a verimli bir şekilde içe aktarabilirsiniz.
C#'da, Microsoft Excel kullanmadan Excel dosyalarını nasıl okuyabilirim?
IronXL, Microsoft Excel gerekmeden C# içinde Excel dosyalarını okumanıza olanak tanır. Excel çalışma kitabını yükleyebilir, çalışma sayfalarına erişebilir ve verileri basit yöntemlerle çıkarabilirsiniz.
Bir C# uygulamasında bir Excel dosyasını SQL Server'a bağlamak için adımlar nelerdir?
Öncelikle, IronXL kullanarak Excel dosyasını okuyun. Daha sonra, SqlConnection sınıfını kullanarak SQL Server'a bir bağlantı kurun ve SqlCommand ile verileri SQL veritabanına ekleyin.
.NET uygulamalarında Excel işlemleri için neden IronXL kullanmalıyım?
IronXL, verimli veri işleme, birçok .NET platformuyla uyumluluk sunar ve Excel kurulumu gerektirmez, bu da sunucu tarafı uygulamaları ve büyük veri kümelerini işleme için ideal kılar.
Büyük Excel veri kümelerini C#'da nasıl işlerim?
IronXL büyük veri kümeleri için sağlam bir destek sunar ve Excel dosyalarında verileri verimli bir şekilde okuma ve manipüle ederek performans sorunları olmadan uygulamalarınıza entegre etmenizi sağlar.
Excel'i SQL Server'a içe aktarma sırasında hangi hata işleme stratejileri kullanılmalıdır?
Dosyanın bulunamaması, geçersiz veri formatları veya SQL istisnaları gibi potansiyel hataları ele alacak try-catch blokları uygulayarak sorunsuz bir içe aktarma süreci sağlayın.
Bir C# uygulamasında Excel verilerini SQL Server'a içe aktarmayı otomatikleştirebilir miyim?
Evet, IronXL kullanarak, Excel dosyalarını okuyarak ve verileri SQL Server'a minimal manuel müdahaleyle ekleyen bir C# uygulaması yazarak içe aktarma sürecini otomatikleştirebilirsiniz.
C#'da SQL enjeksiyonunu önlemek için parametrik sorgular nasıl çalışır?
C#'da parametrik sorgular, SQL komutlarında parametreler için yer tutucular kullanarak SQL Server'a verileri güvenli bir şekilde eklemenizi sağlar, SQL enjeksiyon saldırılarını önlemeye yardımcı olur.
Excel verilerini SQL Server'a içe aktarmanın performansını nasıl optimize edebilirim?
Büyük veri kümelerini IronXL ile verimli bir şekilde işleyerek, toplu eklemeler kullanarak ve SQL Server bağlantınızın ve komutlarınızın doğru yapılandırıldığından emin olarak performansı optimize edin.
Bir projede IronXL kullanımı için lisanslama seçenekleri nelerdir?
IronXL, geliştiricilerin uygulama gereksinimleri ve bütçelerine uyan en iyi planı seçmelerini sağlayan esnek lisanslama seçenekleri sunar.




