Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN
NPOI vs IronXL Karşılaştırması

IronXL ile NPOI'nin Karşılaştırılması

IronXL ve NPOI her ikisi de Office.Interop olmadan çalışan .NET Excel kütüphaneleridir — Microsoft Excel yüklemesi gerekmez. Bu karşılaştırma, geliştiricilerin en sık karşılaştığı işlemler için kod örnekleriyle Excel dosyalarını okuma, yazma ve değiştirme için API'lerini kapsar.

NPOI nedir?

NPOI is the .NET version of the POI Java project at http://poi.apache.org/. POI, xls, doc, ppt dosyalarını okuyabilen/yazabilen açık kaynaklı bir projedir. Çok geniş bir uygulama alanına sahiptir.

Örneğin, bunu kullanarak:

  • Sunucunuzda Microsoft Office suite kurulumu olmadan bir Excel raporu oluşturabilir ve Microsoft Excel ActiveX'i arka planda çağırmaktan daha verimli çalışabilirsiniz.
  • Tam metin indeksleme özelliğini uygulamanıza yardımcı olacak şekilde Office belgelerinden metin çıkartabilirsiniz (çoğu zaman bu özellik arama motorları oluşturmak için kullanılır).
  • Office belgelerinden resim çıkartabilirsiniz.
  • Formüller içeren Excel sayfaları oluşturabilirsiniz.

NPOI ve Excel

NPOI is a C# port of the POI Java project by Apache. Ücretsiz ve açık kaynaklıdır. Ayrıca, Interop'a ihtiyaç duymaz, bu da kullanıcıların Excel yüklemelerine gerek kalmadan geliştiricinin uygulamasının çalışabileceği anlamına gelir.

IronXL ve Excel

IronXL, VB ve C# için bir Excel API'sidir. IronXL ile .NET'te Excel elektronik tablo dosyalarını okuyabilir, düzenleyebilir ve oluşturabilirsiniz.

NPOI ve IronXL Nasıl Karşılaştırılır?

NPOI IronXL
Hücre Aralıkları Hücre Aralıkları
Hücre stilleri (Kenar, Renk, Dolgu, Yazı Tipi, Numaralar, Hizalamalar) Hücre görsel stilleri Yazı Tipi, Boyut, Arka Plan deseni, Kenar, Hizalama ve Numaralama formatları.
Formül Hesaplama Formüller
Veri Doğrulama Veri Doğrulama
Koşullu biçimlendirme Koşullu biçimlendirme
Görseller Görseller
Grafikler Grafikler

**Tablo 1** - Özellik Karşılaştırması

IronXL'yi NPOI alternatifi olarak değerlendiren ekipler, ücretsiz 30 günlük deneme ile tam API'yi test edebilir.


IronXL ve NPOI Kurulumu

Her iki kütüphaneyi de manuel olarak indirerek, NuGet ile veya Visual Studio'da NuGet Paket Yöneticisi ile yükleyebilirsiniz. İşte hızlı bir genel bakış; IronXL başlarken kılavuzu için adım adım yürütmeyi inceleyin.

NPOI Kurulumu

NuGet ile NPOI Kurulumu

NPOI'yi NuGet üzerinden yüklemek için Visual Studio geliştirici komut istemcisini açın ve şu kodu girin:

Install-Package NPOI -Version x.x.x
Graphical user interfaceDescription automatically generated

Şekil 1 - NuGet NPOI Kurulumu

Visual Studio NuGet Paket Yöneticisi ve NPOI

Visual Studio'da NuGet Paket Yöneticisi aracılığıyla IronXL veya NPOI'yi yüklemek için şu adımları kullanın:

  • Çözüm Gezgini'nde projeye sağ tıklayın
  • NuGet Paketlerini Yönet'i seçin
  • Paket için göz atın
  • Yükle'ye tıklayın
A screenshot of a computerDescription automatically generated

Şekil 2 - NPOI için NuGet Paket Yöneticisi

IronXL Kurulumu

IronXL İndirme

To download IronXL, navigate to the following URL and click the "Download" button.

Download IronXL

Şekil 3 - IronXL İndir

NuGet ile IronXL Kurulumu

IronXL'yi NuGet aracılığıyla kurmak için, Visual Studio geliştirici komut istemini açın ve aşağıdakini girin:

Install-Package IronXl.Excel -Version x.x.x
NuGet IronXL Installation

Şekil 4 - NuGet IronXL Kurulumu

Visual Studio NuGet Paket Yöneticisi ve IronXL

Visual Studio'da NuGet Paket Yöneticisi aracılığıyla IronXL'yi yüklemek için şu adımları kullanın:

  • Çözüm Gezgini'nde projeye sağ tıklayın
  • NuGet Paketlerini Yönet'i seçin
  • Paket için göz atın
  • Yükle'ye tıklayın
A screenshot of a computerDescription automatically generated

Şekil 5 - IronXL için NuGet Paket Yöneticisi

Bir Excel dosyasından okuma ve yazma NPOI ve IronXL ile

NPOI ile bir Excel dosyasını okuma

Aşağıdaki kod, bir Excel dosyasını nasıl okuyacağınızı ve içeriğini NPOI ile nasıl göstereceğinizi gösterir. Aşağıdaki kodu ekleyin ve gerekli namespaces'i dahil edin:

using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Data;
using System.IO;
using System.Collections.Generic;
Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
Imports System.Data
Imports System.IO
Imports System.Collections.Generic
$vbLabelText   $csharpLabel

Aşağıdaki kod, var olan bir Excel dosyasını okur ve bir veri ızgara görünümünde gösterir.

public void ReadExcelNPOI()
{
    DataTable dtTable = new DataTable();
    List<string> lstRows = new List<string>();
    ISheet objWorksheet;
    string strPath = @"c:\temp\NPOI_Test.XLSX";

    // Use FileStream to open the Excel file
    using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        fStream.Position = 0;
        XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
        objWorksheet = objWorkbook.GetSheetAt(0);
        IRow objHeader = objWorksheet.GetRow(0);
        int countCells = objHeader.LastCellNum;

        // Add columns to the DataTable based on the header row of Excel
        for (int j = 0; j < countCells; j++)
        {
            ICell objCell = objHeader.GetCell(j);
            if (objCell == null || string.IsNullOrWhiteSpace(objCell.ToString())) continue;
            {
                dtTable.Columns.Add(objCell.ToString());
            }
        }

        // Add rows to the DataTable, looping through each row and cell
        for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
        {
            IRow objRow = objWorksheet.GetRow(i);
            if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;

            for (int j = objRow.FirstCellNum; j < countCells; j++)
            {
                ICell cell = objRow.GetCell(j);
                if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
                {
                    lstRows.Add(cell.ToString());
                }
            }

            if (lstRows.Count > 0)
                dtTable.Rows.Add(lstRows.ToArray());

            lstRows.Clear();
        }
    }

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}

private void button1_Click(object sender, EventArgs e)
{
    ReadExcelNPOI();
}
public void ReadExcelNPOI()
{
    DataTable dtTable = new DataTable();
    List<string> lstRows = new List<string>();
    ISheet objWorksheet;
    string strPath = @"c:\temp\NPOI_Test.XLSX";

    // Use FileStream to open the Excel file
    using (var fStream = new FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        fStream.Position = 0;
        XSSFWorkbook objWorkbook = new XSSFWorkbook(fStream);
        objWorksheet = objWorkbook.GetSheetAt(0);
        IRow objHeader = objWorksheet.GetRow(0);
        int countCells = objHeader.LastCellNum;

        // Add columns to the DataTable based on the header row of Excel
        for (int j = 0; j < countCells; j++)
        {
            ICell objCell = objHeader.GetCell(j);
            if (objCell == null || string.IsNullOrWhiteSpace(objCell.ToString())) continue;
            {
                dtTable.Columns.Add(objCell.ToString());
            }
        }

        // Add rows to the DataTable, looping through each row and cell
        for (int i = (objWorksheet.FirstRowNum + 1); i <= objWorksheet.LastRowNum; i++)
        {
            IRow objRow = objWorksheet.GetRow(i);
            if (objRow == null || objRow.Cells.All(d => d.CellType == CellType.Blank)) continue;

            for (int j = objRow.FirstCellNum; j < countCells; j++)
            {
                ICell cell = objRow.GetCell(j);
                if (cell != null && !string.IsNullOrEmpty(cell.ToString()) && !string.IsNullOrWhiteSpace(cell.ToString()))
                {
                    lstRows.Add(cell.ToString());
                }
            }

            if (lstRows.Count > 0)
                dtTable.Rows.Add(lstRows.ToArray());

            lstRows.Clear();
        }
    }

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}

private void button1_Click(object sender, EventArgs e)
{
    ReadExcelNPOI();
}
Public Sub ReadExcelNPOI()
	Dim dtTable As New DataTable()
	Dim lstRows As New List(Of String)()
	Dim objWorksheet As ISheet
	Dim strPath As String = "c:\temp\NPOI_Test.XLSX"

	' Use FileStream to open the Excel file
	Using fStream = New FileStream(strPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
		fStream.Position = 0
		Dim objWorkbook As New XSSFWorkbook(fStream)
		objWorksheet = objWorkbook.GetSheetAt(0)
		Dim objHeader As IRow = objWorksheet.GetRow(0)
		Dim countCells As Integer = objHeader.LastCellNum

		' Add columns to the DataTable based on the header row of Excel
		For j As Integer = 0 To countCells - 1
			Dim objCell As ICell = objHeader.GetCell(j)
			If objCell Is Nothing OrElse String.IsNullOrWhiteSpace(DirectCast(objCell, Object).ToString()) Then
				Continue For
			End If
			If True Then
				dtTable.Columns.Add(DirectCast(objCell, Object).ToString())
			End If
		Next j

		' Add rows to the DataTable, looping through each row and cell
		For i As Integer = (objWorksheet.FirstRowNum + 1) To objWorksheet.LastRowNum
			Dim objRow As IRow = objWorksheet.GetRow(i)
			If objRow Is Nothing OrElse objRow.Cells.All(Function(d) d.CellType = CellType.Blank) Then
				Continue For
			End If

			For j As Integer = objRow.FirstCellNum To countCells - 1
				Dim cell As ICell = objRow.GetCell(j)
				If cell IsNot Nothing AndAlso Not String.IsNullOrEmpty(DirectCast(cell, Object).ToString()) AndAlso Not String.IsNullOrWhiteSpace(DirectCast(cell, Object).ToString()) Then
					lstRows.Add(DirectCast(cell, Object).ToString())
				End If
			Next j

			If lstRows.Count > 0 Then
				dtTable.Rows.Add(lstRows.ToArray())
			End If

			lstRows.Clear()
		Next i
	End Using

	' Assuming dataGridView1 is a DataGridView control on a Form
	dataGridView1.DataSource = dtTable
End Sub

Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
	ReadExcelNPOI()
End Sub
$vbLabelText   $csharpLabel

IronXL ile bir Excel dosyasını okuma

Aşağıdaki kod, bir Excel dosyasını nasıl okuyacağınızı ve içeriklerini IronXL ile nasıl bir veri ızgara görünümünde göstereceğinizi gösterir. Daha fazla IronXL kod örnekleri için belgelere bakın. Aşağıdaki kodu ekleyin ve namespace'i dahil edin:

using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
$vbLabelText   $csharpLabel

IronXL'nin dahil edilmesine dikkat edin. Bu, IronXL'nin çalışması için gereklidir. Birkaç satır daha ekleyin:

private void button2_Click(object sender, EventArgs e)
{
    // Load the Excel workbook
    string strPath = @"c:\temp\NPOI_Test.XLSX";
    WorkBook workbook = WorkBook.Load(strPath);

    // Access the default worksheet
    WorkSheet sheet = workbook.DefaultWorkSheet;

    // Convert the worksheet to a DataTable
    var dtTable = sheet.ToDataTable(true);

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}
private void button2_Click(object sender, EventArgs e)
{
    // Load the Excel workbook
    string strPath = @"c:\temp\NPOI_Test.XLSX";
    WorkBook workbook = WorkBook.Load(strPath);

    // Access the default worksheet
    WorkSheet sheet = workbook.DefaultWorkSheet;

    // Convert the worksheet to a DataTable
    var dtTable = sheet.ToDataTable(true);

    // Assuming dataGridView1 is a DataGridView control on a Form
    dataGridView1.DataSource = dtTable;
}
Private Sub button2_Click(ByVal sender As Object, ByVal e As EventArgs)
	' Load the Excel workbook
	Dim strPath As String = "c:\temp\NPOI_Test.XLSX"
	Dim workbook As WorkBook = WorkBook.Load(strPath)

	' Access the default worksheet
	Dim sheet As WorkSheet = workbook.DefaultWorkSheet

	' Convert the worksheet to a DataTable
	Dim dtTable = sheet.ToDataTable(True)

	' Assuming dataGridView1 is a DataGridView control on a Form
	dataGridView1.DataSource = dtTable
End Sub
$vbLabelText   $csharpLabel

Gördüğünüz gibi, IronXL okuma ve gösterme işlemini NPOI'nin 40+ satırına karşılık yaklaşık 5 satırlık bir kodla indirger, manuel satır yinelemesini ve hücre hücre çıkarım döngüsünü tamamen ortadan kaldırır. Yaygın Excel görevlerine daha düzenli yaklaşımlar için tam IronXL özellik kılavuzları setine göz atın.

Hangi Kütüphaneyi Seçmelisiniz?

NPOI, .NET'teki Excel manipülasyonu için sağlam, köklü bir açık kaynak temel sağlar — Apache POI'nin bir portu olarak geçmişi, yıllık topluluk katkılarından ve geniş format kapsamasından fayda görmesini sağlar. Ana gereksinimleri ücretsiz, topluluk odaklı bir pakette elektronik tablo okuma ve yazma olan ekipler için NPOI güvenilir bir seçenektir.

Ekiplerin genellikle sıkıntı yaşadığı nokta, NPOI'nin yaygın işlemler için gerektirdiği şablon kod miktarıdır. Yukarıdaki dosya okuma örneğinin de gösterdiği gibi, IronXL'nin yaklaşımı, aynı işlemi —çalışma kitabı yükleme ve bir veri ızgarasında gösterme— yaklaşık 5 satır kodla NPOI'nin 40+ satırına karşı ortadan kaldırarak manuel satır ve hücre yineleme döngüsünü tamamen ortadan kaldırır. Kod yüzey alanındaki bu azalma, daha kolay bakım ve hata saklanacak daha az yer sağlama yoluyla yatırım getirisi sağlar.

IronXL ayrıca profesyonel destek, tutarlı güncelleme takvimleri ve Iron Software mühendislerinden doğrudan özellik talep etme yeteneğini içerir. Topluluk odaklı projeler bu bağlamda farklı değiş tokuşlar sunar: daha geniş katkıda bulunan girdisi, ancak belirli sorunlar için daha az tahmin edilebilir yanıt süreleri.

Lisans maliyeti dışında, toplam proje maliyeti, gerekli şablonlarla NPOI'nin alt düzey API'sinin yazılıp bakım için harcanan geliştirici saatlerini ve yukarıdaki örneklerde görülen manuel veri haritalama mantığının hata ayıklamasını içerir. Çok yıllı bir proje yaşam döngüsü boyunca maliyet değerlendiren ekipler için, bu geliştirme ve bakım maliyetleri genellikle açık kaynak ve ticari lisanslama arasındaki farkı aşmaktadır.

İndirmeler

Bu proje GitHub'da mevcut:

IronXL ve NPOI Örnek Karşılaştırması

Kendi projenizdeki farkı görmeye hazır mısınız? Bu örnekleri yerel olarak çalıştırmak için ücretsiz 30 günlük IronXL denemesine başlayın.

Lütfen dikkate alinNPOI, ilgili sahibinin tescilli ticari markasıdır. Bu site, NPOI ile ilişkili, onun tarafından onaylanmış veya desteklenmiş değildir. Tüm ürün adları, logolar ve markalar kendi sahiplerinin mülkiyetindedir. Karşılaştırmalar yalnızca bilgilendirme amaçlıdır ve yazım sırasında kamuya açık bilgileri yansıtır.

Sıkça Sorulan Sorular

Excel manipülasyonu için C#'da Office.Interop kullanmaya bir alternatif nedir?

IronXL, C#'da Excel manipülasyonu için Office.Interop kullanmaya bir alternatif sunar. Microsoft Office'un yüklemesini gerektirmeden geliştiricilerin Excel dosyaları oluşturmasına, okumasına ve düzenlemesine olanak tanıyan kullanıcı dostu bir API sağlar.

Excel dosyalarını C#'da PDF'ye nasıl dönüştürebilirim?

Excel dosyalarını C#'da WorkBook.Load kullanarak yükleyip ardından WorkBook.SaveAs metodunu kullanarak PDF formatında kaydederek IronXL ile PDF'ye dönüştürebilirsiniz.

IronXL kullanarak Excel dosyası manipülasyonu için ana avantajlar nelerdir?

IronXL, daha kolay kod bakımı için daha sezgisel bir API, profesyonel destek, düzenli güncellemeler ve Microsoft Office yüklemeden Excel dosyalarını aynı anda işleme becerisi sunar, bu da onu geliştiriciler için güçlü bir seçenek yapar.

IronXL, NuGet aracılığıyla yüklenebilir mi?

Evet, IronXL NuGet aracılığıyla yüklenebilir. Visual Studio geliştirici komut istemcisine gidin ve Install-Package IronXl.Excel -Version x.x.x girin.

IronXL kullanılarak gerçekleştirilebilecek bazı yaygın Excel ile ilgili görevler nelerdir?

IronXL kullanarak, geliştiriciler Excel dosyalarını okuma ve yazma, hücreleri biçimlendirme, formüller kullanma, verileri doğrulama, koşullu biçimlendirme uygulama ve resimler ve grafiklerle çalışma gibi görevleri gerçekleştirebilir.

C#'da Microsoft Office olmadan Excel dosyasını nasıl okuyabilirim?

IronXL ile, C#'da bir çalışma kitabını WorkBook.Load kullanarak yükleyip, çalışma sayfasına erişebilir ve satırları ve hücreleri basit yöntemlerle iterasyon yapabilirsiniz.

Excel manipülasyonu için açık kaynak alternatiflere göre neden IronXL'i seçmeliyim?

IronXL, NPOI gibi açık kaynak alternatiflerine kiyasla daha kullanici dostu bir API, profesyonel destek, duzenli güncellemeler ve sürekli özellik talepleri sunar.

NPOI, Excel dosya manipülasyonu için IronXL'den nasıl farklidir?

NPOI, Microsoft Office olmadan Excel dosyalarını işlemek için Apache POI projesine dayanarak geliştirilen bir açık kaynak kütüphanedir. Ancak IronXL, daha sezgisel bir API, profesyonel destek ve düzenli güncellemeler sunar, bu da onu ticari uygulamalar için uygun kılar.

IronXL kullanarak bir Excel çalışma sayfasını bir DataTable'a dönüştürme süreci nasıldır?

IronXL kullanarak bir Excel çalışma sayfasını bir DataTable'a dönüştürmek için, WorkBook.Load ile çalışma kitabını yükleyin, istediğiniz çalışma sayfasına erişin ve daha sonraki kullanım için bir DataTable'a dönüştürmek için mevcut yöntemi kullanın.

.NET uygulamalarında Excel dosya yönetimini IronXL nasil geliştirebilir?

IronXL, .NET uygulamalarında Excel dosya yönetimini, Microsoft Office kurulumlarına bağlı kalmadan Excel dosyalarını okuma, düzenleme ve oluşturma gibi görevleri kolaylaştıran temiz ve sezgisel bir API sunarak geliştirir.

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

Iron Destek Ekibi

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