Altbilgi içeriğine atla
IRONXL KULLANARAK

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.

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 1 - IronXL: C# Excel Kutuphanesi

How to Import Excel to SQL Server in C

  1. Geliştirme Ortamınızı Kurun
  2. Excel Dosyanızı Hazırlayın
  3. SQL Server Veritabanınıza Bağlanın
  4. IronXL Kullanarak Excel Dosyalarından Veri Okuyun
  5. IronPDF'i Kullanarak Veri Dışa Aktarma ve PDF Raporu Oluşturma
  6. 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:

  1. Visual Studio'yu Açın: Bilgisayarınıza Visual Studio'yu kurduğunuzdan emin olun ve ardından açın.
  2. Yeni Bir Proje Başlat: File -> New -> Project seçin.

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 2 - Yeni'ye Tıklayın

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

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 3 - Bir isim ve kayıt yeri sağlayın

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

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 4 - Uygulamayı başlatmak için nihayet 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

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 5 - IronXL yüklemek için NuGet Paket Yöneticisi Konsolunda yukarıdaki komutu girin

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.

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 6 - Alternatif olarak IronXL'yi NuGet Paket Yöneticisi kullanarak arayın ve yükleyin

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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.

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 7 - Örnek Giriş Excel dosyası

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.

Excel'i SQL Server'a C# ile Nasıl İçe Aktarırsınız: Şekil 8 - SQL Server'da başarılı bir sorgu gösteren çıktı

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
$vbLabelText   $csharpLabel

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.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara