Altbilgi içeriğine atla
IRONXL KULLANARAK

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.

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 1 - IronXL: C# Excel Kütüphanesi

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 Okuma
  5. Verileri Dışa Aktarma ve IronPDF Kullanarak Bir PDF Raporu Oluşturma
  6. 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:

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

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 2 - Yeni'yi 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. Ad alanında projenize bir isim verin.

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 3 - Bir ad ve kaydetme konumu sağlayın

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

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 4 - Son olarak bir uygulama başlatmak için oluştur'u 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

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

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.

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

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

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

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

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.

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 7 - Girdi Excel dosyası örneği

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.

C#: Excel'i SQL Server'a Nasıl İçe Aktarılır: Şekil 8 - SQL Server'da başarılı sorgu gösterimi

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

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.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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