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.
C# ile Excel için NPOI Nasıl Kullanılır
- NPOI ile Excel okumak için C# kütüphanesi yükleyin
- Excel dosyasını depolamak için XSSFWorkbook nesnesini oluşturun
GetSheetAtmetodu ile belirli bir çalışma sayfasını alınGetRowmetoduna satır indeksini geçirerek her satıra erişinGetCellmetodu ile satırdaki her hücreye erişin
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
Ş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
Ş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.
Ş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
Ş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
Ş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
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
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
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
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.
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.




