
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:

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

Ş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;Imports NPOI.SS.UserModel
Imports NPOI.XSSF.UserModel
Imports System.Data
Imports System.IO
Imports System.Collections.GenericAş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 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 SubIronXL 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;Imports IronXL
Imports System.DataIronXL'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 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 SubGö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:
IronXL ve NPOI ÖrneğiKendi 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

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapılandırılmış, görsel olarak çekici kılavuzlar oluşturmayı seviyor.
İlgili Makaleler



