IRONSOFTWAREHOME
DIĞER BILEŞENLERLE KARŞILAŞTIRIN

IronXL ve Epplus karsilastirmasi

Curtis Chau
Curtis Chau
Updated: 19 Temmuz 2026

IronXL ve EPPlus, Microsoft Office veya Interop gerektirmeden .xls ve .xlsx dosyalarını okuyup oluşturan .NET Excel kütüphaneleridir. Bu karşılaştırma, API'leri, desteklenen formatlar ve lisanslamayı kapsar — .NET uygulamalarında en yaygın kullanılan işlemler için kod örnekleriyle.

EPPlus Yazılımı Nedir?

EPPlus, Office Open XML hesap tablolarını işlemek için NuGet tabanlı bir .NET Framework/.NET Core kütüphanesidir. Sürüm 5, .NET Framework 3.5 ve .NET Core 2.0 desteği içerir. EPPlus, Microsoft Excel gibi başka kütüphanelere dayanmaz.

EPPlus, Office Excel belgeleriyle çalışmanıza olanak tanıyan bir API'ye sahiptir. EPPlus, Office OpenXML formatındaki Excel dosyalarını okuyup yazan bir .NET kütüphanesidir. Bu kütüphane, NuGet'ten bir paket olarak mevcuttur.

Kütüphane, programcılar düşünülerek oluşturulmuştur. Her zaman Excel veya başka bir hesap tablosu kütüphanesiyle aşina olan bir geliştiricinin, API'yi hızla öğrenmesini sağlamak hedef olmuştur. Alternatif olarak, birisi "IntelliSense ile zafere ulaş" demiştir.

EPPlus Kurulumu

Visual Studio'danEPPluskurmak için, Görünüm > Diğer Pencereler > Paket Yöneticisi Konsolu'na gidin ve aşağıdaki komutu yazın:

PM > Install-Package EPPlus

Eğer .NET CLI'yi kullanmayı tercih ediyorsanız, yükseltilmiş bir komut istemi veya PowerShell isteminden aşağıdaki komutu çalıştırın:

dotnet add package EPPlus

EPPlus, projenize ekleyebileceğiniz bir .NET paketidir.

IronXL Nedir?

IronXL, Microsoft Office yüklemenize veya Excel Interop'a güvenmeden .NET içinde Excel hesap tablosu dosyalarını okumanıza, düzenlemenize ve oluşturmanıza olanak tanıyan bir C# ve VB Excel API'sidir. Kütüphane, XLS, XLSX, CSV ve diğer hesap tablosu formatlarını yerel olarak işler.

IronXL, .NET Core, .NET Framework, Xamarin, Mobil, Linux, macOS ve Azure tarafından desteklenmektedir.

Elektronik tablonuza veri okuma ve yazmanın birden fazla yolu vardır.

IronXL'yi NuGet Paketi Kullanarak Ekleme

IronXL paketini hesabınıza eklemek için üç yoldan birini seçebilirsiniz; böylece sizin için en uygun olanı seçebilirsiniz.

  • IronXL'yi kurmak için Paket Yöneticisi Konsolunu Kullanma

Projenizde Paket Yöneticisi Konsolunu açmak için aşağıdaki komutu kullanın:

Paket Yöneticisi Konsoluna erişmek için Araçlar => NuGet Paket Yöneticisi => Paket Yöneticisi Konsolunu seçin.

Bu sizi Paket Yöneticisi Konsoluna götürecektir. Daha sonra, Paket Yöneticisi terminaline aşağıdaki komutu yazın:

PM > Install-Package IronXL.Excel

  • NuGet Paket Yöneticisini Kullanarak IronXL'yi Kurma

NuGet Paket Yöneticisini kurmanın farklı bir yaklaşımı. Önceki yöntemi kullanarak kurulumu tamamladıysanız bu yaklaşımı kullanmanıza gerek yok.

NuGet Paket Yöneticisine erişmek için Araçlar > NuGet Paket Yöneticisi => Çözüm İçin NuGet Paketlerini Yönet'i Açılır Listeden seçin.

Bu NuGet-Çözüm'ü başlatacaktır; "Gözat"'ı seçin ve IronXL'yi arayın.

Arama çubuğuna Excel yazın:

İnstall düğmesine tıkladığınızda IronXL sizin için yüklenecektir. IronXL'yi yükledikten sonra formunuzla gelişim yapmaya başlayabilirsiniz.

Kod örneklerine dalmadan önce, bu makalede ele alınan kilit alanlardaEPPlusve IronXL'nin yan yana bir görünümüne bakalım:

ÖzellikEPPlusIronXL
XLSX dosyalarını okuyunEvetEvet
XLSX dosyaları oluşturunEvetEvet
XLS formatı desteğiHayırEvet
CSV, JSON, XML olarak dışa aktarSadece CSVCSV, JSON, XML
Veritabanı dışa aktarımı (Entity Framework)Dahil değilEvet
Veri doğrulama yardımcılarıDahil değilEvet
Çoklu çalışma kitabı işlemleriTek çalışma sayfası odaklıÇoklu çalışma sayfası ve çoklu çalışma kitabı
LisanslamaTicari veya Polyform Ticari OlmayanTicari (süresiz)

Kendi projenizde IronXL'nin Excel işlemlerini EPPlus'a karşı test etmek için ücretsiz 30 günlük deneme mevcuttur.

IronXL ile Bir Excel Dosyası Oluşturma

IronXL ile yeni bir Excel Çalışma Kitabı oluşturmak tek bir kod satırı alır:

// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);

IronXL, Excel'in tam işlev genişliğini kullanarak dosyaları XLS (önceki Excel dosya sürümü) ve XLSX (geçerli ve daha yeni Excel dosya sürümü) formatlarında oluşturabilir.

  • Varsayılan bir çalışma sayfası ayarlayın

Varsayılan bir çalışma sayfası ayarlamak daha da kolaydır:

// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");

Yukarıdaki kod parçasında sheet çalışma sayfasını temsil eder ve bunu hücre değerleri ve stilleri ayarlamak ve Excel'in yapabileceği hemen her şeyi yapmak için kullanabilirsiniz. Ayrıca Excel belgenizi salt okunur bir dosya olarak kodlayabilir ve silme işlemlerini gerçekleştirebilirsiniz. Ayrıca Excel gibi çalışma sayfalarınızı bağlayabilirsiniz.

Belirli değilseniz, bir çalışma kitabı ile bir çalışma sayfası arasındaki farkı açıklayayım.

Çalışma sayfaları bir çalışma kitabında bulunur. Bu, istediğiniz kadar çalışma sayfasını bir çalışma kitabına koyabileceğiniz anlamına gelir. Bunu nasıl yapacağını sonraki bir makalede açıklayacağım. Satır ve sütunlar bir çalışma sayfasını oluşturur. Bir satır ile bir sütunun kesişim noktası bir hücre olarak bilinir ve Excel içinde etkileşimde bulunacağınız şey budur.

EPPlus Software AB ile Excel dosyası oluşturma

EPPlus, Excel dosyaları oluşturmak ve pivot tablolar, pivot alanlar ve hatta koşullu biçimlendirme ve yazı tiplerini değiştirme gibi işlemler gerçekleştirmek için kullanılabilir. Sözü fazla uzatmadan, normal bir DataTable'yi XLSX Excel dosyasına dönüştürmek ve kullanıcıya indirilmesi için göndermek amacıyla tüm kaynak kod burada:

public ActionResult ConvertToXLSX()
{
    byte[] fileData = null;

    // Replace the GetDataTable() method with your DBMS-fetching code.
    using (DataTable dt = GetDataTable())
    {
        // Create an empty spreadsheet
        using (var p = new ExcelPackage())
        {
            // Add a worksheet to the spreadsheet
            ExcelWorksheet ws = p.Workbook.Worksheets.Add(dt.TableName);

            // Initialize rows and columns counter: note that they are 1-based!
            var row = 1;
            var col = 1;

            // Create the column names on the first line.
            // In this sample, we'll just use the DataTable column names
            row = 1;
            col = 0;
            foreach (DataColumn dc in dt.Columns)
            {
                col++;
                ws.SetValue(row, col, dc.ColumnName);
            }

            // Insert the DataTable rows into the XLS file
            foreach (DataRow r in dt.Rows)
            {
                row++;
                col = 0;
                foreach (DataColumn dc in dt.Columns)
                {
                    col++;
                    ws.SetValue(row, col, r[dc].ToString());
                }

                // Alternate light-gray color for uneven rows (3, 5, 7, 9)...
                if (row % 2 != 0)
                {
                    ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
                    ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray);
                }
            }

            // Output the XLSX file
            using (var ms = new MemoryStream())
            {
                p.SaveAs(ms);
                ms.Seek(0, SeekOrigin.Begin);
                fileData = ms.ToArray();
            }
        }
    }

    string fileName = "ConvertedFile.xlsx";
    string contentType = System.Web.MimeMapping.GetMimeMapping(fileName);
    Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName));
    return File(fileData, contentType);
}

Gördüğünüz gibi, bu herhangi bir ASP.NET MVC Controller'da kullanılabilecek bir ActionResult yöntemidir; ASP.NET MVC kullanmıyorsanız, yöntemin içeriğini kopyalayıp ihtiyaç duyduğunuz yere yapıştırın (örneğin, klasik ASP.NET, Konsol Uygulaması, Windows Forms vb.).

Kod, çeşitli işlemleri anlamanıza yardımcı olacak yeterli yorumlarla kendi kendini açıklayıcıdır. Ama önce, burada yaptıklarımızın hızlı bir özetini sunayım:

  • Özel bir Veri Sağlayıcı yöntemi kullanarak DataTable nesnesi alıyoruz.
  • EPPlus'ın XLSX dosyası için birincil konteyneri olan bir ExcelPackage nesnesi oluşturuyoruz.
  • Verilerin girileceği çalışma sayfası olacak ExcelPackage'e bir ExcelWorksheet ekliyoruz.
  • Başlık satırımızı oluşturmak için, DataTable sütunlarını tekrarlayıp bunları çalışma sayfamızın ilk satırına ekliyoruz.
  • DataTable satırlarını tekrarlıyor, her birini satır satır çalışma sayfası satırımıza ekliyoruz (satır 2'den başlayarak), böylece her DataTable satırı bir çalışma sayfası satırına karşılık gelir.
  • MemoryStream oluşturuyoruz ve DataTable'dan ExcelPackage'ya dönüşüm tamamlandığında ExcelPackage ikili veriyi depoluyoruz ve daha sonra bir byte dizisine çeviriyoruz.
  • HTML yanıtını oluşturur ve bir İçerik Dağıtımı eki ile XLSX dosyasını kullanıcıya göndeririz, bu sayede tarayıcı dosyayı otomatik olarak indirir.

IronXL'nin çalışma kitabı oluşturma yaklaşımı, EPPlus'ın ExcelPackage, ExcelWorksheet ve manuel hücre yinelemesi içeren çok aşamalı kuruluma kıyasla tek satır kod gerektirir. Hızlı prototip oluşturma ve daha basit hata ayıklama öncelikli olan ekipler için, bu %1 boilerplate farkı bir projenin yaşam döngüsü boyunca toplanabilir.

EPPlus Software AB'nin Excel Dosyaları Yazma Yöntemi

EPPlus, Excel dosyaları üzerinde çalışmayı destekler. Bu, Excel dosyalarını okuyup yazan bir .NET kütüphanesidir.

  • Excel Dosyalarını Okuma

Bunu yapmak için öncelikleEPPluspaketini yüklemelisiniz: 'Tools'-> 'NuGet package manager'-> 'Manage NuGet for this solution' -> 'Install EPPlus' -> 'Install EPPlus' -> 'Install EPPlus' -> 'Install EPPlus' -> 'Install EP' gidin. 'EPPlus'ı 'Browse' sekmesinde arayın, ardından NuGet paketini yükleyin.

Paketi yükledikten sonra, consoll uygulamanızın 'Program.cs' dosyasında aşağıdaki kodu kullanabilirsiniz.

using OfficeOpenXml;
using System;
using System.IO;

namespace ReadExcelInCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            // Provide file path
            FileInfo existingFile = new FileInfo(@"D:\sample_XLSX.xlsx");
            // Use EPPlus
            using (ExcelPackage package = new ExcelPackage(existingFile))
            {
                // Get the first worksheet in the workbook
                ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                int colCount = worksheet.Dimension.End.Column;  // Get Column Count
                int rowCount = worksheet.Dimension.End.Row;     // Get row count
                for (int row = 1; row <= rowCount; row++)
                {
                    for (int col = 1; col <= colCount; col++)
                    {
                        // Print data, based on row and columns position
                        Console.WriteLine("Row:" + row + " Column:" + col + " Value:" + worksheet.Cells[row, col].Value?.ToString().Trim());
                    }
                }
            }
        }
    }
}

Bir örnek excel dosyası (.xlsx) ile çalışan bir konsol uygulaması çıktısının bir örneği burada.EPPluskullanarak C# dilinde okuma için bir xlsx dosyası burada.

Birden fazla kaynaktan veri yüklemeye yönelik aşağıdaki yöntemler 'cells' özelliği (ExcelRange) kullanılarak erişilebilir:

  • Bir CSV metin dosyasını okuyun ve verileri LoadFromText ve LoadFromTextAsync ile bir çalışma sayfasındaki bir aralığa yükleyin.IronXL ayrıca kendi CSV dışa ve içe aktarma işlemlerini sağlar.
  • LoadFromDataReaderAsync ve LoadFromDataReader — bir DataReader'dan veri alanlarını bir aralığa yükler.
  • LoadFromDataTableDataTable'den veriyi bir aralığa yükler. XML (bir örnek sağlanmış) ve veritabanları dahil olmak üzere çeşitli kaynaklardan veri içe aktarabilir.
  • LoadFromCollection — yansımalı olarak bir IEnumerable'den veriyi bir aralığa yükler.
  • Özelliklerle LoadFromCollection — yansımalı olarak bir IEnumerable'den veriyi bir aralığa veya tabloya yükler. Stiller, sayı formatları, formüller ve diğer özellikler öznitelikler aracılığıyla belirlenir.
  • LoadFromDictionaries — bir IEnumerable ExpandoObject/dinamik nesnelerden veriyi (onların IDictionary<string, object> arayüzü aracılığıyla) bir aralığa yükler. JSON verileri içe aktarmak için kullanışlı olup bir örnek dahildir.
  • LoadFromArrays — bir IEnumerable nesne []'den veriyi bir aralığa yükler, her bir nesne dizisi çalışma sayfasında bir satıra karşılık gelir.

Bu yöntemleri kullanırken tercihen bir Excel tablosu oluşturmak için bir parametre verebilirsiniz. Örnek projenin örnek 4 ve 5 Sample-.NET Framework veya Sample-.NET Framework daha kapsamlı örnekler içerir.

  • Excel Dosyalarını Yazma

Şimdi, verileri yeni bir Excel dosyasına aktarıp aktaramayacağımıza bakalım.

İşte Excel belgesi olarak kaydetmek istediğimiz bazı örnek veriler/nesneler.

List<UserDetails> persons = new List<UserDetails>()
{
    new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
    new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
    new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
    new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
};

Temel bilgileri içeren yeni bir Excel dosyası oluşturmak için ExcelPackage sınıfını kullanmalıyız. Bir dosyaya veri yazmak ve yeni bir Excel elektronik tablosu oluşturmak sadece birkaç satır kod alır. Aşağıdaki tek satırın DataTables'ı bir Excel sayfasına yükleme sihrini gerçekleştirdiğine dikkat edin.

İşi basit tutmak için, aynı proje klasöründe yeni bir elektronik tablo dosyası oluşturuyorum (Excel dosyası projenin 'bin' klasöründe oluşturulacak). Kaynak kod aşağıdadır:

private static void WriteToExcel(string path)
{
    // Let use below test data for writing it to excel
    List<UserDetails> persons = new List<UserDetails>()
    {
        new UserDetails() {ID="9999", Name="ABCD", City ="City1", Country="USA"},
        new UserDetails() {ID="8888", Name="PQRS", City ="City2", Country="INDIA"},
        new UserDetails() {ID="7777", Name="XYZZ", City ="City3", Country="CHINA"},
        new UserDetails() {ID="6666", Name="LMNO", City ="City4", Country="UK"},
    };

    // Let's convert our object data to Datatable for a simplified logic.
    // Datatable is the easiest way to deal with complex datatypes for easy reading and formatting. 
    DataTable table = (DataTable)JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (typeof(DataTable)));
    FileInfo filePath = new FileInfo(path);
    using (var excelPack = new ExcelPackage(filePath))
    {
        var ws = excelPack.Workbook.Worksheets.Add("WriteTest");
        ws.Cells.LoadFromDataTable(table, true, OfficeOpenXml.Table.TableStyles.Light8);
        excelPack.Save();
    }
}

Veri doğrulama için yukarıda belirtilen API çağrısının ardından, yukarıdaki özel nesne dönüştürme ile uygun Excel sütunları ve satırları oluşturularak yeni bir Excel dosyası oluşturulacaktır.

Yukarıdaki hazır kullanım API'si, .NET Core konsolunda, bir test projesinde veya bir ASP.NET Core uygulamasında kullanılabilir ve mantığı ihtiyaçlarınıza göre değiştirebilirsiniz.

Bu teknikler, 'cells' özelliği (ExcelRange) kullanılarak erişilebilir.

  • ToText ve ToTextAsync — bir aralıktan bir CSV dizisi oluşturur.
  • SaveToText ve SaveToTextAsync ile bir aralığı bir CSV dosyasına yazma.
  • Veri aktarımını ToDataTable yöntemini kullanarak bir Sisteme dışa aktarır. DataTable
  • GetValue — bir veri türü seçeneğiyle bir değeri gösterir.
  • Value — aralığın değerini döndürür veya ayarlar.

GetValue ve SetValue yöntemleri de doğrudan çalışma sayfası nesnesi üzerinde kullanılabilir. (Bu, aralık üzerinde okuma/yazma yapmaktan biraz daha iyi sonuçlar sağlayacaktır):

  • GetValue — bir hücrenin değerini alır, veri türünü belirtme seçeneğiyle.
  • SetValue — tek bir hücrenin değerini değiştirir.

Hücre özelliği IEnumerable arayüzünü uyguladığı için bir çalışma sayfasından verilere sorgulama yapmak için Linq kullanılabilir.

İronXL ile Office Open XML Format XLSX'i Açın ve Yazın

IronXL, C# geliştiricilerinin Excel, pivot tabloları ve diğer elektronik tablo dosyalarıyla hızlı ve kolay bir şekilde çalışmasına olanak tanıyan bir NET kütüphanesidir.

Office Interop gerekli değildir. Belirli bir bağımlılık veya Core veya Azure üzerine Microsoft Office yükleme gereksinimi yoktur.

IronXL, .NET core ve .NET framework için ünlü bir C# ve VB.NET xl elektronik tablo kütüphanesidir.

  • Excel Dosyalarını Okuma
  • Yüklenecek Çalışma Sayfası

Bir Excel sayfası WorkBook sınıfı ile temsil edilir. WorkBook kullanarak, içinde pivot tablolar bile içeren bir Excel dosyasını C# ile okuyun. Excel dosyasını yükleyin ve yerini seçin (.xlsx).

/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");

Birçok Çalışma Kitabında WorkSheet nesneleri bulunabilir. Bunlar, Excel belgesinin çalışma sayfalarıdır. Sayfa çalışma sayfaları içeriyorsa, WorkBook ile adlarını bulun GetWorkSheet kullanarak.

var worksheet = workbook.GetWorkSheet("GDPByCountry");
  • Kendi Çalışma Kitaplarınızı Yapın.

Yeni bir Çalışma Kitabı oluşturmak için bellekte yeni bir WorkBook oluşturun.

/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);

Eski Microsoft Excel elektronik tabloları için ExcelFileFormat.XLS kullanın (95 ve öncesi).

Zaten bir Çalışma Sayfanız yoksa bir Çalışma Sayfası yapın.

Her 'Çalışma Kitabı', birden çok 'Çalışma Sayfası' içerebilir. 'Çalışma Sayfası' tek veri tablosu iken, 'Çalışma Kitabı' birden çok Çalışma Sayfasından oluşur. Excel'de bu, iki çalışma sayfası olan bir çalışma kitabının görünümüdür.

WorkBook, oluşturabileceğiniz yeni bir WorkSheet adıdır.

var worksheet = workbook.CreateWorkSheet("Countries");

Çalışma sayfasının adını CreateWorkSheet'a geçirin.

Hücre Aralığını Edinin

İki boyutlu bir 'Cell' nesneleri kümesi, 'Range' sınıfı tarafından temsil edilir. Excel hücrelerinin belirli bir aralığını belirtir. Bir WorkSheet nesnesinde string indeksleyiciyi kullanarak aralıkları elde edebilirsiniz.

var range = worksheet["D2:D101"];

Argüman metni bir hücrenin koordinatı (örneğin, 'A1') veya sol üstten sağ alta bir hücre aralığı (örneğin, 'B2:E5') olabilir. GetRange bir çalışma sayfasından da çağrılabilir.

  • Bir Aralık İçinde, Hücre Değerlerini Düzenleyin

Bir Aralık içindeki hücrelerin değerleri, çeşitli şekillerde okunabilir veya düzenlenebilir. Sayım biliniyorsa bir For döngüsü kullanın. Buradan hücre stillendirmesi de yapabilirsiniz.

/**
 Edit Cell Values in Range
 **/
 // Iterate through the rows
for (var y = 2; y <= 101; y++)
{
    var result = new PersonValidationResult { Row = y };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{y}:E{y}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string) cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}

Elektronik Tablolar İçinde Verileri Doğrulayın

Bir veri sayfasını doğrulamak için IronXL kullanın. DataValidation örneği, telefon numaralarını libphonenumber-C# ile, e-posta adresleri ve tarihleri ise geleneksel C# API'ları ile doğrular.

/**
 Validate Spreadsheet Data
 **/
 // Iterate through the rows
for (var i = 2; i <= 101; i++)
{
    var result = new PersonValidationResult { Row = i };
    results.Add(result);

    // Get all cells for the person
    var cells = worksheet[$"A{i}:E{i}"].ToList();

    // Validate the phone number (1 = B)
    var phoneNumber = cells[1].Value;
    result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, (string)phoneNumber);

    // Validate the email address (3 = D)
    result.EmailErrorMessage = ValidateEmailAddress((string)cells[3].Value);

    // Get the raw date in the format of Month Day [suffix], Year (4 = E)
    var rawDate = (string)cells[4].Value;
    result.DateErrorMessage = ValidateDate(rawDate);
}

Yukarıdaki kod, elektronik tablonun satırlarını dolaşarak hücreleri bir liste olarak alır. Her doğrulanan yöntem bir hücrenin değerini doğrular ve değer yanlışsa bir hata döndürür.

Bu kod, yeni bir sayfa oluşturur, başlıkları belirler ve hatalı bir veri kaydı tutulabilmesi için sonuçları üreten hata mesajlarını oluşturur.

var resultsSheet = workbook.CreateWorkSheet("Results");

resultsSheet["A1"].Value = "Row";
resultsSheet["B1"].Value = "Valid";
resultsSheet["C1"].Value = "Phone Error";
resultsSheet["D1"].Value = "Email Error";
resultsSheet["E1"].Value = "Date Error";

for (var i = 0; i < results.Count; i++)
{
    var result = results[i];
    resultsSheet[$"A{i + 2}"].Value = result.Row;
    resultsSheet[$"B{i + 2}"].Value = result.IsValid ? "Yes" : "No";
    resultsSheet[$"C{i + 2}"].Value = result.PhoneNumberErrorMessage;
    resultsSheet[$"D{i + 2}"].Value = result.EmailErrorMessage;
    resultsSheet[$"E{i + 2}"].Value = result.DateErrorMessage;
}

workbook.SaveAs(@"Spreadsheets\\PeopleValidated.xlsx");

Entity Framework Kullanarak Veri İhraç Edin

IronXL'yi bir Excel elektronik tablosunu bir veritabanına dönüştürmek veya verileri bir veritabanına dışa aktarmak için kullanın. ExcelToDB örneği, ülkeye göre GSYİH içeren bir elektronik tablosunu okur ve bunu SQLite'a aktarır.

Veritabanını EntityFramework ile oluşturur ve ardından veriyi satır satır dışa aktarır.

SQLite Entity Framework NuGet paketleri yüklenmesi gerekir.

Bir veritabanına veri ihraç etmek için kullanılabilecek bir model nesnesi oluşturmak için EntityFramework'ü kullanabilirsiniz.

public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}

Farklı bir veritabanı kullanmak için uygun NuGet paketini yükleyin ve UseSqLite eşdeğerini arayın (UseMySQL, UseSqlServer, vb.).

/**
 Export Data using Entity Framework
 **/
public class CountryContext : DbContext
{
    public DbSet<Country> Countries { get; set; }

    public CountryContext()
    {
        // TODO: Make async
        Database.EnsureCreated();
    }

    /// <summary>
    /// Configure context to use Sqlite
    /// </summary>
    /// <param name="optionsBuilder"></param>
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        var connection = new SqliteConnection($"Data Source=Country.db");
        connection.Open();

        var command = connection.CreateCommand();

        // Create the database if it doesn't already exist
        command.CommandText = $"PRAGMA foreign_keys = ON;";
        command.ExecuteNonQuery();

        optionsBuilder.UseSqlite(connection);

        base.OnConfiguring(optionsBuilder);
    }
}

Bir CountryContext oluşturun, ardından her bir giriş kaydı oluşturarak aralık boyunca yineleyin ve SaveChangesAsync ile veriyi veritabanına kaydedin.

public async Task ProcessAsync()
{
    // Get the first worksheet
    var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
    var worksheet = workbook.GetWorkSheet("GDPByCountry");

    // Create the database connection
    using (var countryContext = new CountryContext())
    {
        // Iterate through all the cells
        for (var i = 2; i <= 213; i++)
        {
            // Get the range from A-B
            var range = worksheet[$"A{i}:B{i}"].ToList();

            // Create a Country entity to be saved to the database
            var country = new Country
            {
                Name = (string)range[0].Value,
                GDP = (decimal)(double)range[1].Value
            };

            // Add the entity
            await countryContext.Countries.AddAsync(country);
        }

        // Commit changes to the database
        await countryContext.SaveChangesAsync();
    }
}

Bir Elektronik Tabloya Formül Ekleyin

Formula özelliği bir hücrenin formülünü ayarlamak için kullanılabilir.

// Iterate through all rows with a value
for (var y = 2; y < i; y++)
{
    // Get the C cell
    var cell = sheet[$"C{y}"].First();

    // Set the formula for the Percentage of Total column
    cell.Formula = $"=B{y}/B{i}";
}

C sütunundaki kod, her eyaleti geçirerek toplam yüzdesini hesaplar.

Bir API'den Veri İndirin ve Elektronik Tabloya Kaydedin

RestClient.Net, aşağıdaki çağrıda bir REST çağrısı yapmak için kullanılmaktadır. JSON'u indirir ve bunu bir RestCountry türü 'List'e dönüştürür. REST API'den veriler daha kolay bir şekilde her ülkeyi dolaşarak bir Excel dosyasına kaydedilebilir.

/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();

API'den JSON verisi şu şekilde görünür:

Aşağıdaki kod, ülkeler üzerinde döner ve elektronik tabloyu Ad, Nüfus, Bölge, SayısalKod ve İlk 3 Dil ile doldurur.

for (var i = 2; i < countries.Count; i++)
{
    var country = countries[i];

    // Set the basic values
    worksheet[$"A{i}"].Value = country.name;
    worksheet[$"B{i}"].Value = country.population;
    worksheet[$"G{i}"].Value = country.region;
    worksheet[$"H{i}"].Value = country.numericCode;

    // Iterate through languages
    for (var x = 0; x < 3; x++)
    {
        if (x > (country.languages.Count - 1)) break;

        var language = country.languages[x];

        // Get the letter for the column
        var columnLetter = GetColumnLetter(4 + x);

        // Set the language name
        worksheet[$"{columnLetter}{i}"].Value = language.name;
    }
}

IronXL ile Excel dosyalarını Açın

Excel dosyasını açtıktan sonra, ilk sayfanın 1. hücresini okuyan ve çıktı veren ilk birkaç satırı ekleyin.

static void Main(string[] args)
{
    var workbook = IronXL.WorkBook.Load($@"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx");
    var sheet = workbook.WorkSheets.First();
    var cell = sheet["A1"].StringValue;
    Console.WriteLine(cell);
}

IronXL kullanarak yeni bir Excel dosyası oluşturun.

/**
 Create Excel File
 **/
static void Main(string[] args)
{
    var newXLFile = WorkBook.Create(ExcelFileFormat.XLSX);
    newXLFile.Metadata.Title = "IronXL New File";
    var newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet");
    newWorkSheet["A1"].Value = "Hello World";
    newWorkSheet["A2"].Style.BottomBorder.SetColor("#ff6600");
    newWorkSheet["A2"].Style.BottomBorder.Type = IronXL.Styles.BorderType.Dashed;
}

Bundan sonra, IronXL kod örneklerinde gösterildiği gibi ilgili kodları kullanarak CSV, JSON veya XML olarak kaydedebilirsiniz.

Örneğin, XML'ye Kaydetmek için .xml

XML'ye kaydetmek için, SaveAsXml şu şekilde kullanın:

newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");

Sonuç şu şekilde görünür:

<?xml version="1.0" standalone="yes"?>
<_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Hello World</Column1>
  </_x0031_stWorkSheet>
  <_x0031_stWorkSheet>
    <Column1 xsi:type="xs:string" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
  </_x0031_stWorkSheet>
</_x0031_stWorkSheet>
XML

IronXL, bir çalışma kitabındaki sütunlara, satırlara ve hücrelere erişmenin genellikle daha az kod satırı gerektirdiği, Excel dosyalarını okumak için daha özlü bir API sağlar.EPPlusise, ince kontrol sağlayan ama üzerine ek yapan, hücre düzeyinde daha ayrıntılı bir API sunar.

IronXL, Excel belgelerini manipüle ederken daha geniş bir esneklik sunar. Herhangi bir zamanda ek sayfalar oluşturmayı, tek bir iş akışında birden fazla çalışma sayfası ve çalışma kitabı üzerinde veri okumayı ve çalışma kitabı verilerini doğrudan bir veritabanına dışa aktarmayı destekler. EPPlus, API'sini bireysel çalışma sayfalarıyla çalışmaya odaklar – tek sayfalık görevler için bu düz bir yaklaşımdır fakat çapraz iş kitabı operasyonlarına ihtiyaç duyan ekipler için ek entegrasyon adımları yaratır.

EPPlus ve IronXL'nin Lisanslama ve Fiyatlandırma Üzerindeki Karşılaştırması Nasıl?

EPPlus Lisans Modeli ve Fiyat

EPPlus, ya ticari olmayan lisans modeli ya da Polyform'dan ticari lisans modeli altında kullanılabilir.

Ticari Lisanslar

Bu lisanslar, bir aydan iki yıla kadar sürelere sahip olup, süresiz ve abonelik tabanlı formatlarda mevcuttur.

Tüm lisanslanma kategorileri için, destek merkezi aracılığıyla destek ve lisans süresi boyunca NuGet ile yükseltmeler dahildir.

EPPlus, her geliştirici için bir lisansa ihtiyaç duyar. Lisanslar tek bir bireye verilir ve paylaşılabilir değildir. Genel bir kılavuz olarak, doğrudanEPPluskullanan veya hata ayıklaması gereken herhangi biri bir ticari lisansa sahip olmalıdır.

EPPlus'ı içsel bir hizmet olarak sağlıyorsanız (örneğin, API aracılığıyla yeteneklerini sunarak), firmanızın hizmeti kullanacak iç kullanıcı (geliştirici) sayısını kapsayan bir abonelik satın alması gerekir.

Abonelikler

Her zaman bir abonelikle en son sürümü kullanabilirsiniz, ancak EPPlus'ı geliştirme için kullandığınız sürece geçerli bir lisansa sahip olmalısınız. Lisans süresinin sonunda, lisans otomatik olarak faturalandırılır ve ödeme yapıldığında yenilenir. Abonelik döneminin sonunda aboneliğinizi iptal edebilir ve istediğiniz zaman yenisini başlatabilirsiniz. Abonelikler sadece internet üzerinden satın alınabilir.

EPPlus ticari bir ortamda kullanılabilir. Lisans şirketteki bir geliştirici için bir lisans sağlar ve sınırsız sayıda dağıtım noktası sunar. Her yıl satın alınabilecek lisans sayısı artırılabilir veya azaltılabilir ve lisans her yılın sonunda askıya alınabilir veya iptal edilebilir.

32 günlük deneme süresi bir seçenek olarak mevcuttur.

Fiyatlandırma: Yıllık $299 ile başlar.

Kullanım Başına Ödeme Yapabilirsiniz

Tek bir kuruluş içindeki geliştirici başına fiyat, sınırsız dağıtım noktası ve Stripe faturalama ile birlikte. Her ay kullanılabilen lisans sayısı artırılabilir veya azaltılabilir ve lisans her ayın sonunda askıya alınabilir veya iptal edilebilir.

Fiyatlandırma: Aylık $29'dan başlar.

Süresiz Lisans

Süresiz bir lisans, yeni sürümlere yükseltme yapmanıza ve belirli bir süre boyunca destek almanıza olanak tanır. Bu süre zarfında yayımlanan sürümleri kullanarak yazılım geliştirmeye lisansınızı yenilemenize gerek kalmadan devam edebilirsiniz.

Aynı firmada, sınırsız dağıtım siteleri ile geliştirici başına fiyat. Destek/yükseltme süresince yayınlanmış tümEPPlussürümlerinin süresiz kullanımı.

32 günlük deneme süresi bir seçenek olarak mevcuttur.

Fiyatlandırma: Yıllık $599 ile başlar.

Paketler

Başlangıç yükseltme ve destek süresi ile süresiz lisans seçenekleri mevcuttur. Bu süre zarfında yayımlanan sürümleri kullanarak yazılım geliştirmeye lisansınızı yenilemenize gerek kalmadan devam edebilirsiniz.

Fiyatlandırma: Yıllık $4,295 ile başlar.

Polyform için Ticari Olmayan Lisans

EPPlus, 5. sürümden itibaren Polyform Ticari Olmayan Lisans altında lisanslanmıştır, bu da kodun açık kaynak olduğunu ve ticari olmayan kullanım için kullanılabildiğini gösterir. Web sitelerinden daha fazla ayrıntıya ulaşabilirsiniz.

IronXL Lisans Modeli ve Fiyat

Süresiz Lisanslama: her lisans bir kez satın alınır ve yenileme gerektirmez.

Ücretsiz Destek & Ürün Güncellemeleri: Her lisans, ürünün arkasındaki ekipten bir yıl boyunca ücretsiz ürün güncellemeleri ve destek ile birlikte gelir. İstediğiniz zaman uzantı satın almak mümkündür. Ekstralar görüntülenebilir.

Acil Lisanslar: Kayıtlı lisans anahtarları ödeme alındığında hemen gönderilir.

IronXL for .NET lisanslaması hakkında herhangi bir sorunuz varsa lütfen Iron Software lisans uzmanlarımızla iletişime geçin.

Tüm lisanslar süreli değildir ve geliştirme, geçiş ve üretim ortamlarına uygulanır.

Lite - Tek bir yazılım geliştiricinin bir organizasyonda Iron Software'yi tek bir yerde kullanmasını sağlar. Iron Software, tek bir web uygulaması, intranet uygulaması veya masaüstü yazılım programı içinde kullanılabilir. Lisanslar devredilemez ve bir organizasyon veya bir ajans/müşteri ilişkisi dışında paylaşılamaz. Diğer tüm lisans türleri gibi bu lisans türü, Anlaşmada açıkça verilmemiş tüm hakları açıkça hariç tutar, OEM yeniden dağıtımı ve ek kapsam satın almadan Iron Software'yi SaaS olarak kullanmayı içermektedir.

Fiyatlandırma: $999'dan başlar.

Professional Lisansı - Bir organizasyonda önceden belirlenmiş bir sayıda yazılım geliştiricinin tek bir yerde Iron Software'yi kullanmasına olanak tanır, en fazla on adede kadar. Iron Software, istediğiniz kadar web sitesi, intranet uygulaması veya masaüstü yazılım uygulaması içinde kullanılabilir. Lisanslar devredilemez ve organizasyon veya bir ajans/müşteri ilişkisi dışındaki kişilerle paylaşılmamalıdır. Bu lisans türü, diğer tüm lisans türleri gibi, Sözleşme kapsamında açıkça verilmemiş bütün hakları, OEM yeniden dağıtımı olmaksızın ve Iron Software'i bir SaaS olarak ek kapsama alanı satın alınmadığı sürece açıkça hariç tutar.

Fiyatlandırma: $2,399'den başlar.

Sınırsız Lisans - Bir organizasyonda sınırsız sayıda yazılım geliştiricinin sınırsız sayıda yerde Iron Software'yi kullanmasına olanak tanır. Iron Software, istediğiniz kadar web sitesi, intranet uygulaması veya masaüstü yazılım uygulaması içinde kullanılabilir. Lisanslar devredilemez ve organizasyon veya bir ajans/müşteri ilişkisi dışındaki kişilerle paylaşılmamalıdır. Bu lisans türü, diğer tüm lisans türleri gibi, Sözleşme kapsamında açıkça verilmemiş bütün hakları, OEM yeniden dağıtımı olmaksızın ve Iron Software'i bir SaaS olarak ek kapsama alanı satın alınmadığı sürece açıkça hariç tutar.

Telif Ücretsiz Yeniden Dağıtım - Temel lisans kapsamında veya lisans ödemeden çeşitli paketlenmiş ticari ürünlerin bir parçası olarak Iron Software'yi dağıtmanıza olanak tanır. Iron Software'yi SaaS yazılım hizmetleri içinde temel lisans tarafından kapsanan proje sayısına göre konuşlandırmanıza olanak tanır.

Fiyatlandırma: $4,799'den başlar.

Lisans maliyetinin ötesinde, toplam proje maliyeti, kütüphanenin yerel olarak ele almadığı biçimler için ek dışa aktarma mantığı yazma için geliştirici saatlerini, JSON ve XML gibi formatlar için elle veritabanı entegrasyon hatlarını oluşturmayı ve çoklu çalışma kitabı orkestrasyonunu yönetmeyi içerir. Çok yıllı bir proje yaşam döngüsünde maliyeti değerlendiren ekipler için, bu entegrasyon ve bakım maliyetleri sıklıkla lisanslama modelleri arasındaki farkı aşmaktadır.

Hangi Kütüphaneyi Seçmelisiniz?

EPPlus, Office Open XML elektronik tablolarıyla çalışmak için sağlam ve iyi kurulmuş bir API sunar ve ince hücre düzeyi kontrolü, hassas çalışma sayfası manipülasyonu gerektiren projelere uygundur. Gereksinimleri çoklu format dışa aktarma (XML, HTML, JSON), çapraz çalışma kitabı işlemleri ve veritabanı entegrasyonuna uzanan ekipler için,IronXL bu yetenekleri birinci sınıf işlemler olarak ekler.IronXL ayrıca her belge düzenlendiğinde formülleri yeniden hesaplar ve WorkSheet[“A1:B10”] ile sezgisel bir aralık sözdizimi sunar. Hücre veri formatları metin, sayılar, formüller, tarihler, para birimi, yüzdeler, bilimsel gösterim ve saati kapsarken, hücre stillendirmeleri yazı tipleri, boyutlar, arka plan desenleri, kenarlıklar ve hizalamaları kapsar. Sıralama, aralıklar, sütunlar ve satırlar genelinde mevcuttur. İkisi arasında nihai seçim, projenizin EPPlus'ın odaklı Open XML işlemesine mi yoksa IronXL'nin daha geniş özellik yüzey alanına mı ihtiyaç duyduğuna bağlıdır. IronXL'nin iş akışınıza nasıl uyduğunu görmek için 30 günlük ücretsiz deneme sürümünü indirin ve bu makalenin örneklerini kendi ortamınızda deneyin.

Lütfen dikkate alın: EPPlus, ilgili sahibine kayıtlı bir ticari markadır. Bu site,EPPlusile ilgili değildir, onaylanmamıştır veya bunun tarafından sponsor edilmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.
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ılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez