IronXL ile NPOI'nin Karşılaştırılması
IronXL ve NPOI, Office.Interop olmadan - Microsoft Excel kurulumu gerektirmeden çalışan her ikisi de .NET Excel kütüphaneleridir. Bu karşılaştırma, geliştiricilerin en sık karşılaştığı işlemler için API'lerini okuma, yazma ve Excel dosyalarını manipüle etme konularını kapsar.
C#'ta Excel için NPOI Nasıl Kullanılır
- NPOI ile Excel okumak için C# kütüphanesini yükleyin
- Excel dosyasını saklamak için XSSFWorkbook nesnesini oluşturun
GetSheetAtmetoduyla belirli bir çalışma sayfasını alın- Sırayı
GetRowmetoduna sıra indeksini geçirerek erişin - Sıradaki her hücreye
GetCellmetodunu kullanarak erişin
NPOI Nedir?
NPOI, http://poi.apache.org/ adresindeki POI Java projesinin .NET sürümüdür. POI, xls, doc, ppt dosyalarını okuma/yazma konusunda size yardımcı olabilecek bir açık kaynak projesidir. Geniş bir uygulama yelpazesine sahiptir.
Örneğin, aşağıdaki işlemler için kullanabilirsiniz:
- Microsoft Office suite sunucunuzda kurulu olmadan ve arka planda Microsoft Excel ActiveX çağırmaktan daha verimli bir şekilde bir Excel raporu oluşturun
- Ofis belgelerinden metin çıkararak tam metin endeksleme özelliği uygulamanıza yardımcı olun (bu özellik çoğu zaman arama motorları oluşturmak için kullanılır)
- Ofis belgelerinden resimler çıkarın
- formüller içeren Excel sayfaları oluşturun
NPOI ve Excel
NPOI, Apache tarafından oluşturulan POI Java projesinin bir C# portudur. Ücretsiz ve açık kaynaktır. Ayrıca, Interop gerektirmez, bu da kullanıcıların geliştiricinin uygulaması ile çalışmak için Excel yüklü olmasına gerek yoktur.
IronXL ve Excel
IronXL, VB ve C# için bir Excel API'sidir. IronXL ile .NET içerisinde Excel elektronik tablosu dosyalarını okuyabilir, düzenleyebilir ve oluşturabilirsiniz.
NPOI ve IronXL Karşılaştırması
| NPOI | IronXL |
|---|---|
| Hücre Aralıkları | Hücre Aralıkları |
| Hücre stilizasyonu (Kenarlık, Renk, Dolgu, Yazı Tipi, Numara, Hizalamalar) | Hücre görsel stilleri Yazı Tipi, Boyut, Arka plan deseni, Kenarlık, Hizalama ve Numara formatları. |
| Formül hesaplaması | Formüller |
| Veri doğrulaması | Veri doğrulaması |
| Koşullu biçimlendirme | Koşullu biçimlendirme |
| Görseller | Görseller |
| Grafikler | Grafikler |
**Tablo 1** - Özellik Karşılaştırması
IronXL'ı bir NPOI alternatifi olarak değerlendiren ekipler, ücretsiz 30 günlük deneme ile tam API'yi test edebilirler.
IronXL ve NPOI Yüklemesi
Her iki kütüphaneyi de manuel indirerek, NuGet ile veya Visual Studio'daki NuGet Paket Yöneticisi ile yükleyebilirsiniz. İşte hızlı bir genel bakış; adım adım kılavuz için IronXL başlarken kılavuzuna bakın.
NPOI Yükleme
NuGet ile NPOI Yükleme
NuGet üzerinden NPOI yüklemek için, Visual Studio geliştirici komut istemcisini açın ve şu komutu girin:
Install-Package NPOI -Version x.x.x
Şekil 1 - NuGet NPOI Yüklemesi
Visual Studio NuGet Paket Yöneticisi ve NPOI
NuGet Paket Yöneticisi'ni kullanarak Visual Studio'da IronXL veya NPOI'yi yüklemek için şu adımları izleyin:
- Çözüm Gezgini'nde projeye sağ tıklayın
- NuGet Paketlerini Yönet'i seçin
- Paketinizi arayın
- Yükle'ye tıklayın
Şekil 2 - NPOI için NuGet Paket Yöneticisi
IronXL Yükleme
IronXL İndirme
IronXL'i indirmek için, aşağıdaki URL'ye gidin ve 'İndir' butonuna tıklayın.
Şekil 3 - IronXL İndir
NuGet ile IronXL Yükleme
IronXL'i NuGet aracılığıyla yüklemek 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 Yüklemesi
Visual Studio NuGet Paket Yöneticisi ve IronXL
Visual Studio'daki NuGet Paket Yöneticisini kullanarak IronXL'i yüklemek için şu adımları izleyin:
- Çözüm Gezgini'nde projeye sağ tıklayın
- NuGet Paketlerini Yönet'i seçin
- Paketinizi arayın
- Yükle'ye tıklayın
Şekil 5 - IronXL için NuGet Paket Yöneticisi
NPOI ve IronXL ile bir Excel dosyasından okuma ve yazma
NPOI ile bir Excel dosyasını Okuma
Aşağıdaki kod, bir Excel dosyasını nasıl okuyup içeriğini NPOI ile göstereceğinizi gösterir. Aşağıdaki kodu ekleyin ve gerekli ad alanlarını 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, mevcut bir Excel dosyasını okur ve bir veri grid görü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ı okuyup içeriğini IronXL ile bir veri grid içinde göstermeyi gösterir. Daha fazla IronXL kod örnekleri için belgelere bakın. Aşağıdaki kodu ekleyin ve ad alanı kullanın:
using IronXL;
using System.Data;
using IronXL;
using System.Data;
Imports IronXL
Imports System.Data
IronXL'in dahil edildiğini fark edin. IronXL'in çalışması için gereklidir. Aşağıdaki birkaç satırı 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, NPOI'nin 40+ satırına karşılık okuma ve gösterme işlemini yaklaşık 5 satır koda indirirken, manuel sıra iterasyonunu ve hücre-hücre ekstraksiyon döngüsünü tamamen ortadan kaldırır. Yaygın Excel görevleri için 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'te Excel manipülasyonu için güvenilir bir açık kaynak temeli sunar - Apache POI'nin bir portu olarak kökeni, yılların topluluk katkılarından ve geniş format kapsamından yararlanır. Ana gereksinimi ücretsiz, topluluk odaklı bir pakette elektronik tabloları okumak ve yazmak olan ekipler için NPOI güvenilir bir seçimdir.
Ekiplerin sıkça sürtüşme yaşadığı yer, NPOI'nin yaygın işlemler için gerektirdiği miktarda şablon kodudur. Yukarıdaki okuma dosyası örneği gösterdiği gibi, IronXL'in yaklaşımı aynı işlem için yaklaşık 5 satır kod gerektirirken, NPOI'ninki 40+ satırdır - bir çalışma kitabını yüklemek ve bunu bir veri gridinde göstermek - manuel sıra ve hücre iterasyon 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 ile desteklenen bir yatırımdır.
IronXL ayrıca profesyonel destek, tutarlı güncelleme takvimleri ve Iron Software mühendislerinden doğrudan özellik talep etme yeteneği ile birlikte gelir. Topluluk odaklı projeler bu konuda farklı takaslar sunar: daha geniş katkıda bulunan girdiler, ancak belirli sorunlar için daha az öngörülebilir yanıt süreleri.
Lisans maliyetinin ötesinde, toplam proje maliyeti, NPOI'nin daha düşük seviyeli API'sinin gerektirdiği ek şablon kodu yazmak ve sürdürmek için harcanan geliştirici saatlerini içerir, ayrıca yukarıdaki örneklerde gösterilen manuel veri eşleme mantığını hata ayıklamak için harcanan süreyi içerir. Çok yıllı bir proje yaşam döngüsünde maliyetleri değerlendiren ekipler için, bu geliştirme ve bakım maliyetleri, açık kaynak ve ticari lisanslama arasındaki farkı sıklıkla aşar.
İndirme
Bu proje GitHub'da mevcuttur:
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
C#'ta Excel manipülasyonu için Office.Interop kullanmaya bir alternatif nedir?
IronXL, C#'ta Excel manipülasyonu için Office.Interop kullanmaya bir alternatiftir. Microsoft Office yüklü olmasına ihtiyaç duymadan geliştiricilerin Excel dosyaları oluşturmasını, okumasını ve düzenlemesini sağlayan kullanıcı dostu bir API sunar.
C#'ta Excel dosyalarını PDF'ye nasıl dönüştürebilirim?
IronXL'yi kullanarak bir Excel dosyasını PDF'ye dönüştürebilirsiniz. WorkBook.Load ile Excel kitabını yükleyin ve ardından WorkBook.SaveAs metodunu kullanarak dosyayı PDF formatında kaydedin.
Excel dosyası manipülasyonu için IronXL kullanmanın temel faydaları nelerdir?
IronXL, daha sezgisel bir API, daha kolay kod bakımını, profesyonel desteği, düzenli güncellemeleri ve Microsoft Office kurulumuna ihtiyaç duymadan Excel dosyalarını işleyebilme yeteneği sunar, bu da onu geliştiriciler için güçlü bir seçenek haline getirir.
IronXL, NuGet üzerinden kurulabilir mi?
Evet, IronXL NuGet üzerinden kurulabilir. Visual Studio geliştirici komut istemini açın ve Install-Package IronXL.Excel -Version x.x.x komutunu girin.
IronXL kullanarak yapılabilecek bazı yaygın Excel ile ilgili görevler nelerdir?
IronXL kullanarak, geliştiriciler Excel dosyalarını okuma ve yazma, hücreleri biçimlendirme, formül kullanımı, veri doğrulama, koşullu biçimlendirme uygulama ve resimler ve grafiklerle çalışma gibi görevleri gerçekleştirebilirler.
Microsoft Office olmadan C#'ta bir Excel dosyasını nasıl okuyabilirim?
IronXL ile, bir çalışma kitabını WorkBook.Load kullanarak yükleyip, çalışma sayfasına erişerek ve satırlar ve hücreler arasında basit yöntemlerle gezinti yaparak C#'ta bir Excel dosyasını okuyabilirsiniz.
Excel manipülasyonu için açık kaynak alternatifler yerine neden IronXL'yi tercih etmeliyim?
IronXL, daha kullanıcı dostu bir API, profesyonel destek, düzenli güncellemeler ve devam eden özellik talepleri sunar, bu da onu NPOI gibi açık kaynak alternatiflere göre avantajlı kılar.
Excel dosya manipülasyonu için NPOI, IronXL'den nasıl farklıdır?
NPOI, Microsoft Office olmadan çalışmak için Apache POI projesine dayanan açık kaynaklı bir kütüphanedir. Ancak, IronXL daha sezgisel bir API, profesyonel destek ve düzenli güncellemeler sunarak ticari uygulamalara uygun hale getirir.
IronXL kullanarak bir Excel çalışma sayfasını bir DataTable'a dönüştürme işlemi nasıldır?
IronXL kullanarak Excel çalışma sayfasını bir DataTable'a dönüştürmek için, çalışma kitabını WorkBook.Load ile yükleyin, istenen çalışma sayfasına erişin ve DataTable için mevcut yöntemi kullanarak kullanıma dönüştürün.
.NET uygulamalarında IronXL nasıl Excel dosya yönetimini geliştirir?
IronXL, .NET uygulamalarında temiz ve sezgisel bir API sunarak, Excel dosyalarını okuma, düzenleme ve kolaylıkla oluşturmayı kolaylaştırır, Microsoft Office kurulumlarına dayanmaz.




