Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

IronXL ve Epplus karsilastirmasi

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:

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.

Epplus Read Create Excel Alternative 1 related to IronXL'yi NuGet Paketi Kullanarak Ekleme

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

Install-Package IronXL.Excel
Epplus Read Create Excel Alternative 2 related to IronXL'yi NuGet Paketi Kullanarak Ekleme
  • 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:

Epplus Read Create Excel Alternative 3 related to IronXL'yi NuGet Paketi Kullanarak Ekleme

İ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:

Özellik EPPlus IronXL
XLSX dosyalarını okuyun Evet Evet
XLSX dosyaları oluşturun Evet Evet
XLS formatı desteği Hayır Evet
CSV, JSON, XML olarak dışa aktar Sadece CSV CSV, JSON, XML
Veritabanı dışa aktarımı (Entity Framework) Dahil değil Evet
Veri doğrulama yardımcıları Dahil değil Evet
Çoklu çalışma kitabı işlemleri Tek çalışma sayfası odaklı Çoklu çalışma sayfası ve çoklu çalışma kitabı
Lisanslama Ticari veya Polyform Ticari Olmayan Ticari (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);
// Create a new Excel workbook in XLSX format
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
' Create a new Excel workbook in XLSX format
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
$vbLabelText   $csharpLabel

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");
// Create a worksheet named "2020 Budget" in the workbook
var sheet = workbook.CreateWorkSheet("2020 Budget");
' Create a worksheet named "2020 Budget" in the workbook
Dim sheet = workbook.CreateWorkSheet("2020 Budget")
$vbLabelText   $csharpLabel

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);
}
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);
}
Public Function ConvertToXLSX() As ActionResult
	Dim fileData() As Byte = Nothing

	' Replace the GetDataTable() method with your DBMS-fetching code.
	Using dt As DataTable = GetDataTable()
		' Create an empty spreadsheet
		Using p = New ExcelPackage()
			' Add a worksheet to the spreadsheet
			Dim ws As ExcelWorksheet = p.Workbook.Worksheets.Add(dt.TableName)

			' Initialize rows and columns counter: note that they are 1-based!
			Dim row = 1
			Dim 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
			For Each dc As DataColumn In dt.Columns
				col += 1
				ws.SetValue(row, col, dc.ColumnName)
			Next dc

			' Insert the DataTable rows into the XLS file
			For Each r As DataRow In dt.Rows
				row += 1
				col = 0
				For Each dc As DataColumn In dt.Columns
					col += 1
					ws.SetValue(row, col, r(dc).ToString())
				Next dc

				' Alternate light-gray color for uneven rows (3, 5, 7, 9)...
				If row Mod 2 <> 0 Then
					ws.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid
					ws.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightGray)
				End If
			Next r

			' Output the XLSX file
			Using ms = New MemoryStream()
				p.SaveAs(ms)
				ms.Seek(0, SeekOrigin.Begin)
				fileData = ms.ToArray()
			End Using
		End Using
	End Using

	Dim fileName As String = "ConvertedFile.xlsx"
	Dim contentType As String = System.Web.MimeMapping.GetMimeMapping(fileName)
	Response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileName))
	Return File(fileData, contentType)
End Function
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 4 related to EPPlus Software AB'nin Excel Dosyaları Yazma Yöntemi

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());
                    }
                }
            }
        }
    }
}
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());
                    }
                }
            }
        }
    }
}
Imports OfficeOpenXml
Imports System
Imports System.IO

Namespace ReadExcelInCsharp
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Provide file path
			Dim existingFile As New FileInfo("D:\sample_XLSX.xlsx")
			' Use EPPlus
			Using package As New ExcelPackage(existingFile)
				' Get the first worksheet in the workbook
				Dim worksheet As ExcelWorksheet = package.Workbook.Worksheets(1)
				Dim colCount As Integer = worksheet.Dimension.End.Column ' Get Column Count
				Dim rowCount As Integer = worksheet.Dimension.End.Row ' Get row count
				For row As Integer = 1 To rowCount
					For col As Integer = 1 To colCount
						' Print data, based on row and columns position
						Console.WriteLine("Row:" & row & " Column:" & col & " Value:" & worksheet.Cells(row, col).Value?.ToString().Trim())
					Next col
				Next row
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 5 related to EPPlus Software AB'nin Excel Dosyaları Yazma Yöntemi

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"},
};
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"},
};
Dim persons As New List(Of UserDetails)() From {
	New UserDetails() With {
		.ID="9999",
		.Name="ABCD",
		.City ="City1",
		.Country="USA"
	},
	New UserDetails() With {
		.ID="8888",
		.Name="PQRS",
		.City ="City2",
		.Country="INDIA"
	},
	New UserDetails() With {
		.ID="7777",
		.Name="XYZZ",
		.City ="City3",
		.Country="CHINA"
	},
	New UserDetails() With {
		.ID="6666",
		.Name="LMNO",
		.City ="City4",
		.Country="UK"
	}
}
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 6 related to EPPlus Software AB'nin Excel Dosyaları Yazma Yöntemi

İş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();
    }
}
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();
    }
}
Private Shared Sub WriteToExcel(ByVal path As String)
	' Let use below test data for writing it to excel
	Dim persons As New List(Of UserDetails)() From {
		New UserDetails() With {
			.ID="9999",
			.Name="ABCD",
			.City ="City1",
			.Country="USA"
		},
		New UserDetails() With {
			.ID="8888",
			.Name="PQRS",
			.City ="City2",
			.Country="INDIA"
		},
		New UserDetails() With {
			.ID="7777",
			.Name="XYZZ",
			.City ="City3",
			.Country="CHINA"
		},
		New UserDetails() With {
			.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. 
	Dim table As DataTable = CType(JsonConvert.DeserializeObject(JsonConvert.SerializeObject(persons), (GetType(DataTable))), DataTable)
	Dim filePath As New FileInfo(path)
	Using excelPack = New ExcelPackage(filePath)
		Dim ws = excelPack.Workbook.Worksheets.Add("WriteTest")
		ws.Cells.LoadFromDataTable(table, True, OfficeOpenXml.Table.TableStyles.Light8)
		excelPack.Save()
	End Using
End Sub
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 7 related to EPPlus Software AB'nin Excel Dosyaları Yazma Yöntemi

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");
/**
 Load WorkBook
 **/
var workbook = WorkBook.Load(@"Spreadsheets\\GDP.xlsx");
'''
''' Load WorkBook
''' *
Dim workbook = WorkBook.Load("Spreadsheets\\GDP.xlsx")
$vbLabelText   $csharpLabel

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");
var worksheet = workbook.GetWorkSheet("GDPByCountry");
Dim worksheet = workbook.GetWorkSheet("GDPByCountry")
$vbLabelText   $csharpLabel
  • 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);
/**
 Create WorkBook
 **/
var workbook = new WorkBook(ExcelFileFormat.XLSX);
'''
''' Create WorkBook
''' *
Dim workbook As New WorkBook(ExcelFileFormat.XLSX)
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 8 related to İronXL ile Office Open XML Format XLSX'i Açın ve Yazın

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

var worksheet = workbook.CreateWorkSheet("Countries");
var worksheet = workbook.CreateWorkSheet("Countries");
Dim worksheet = workbook.CreateWorkSheet("Countries")
$vbLabelText   $csharpLabel

Ç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"];
var range = worksheet["D2:D101"];
Dim range = worksheet("D2:D101")
$vbLabelText   $csharpLabel

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);
}
/**
 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);
}
'''
''' Edit Cell Values in Range
''' *
 ' Iterate through the rows
For y = 2 To 101
	Dim result = New PersonValidationResult With {.Row = y}
	results.Add(result)

	' Get all cells for the person
	Dim cells = worksheet($"A{y}:E{y}").ToList()

	' Validate the phone number (1 = B)
	Dim phoneNumber = cells(1).Value
	result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, CStr(phoneNumber))

	' Validate the email address (3 = D)
	result.EmailErrorMessage = ValidateEmailAddress(CStr(cells(3).Value))

	' Get the raw date in the format of Month Day [suffix], Year (4 = E)
	Dim rawDate = CStr(cells(4).Value)
	result.DateErrorMessage = ValidateDate(rawDate)
Next y
$vbLabelText   $csharpLabel

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);
}
/**
 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);
}
'''
''' Validate Spreadsheet Data
''' *
 ' Iterate through the rows
For i = 2 To 101
	Dim result = New PersonValidationResult With {.Row = i}
	results.Add(result)

	' Get all cells for the person
	Dim cells = worksheet($"A{i}:E{i}").ToList()

	' Validate the phone number (1 = B)
	Dim phoneNumber = cells(1).Value
	result.PhoneNumberErrorMessage = ValidatePhoneNumber(phoneNumberUtil, CStr(phoneNumber))

	' Validate the email address (3 = D)
	result.EmailErrorMessage = ValidateEmailAddress(CStr(cells(3).Value))

	' Get the raw date in the format of Month Day [suffix], Year (4 = E)
	Dim rawDate = CStr(cells(4).Value)
	result.DateErrorMessage = ValidateDate(rawDate)
Next i
$vbLabelText   $csharpLabel

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");
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");
Dim 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 i = 0 To results.Count - 1
	Dim result = results(i)
	resultsSheet($"A{i + 2}").Value = result.Row
	resultsSheet($"B{i + 2}").Value = If(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
Next i

workbook.SaveAs("Spreadsheets\\PeopleValidated.xlsx")
$vbLabelText   $csharpLabel

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.

Epplus Read Create Excel Alternative 9 related to İronXL ile Office Open XML Format XLSX'i Açın ve Yazın

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; }
}
public class Country
{
    [Key]
    public Guid Key { get; set; }
    public string Name { get; set; }
    public decimal GDP { get; set; }
}
Public Class Country
	<Key>
	Public Property Key() As Guid
	Public Property Name() As String
	Public Property GDP() As Decimal
End Class
$vbLabelText   $csharpLabel

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);
    }
}
/**
 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);
    }
}
'''
''' Export Data using Entity Framework
''' *
Public Class CountryContext
	Inherits DbContext

	Public Property Countries() As DbSet(Of Country)

	Public Sub New()
		' TODO: Make async
		Database.EnsureCreated()
	End Sub

	''' <summary>
	''' Configure context to use Sqlite
	''' </summary>
	''' <param name="optionsBuilder"></param>
	Protected Overrides Sub OnConfiguring(ByVal optionsBuilder As DbContextOptionsBuilder)
		Dim connection = New SqliteConnection($"Data Source=Country.db")
		connection.Open()

		Dim command = connection.CreateCommand()

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

		optionsBuilder.UseSqlite(connection)

		MyBase.OnConfiguring(optionsBuilder)
	End Sub
End Class
$vbLabelText   $csharpLabel

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();
    }
}
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();
    }
}
Public Async Function ProcessAsync() As Task
	' Get the first worksheet
	Dim workbook = WorkBook.Load("Spreadsheets\\GDP.xlsx")
	Dim worksheet = workbook.GetWorkSheet("GDPByCountry")

	' Create the database connection
	Using countryContext As New CountryContext()
		' Iterate through all the cells
		For i = 2 To 213
			' Get the range from A-B
			Dim range = worksheet($"A{i}:B{i}").ToList()

			' Create a Country entity to be saved to the database
			Dim country As New Country With {
				.Name = CStr(range(0).Value),
				.GDP = CDec(CDbl(range(1).Value))
			}

			' Add the entity
			Await countryContext.Countries.AddAsync(country)
		Next i

		' Commit changes to the database
		Await countryContext.SaveChangesAsync()
	End Using
End Function
$vbLabelText   $csharpLabel

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}";
}
// 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}";
}
' Iterate through all rows with a value
Dim y = 2
Do While y < i
	' Get the C cell
	Dim cell = sheet($"C{y}").First()

	' Set the formula for the Percentage of Total column
	cell.Formula = $"=B{y}/B{i}"
	y += 1
Loop
$vbLabelText   $csharpLabel

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>>();
/**
 Data API to Spreadsheet
 **/
var client = new Client(new Uri("https://restcountries.eu/rest/v2/"));
List<RestCountry> countries = await client.GetAsync<List<RestCountry>>();
'''
''' Data API to Spreadsheet
''' *
Dim client As New Client(New Uri("https://restcountries.eu/rest/v2/"))
Dim countries As List(Of RestCountry) = Await client.GetAsync(Of List(Of RestCountry))()
$vbLabelText   $csharpLabel

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

Epplus Read Create Excel Alternative 10 related to İronXL ile Office Open XML Format XLSX'i Açın ve Yazın

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;
    }
}
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;
    }
}
For i = 2 To countries.Count - 1
	Dim 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 x = 0 To 2
		If x > (country.languages.Count - 1) Then
			Exit For
		End If

		Dim language = country.languages(x)

		' Get the letter for the column
		Dim columnLetter = GetColumnLetter(4 + x)

		' Set the language name
		worksheet($"{columnLetter}{i}").Value = language.name
	Next x
Next i
$vbLabelText   $csharpLabel

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);
}
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);
}
Shared Sub Main(ByVal args() As String)
	Dim workbook = IronXL.WorkBook.Load($"{Directory.GetCurrentDirectory()}\Files\HelloWorld.xlsx")
	Dim sheet = workbook.WorkSheets.First()
	Dim cell = sheet("A1").StringValue
	Console.WriteLine(cell)
End Sub
$vbLabelText   $csharpLabel

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;
}
/**
 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;
}
'''
''' Create Excel File
''' *
Shared Sub Main(ByVal args() As String)
	Dim newXLFile = WorkBook.Create(ExcelFileFormat.XLSX)
	newXLFile.Metadata.Title = "IronXL New File"
	Dim newWorkSheet = newXLFile.CreateWorkSheet("1stWorkSheet")
	newWorkSheet("A1").Value = "Hello World"
	newWorkSheet("A2").Style.BottomBorder.SetColor("#ff6600")
	newWorkSheet("A2").Style.BottomBorder.Type = IronXL.Styles.BorderType.Dashed
End Sub
$vbLabelText   $csharpLabel

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");
newXLFile.SaveAsXml($@"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML");
newXLFile.SaveAsXml($"{Directory.GetCurrentDirectory()}\Files\HelloWorldXML.XML")
$vbLabelText   $csharpLabel

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 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,999'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: $5,999'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ınEPPlus, 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.

Sıkça Sorulan Sorular

Microsoft Office kullanmadan Excel dosyalarını nasıl oluşturabilirim?

IronXL'yi Microsoft Office olmadan Excel dosyaları oluşturmak için kullanabilirsiniz. IronXL, C# ve VB.NET içinde Excel elektronik tablolarını okumak, düzenlemek ve oluşturmak için basit bir API sunar.

IronXL'nin EPPlus üzerinde kullanmanın avantajları nedir?

IronXL, daha sezgisel bir API sunar ve XML, HTML, JSON gibi çeşitli dosya formatlarını destekler ve gelişmiş stil ve formül yeniden hesaplama olanakları tanır. Bu, EPPlus'a kıyasla geliştiriciler için daha pratik ve esnek kılar.

Excel verilerini IronXL kullanarak farklı formatlara aktarmak mümkün mü?

Evet, IronXL, XML, HTML ve JSON gibi çeşitli formatlara Excel verilerini aktarmayı destekler, veritabanları ve diğer uygulamalarla kolay entegrasyon sağlar.

IronXL ile Excel formüllerini nasıl yönetirsiniz?

IronXL, formül yeniden hesaplamalarını sezgisel bir şekilde destekler, böylece belge her düzenlendiğinde formüller otomatik olarak güncellenir, Excel formüllerini yönetmek için verimli bir sistem sunar.

IronXL'nin hangi lisanslama seçenekleri var?

IronXL, geliştirme, hazırlık ve üretim ortamları için süresiz lisanslar sunar ve tek bir geliştirici için yılda 489 dolardan başlayan fiyatlarla ücretlendirilir. Bir yıl ücretsiz güncelleştirme ve destek içerir.

EPPlus, pivot tablolar oluşturma ve koşullu biçimlendirme uygulamak için kullanılabilir mi?

Evet, EPPlus pivot tablolar oluşturmayı ve koşullu biçimlendirme uygulamayı destekler, ancak genellikle IronXL'den daha karmaşık bir kod gerektirir.

IronXL, çapraz platform geliştirmeyi nasıl destekler?

IronXL .NET Core, .NET Framework, Xamarin, Mobil, Linux, macOS ve Azure gibi birçok platformu destekler, bu da onu çapraz platform geliştirmede çok yönlü kılar.

IronXL sunucu veya müşteri makinesinde Microsoft Office yüklü olmasını gerektiriyor mu?

Hayır, IronXL Microsoft Office'in yüklü olmasını gerektirmez. Office'ten bağımsız olarak çalışacak şekilde tasarlanmıştır, Excel dosyalarını okuma, düzenleme ve oluşturma yetenekleri sağlar.

EPPlus'ın Excel dosyalarını işlemek için temel özellikleri nelerdir?

EPPlus, Office OpenXML desteği, Excel ile tanıdık olan geliştiriciler için kullanım kolaylığı ve pivot tablolar yaratma ve koşullu biçimlendirme uygulama gibi yetenekleriyle bilinir. İkili lisanslama modeli altında mevcuttur.

IronXL'yi .NET projem için nasıl kurabilirim?

NuGet Paket Yöneticisi Konsolu'nu kullanarak Install-Package IronXL.Excel komutuyla veya .NET CLI kullanarak dotnet add package IronXL.Excel ile IronXL'yi kurabilirsiniz.

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