Altbilgi içeriğine atla
.NET YARDıM

Datatables .NET (Geliştiriciler İçin Nasıl Çalışır)

ASP.NET geliştiricileri, sıklıkla gelişmiş özelliklere sahip tablo verilerini veya HTML tablolarını sunmanın verimli yollarını arar (sıralama, arama ve sayfalama gibi). DataTables.NET, etkileşimli ve özellik açısından zengin tabloların web uygulamalarında oluşturulmasını kolaylaştıran güçlü bir jQuery ve JavaScript kütüphanesi ve son derece esnek bir araçtır. Bu makalede, ASP.NET projenize sunucu tarafı işleme için bir tablo geliştirme kütüphanesi olan DataTables.NET dağıtım dosyalarını nasıl entegre edeceğinizi ve tablo verilerinin sunumunu ve kullanıcı deneyimini nasıl geliştireceğinizi keşfedeceğiz.

Bir ASP.NET Web Uygulamasında DataTables Nasıl Kullanılır?

  1. ASP.NET Web Uygulaması Oluşturun
  2. DataTables İstemci Tarafı stil paketi ekleyin
  3. Sadece çekirdek yazılımı olan Entity Framework Core Paketlerini yükleyin
  4. Model Sınıfı, Denetleyici ve Razor Sayfası ekleyin
  5. JS dosyasına JavaScript kodu ekleyin
  6. Yapılandırmayı ayarlayın
  7. Programı derleyin ve çalıştırın
  8. Verileri IronXL for Excel Data Export kullanarak bir Excel dosyasına aktarın

DataTables.NET Nedir?

DataTables.NET, .NET uygulamalarında etkileşimli tablolar oluşturmanıza ve manipüle etmenize olanak tanıyan bir jQuery JavaScript kütüphanesidir. Dinamik ve statik HTML tabloları için sayfalama, sıralama, filtreleme ve kaydırma gibi kapsamlı API özellikleri sunan jQuery DataTables eklentisine dayanır. Bu, SQL veritabanları, AJAX veya bellek içi nesneler gibi çeşitli veri kaynaklarıyla çalışabilen bir tablo geliştirme kütüphanesidir.

Sunucu Taraf İşleme

Birden fazla ürünü kapsayan geniş bir veri kümesi sağlayan bir API uç noktasına sahip olduğunuzu düşünün. Standart yaklaşım, jQuery DataTables'in bu API'ye bir AJAX çağrısı yaparak JSON formatında bir ürün listesi elde etmesi ve bir HTML tablosu oluşturmasıdır. Bu, tipik olarak 100 ila 1000 kayıt arasında değişen daha küçük veri kümeleri için etkili olan istemci tarafı işleme olarak bilinir. Ancak, veri kümesi 10.000 kayıt veya daha fazlasına genişlediğinde ne olur?

Çok sayıda kayıtla uğraşırken, tüm veri kümesini bir anda tarayıcıya göndermek pratik olmaz. 10.000 kaydın bir seferde iletilmesi, bant genişliği açısından israf olmasının yanı sıra tarayıcı kaynaklarını da zorlamaktadır. Bu gibi durumlarda, performansı optimize etmek için alternatif bir yaklaşım olan sunucu tarafı işleme gerekli hale gelir.

Sunucu tarafı işleme, tüm veri kümesini göndermek yerine, API'nin genellikle sayfalara ayrılmış şekilde, yönetilebilir parçalar halinde veri iletmesidir, genellikle sayfa başına yaklaşık 50 kayıt ile. Bu şekilde, yükleme süresi önemli ölçüde iyileştirilir, çünkü jQuery DataTables artık bir kerede tüm veri kümesiyle uğraşmak yerine mütevazı bir kayıt sayısını (~50) yükler. Bu yaklaşım, kullanıcı arayüzü ve DataTable arasındaki etkileşimi daha verimli hale getirerek CPU ve bant genişliği kullanımını azaltır.

Bu makalede, geniş veri kümelerini verimli bir şekilde ele alıp görüntülerken ASP.NET Razor Sayfa uygulamasında sunucu tarafı işlemenin uygulanmasını inceleyeceğiz ve böylece web uygulamanızın genel performansını artıracağız.

ASP.NET 8'de DataTables.NET ile Başlarken

Başlamak için, projemize DataTables.NET İstemci Taraf Kütüphanesi eklememiz gerekiyor. Bu makale, .NET 8 ile ASP.NET Core Web Uygulaması (Razor Pages) projesini kullanacaktır. Gereksinimlerinize göre herhangi bir Web App Projesini kullanabilirsiniz.

Bir İstemci Taraf Kütüphanesi eklemek için, Çözüm üzerinde sağ tıklayıp Ekle> İstemci Taraf Kütüphanesi ekleyin ve aşağıda gösterildiği gibi veri tablolarını aratınız.

DataTables.NET (Geliştirici İçin Nasıl Çalışır): Şekil 1 - İstemci Tarafı Kütüphane Ekle

Şimdi, Model Sınıfı, DB Context, Kontrolör, HTML tablosu ve AJAX Çağrısı eklememiz gerekiyor.

Ancak bundan önce, uygulamamızı Veritabanı ile bağlamak için EntityFramework NuGet Paketlerini kurmamız gerekli. Bu makale, Kod Öncelikli Yaklaşımı kullanacaktır, tercihinize göre Veritabanı öncelikli olarak kullanabilirsiniz.

Aşağıdaki yerel olarak barındırılmış paketleri yükleyin:

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Design
  3. Microsoft.EntityFrameworkCore.SqlServer
  4. Microsoft.EntityFrameworkCore.Tools

NuGet Paket Yöneticisi Konsolu'ndan install-package komutunu kullanarak veya NuGet Paket Yöneticisi çözümünden aratarak yükleyin.

Model Sınıfı Ekle

Bu örnek için Ürün Model Sınıfı kullanıyorum, gereksinimlerinize göre kullanabilirsiniz.

public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; } = string.Empty;
    public string ProductPrice { get; set; } = string.Empty;
    public string ProductWeight { get; set; } = string.Empty;
    public string ProductDescription { get; set; } = string.Empty;
    public DateTime ProductManufacturingDate { get; set; }
    public DateTime ProductExpiryDate { get; set; }
}
public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; } = string.Empty;
    public string ProductPrice { get; set; } = string.Empty;
    public string ProductWeight { get; set; } = string.Empty;
    public string ProductDescription { get; set; } = string.Empty;
    public DateTime ProductManufacturingDate { get; set; }
    public DateTime ProductExpiryDate { get; set; }
}
Public Class Product
	Public Property Id() As Integer
	Public Property ProductName() As String = String.Empty
	Public Property ProductPrice() As String = String.Empty
	Public Property ProductWeight() As String = String.Empty
	Public Property ProductDescription() As String = String.Empty
	Public Property ProductManufacturingDate() As DateTime
	Public Property ProductExpiryDate() As DateTime
End Class
$vbLabelText   $csharpLabel

ApplicationDBContext Sınıfı Ekle

public class ApplicationDBContext : DbContext
{
    public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
    {
    }
    public DbSet<Product> Products { get; set; }
}
public class ApplicationDBContext : DbContext
{
    public ApplicationDBContext(DbContextOptions<ApplicationDBContext> options) : base(options)
    {
    }
    public DbSet<Product> Products { get; set; }
}
Public Class ApplicationDBContext
	Inherits DbContext

	Public Sub New(ByVal options As DbContextOptions(Of ApplicationDBContext))
		MyBase.New(options)
	End Sub
	Public Property Products() As DbSet(Of Product)
End Class
$vbLabelText   $csharpLabel

Gelişmiş Etkileşim Kontrolleri Ekle

Gelişmiş kontroller, örneğin sayfalama, arama vb. eklemek için ProductDatatables.js'yi wwwroot/js klasörü içine ekleyeceğiz.

// Initialize the DataTables plugin for the HTML element with 'productDatatable' ID
$(document).ready(function () {
    $("#productDatatable").DataTable({
        "processing": true, // Enable processing indicator
        "serverSide": true, // Enable server-side processing
        "ajax": {
            "url": "/api/Product", // API endpoint for fetching product data
            "type": "POST",
            "datatype": "json"
        },
        "columnDefs": [{
            // Define properties for columns
            "targets": [0],
            "visible": false, // Hide the 'Id' column
            "searchable": false // Disable searching for the 'Id' column
        }],
        "columns": [
            { "data": "id", "name": "Id", "autoWidth": true },
            { "data": "productName", "name": "ProductName", "autoWidth": true },
            { "data": "productPrice", "name": "ProductPrice", "autoWidth": true },
            { "data": "productWeight", "name": "ProductWeight", "autoWidth": true },
            { "data": "productDescription", "name": "ProductDescription", "autoWidth": true },
            { "data": "productManufacturingDate", "name": "ProductManufacturingDate", "autoWidth": true },
            { "data": "productExpiryDate", "name": "ProductExpiryDate", "autoWidth": true },
            {
                // Add a 'Delete' button with an onclick event for deleting the product
                "render": function (data, type, row) { 
                    return "<a href='#' class='btn btn-danger' onclick=DeleteProduct('" + row.id + "');>Delete</a>"; 
                }
            }
        ]
    });
});
// Initialize the DataTables plugin for the HTML element with 'productDatatable' ID
$(document).ready(function () {
    $("#productDatatable").DataTable({
        "processing": true, // Enable processing indicator
        "serverSide": true, // Enable server-side processing
        "ajax": {
            "url": "/api/Product", // API endpoint for fetching product data
            "type": "POST",
            "datatype": "json"
        },
        "columnDefs": [{
            // Define properties for columns
            "targets": [0],
            "visible": false, // Hide the 'Id' column
            "searchable": false // Disable searching for the 'Id' column
        }],
        "columns": [
            { "data": "id", "name": "Id", "autoWidth": true },
            { "data": "productName", "name": "ProductName", "autoWidth": true },
            { "data": "productPrice", "name": "ProductPrice", "autoWidth": true },
            { "data": "productWeight", "name": "ProductWeight", "autoWidth": true },
            { "data": "productDescription", "name": "ProductDescription", "autoWidth": true },
            { "data": "productManufacturingDate", "name": "ProductManufacturingDate", "autoWidth": true },
            { "data": "productExpiryDate", "name": "ProductExpiryDate", "autoWidth": true },
            {
                // Add a 'Delete' button with an onclick event for deleting the product
                "render": function (data, type, row) { 
                    return "<a href='#' class='btn btn-danger' onclick=DeleteProduct('" + row.id + "');>Delete</a>"; 
                }
            }
        ]
    });
});
JAVASCRIPT

Şimdi, bir HTML tablosu eklememiz gerekiyor.

HTML Tablosu Ekle

Statik bir HTML sayfası eklemek için index.cshtml dosyasına aşağıdaki kodu yazın.

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}
<link href="~/lib/datatables/css/dataTables.bootstrap4.min.css" rel="stylesheet" />
<div class="container">
    <br />
    <div style="width:90%; margin:0 auto;">
        <table id="productDatatable" class="table table-striped table-bordered dt-responsive nowrap" width="100%" cellspacing="0">
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Product Name</th>
                    <th>Product Price</th>
                    <th>Product Weight</th>
                    <th>Product Description</th>
                    <th>Product Manufacturing Date</th>
                    <th>Product Expiry Date</th>
                    <th>Actions</th>
                </tr>
            </thead>
        </table>
    </div>
</div>

@section Scripts {
    <script src="~/lib/datatables/js/jquery.dataTables.min.js"></script>
    <script src="~/lib/datatables/js/dataTables.bootstrap4.min.js"></script>
    <script src="~/js/ProductDatatable.js"></script>
}

Denetleyiciyi eklememiz gerekiyor.

Ürün Denetleyicisi Ekle

Uç nokta ve dogrudan cekme istekleri oluşturmak icin Ürün Denetleyicisi ekleyin.

[Route("api/[controller]")]
[ApiController]
public class ProductController : ControllerBase
{
    private readonly ApplicationDBContext context;
    public ProductController(ApplicationDBContext context)
    {
        this.context = context;
    }

    [HttpPost]
    public IActionResult GetProducts()
    {
        try
        {
            var draw = Request.Form["draw"].FirstOrDefault();
            var start = Request.Form["start"].FirstOrDefault();
            var length = Request.Form["length"].FirstOrDefault();
            var searchValue = Request.Form["search[value]"].FirstOrDefault();
            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;
            int recordsTotal = 0;
            var productData = context.Products.ToLis();

            // Filtering data based on provided search value
            if (!string.IsNullOrEmpty(searchValue))
            {
                productData = productData.Where(m => m.ProductName.Contains(searchValue)
                                            || m.ProductDescription.Contains(searchValue)
                                            || m.Id.ToString().Contains(searchValue)).ToList();
            }

            recordsTotal = productData.Count();
            var data = productData.Skip(skip).Take(pageSize).ToList();
            var jsonData = new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data };
            return Ok(jsonData);
        }
        catch (Exception)
        {
            throw;
        }
    }
}
[Route("api/[controller]")]
[ApiController]
public class ProductController : ControllerBase
{
    private readonly ApplicationDBContext context;
    public ProductController(ApplicationDBContext context)
    {
        this.context = context;
    }

    [HttpPost]
    public IActionResult GetProducts()
    {
        try
        {
            var draw = Request.Form["draw"].FirstOrDefault();
            var start = Request.Form["start"].FirstOrDefault();
            var length = Request.Form["length"].FirstOrDefault();
            var searchValue = Request.Form["search[value]"].FirstOrDefault();
            int pageSize = length != null ? Convert.ToInt32(length) : 0;
            int skip = start != null ? Convert.ToInt32(start) : 0;
            int recordsTotal = 0;
            var productData = context.Products.ToLis();

            // Filtering data based on provided search value
            if (!string.IsNullOrEmpty(searchValue))
            {
                productData = productData.Where(m => m.ProductName.Contains(searchValue)
                                            || m.ProductDescription.Contains(searchValue)
                                            || m.Id.ToString().Contains(searchValue)).ToList();
            }

            recordsTotal = productData.Count();
            var data = productData.Skip(skip).Take(pageSize).ToList();
            var jsonData = new { draw = draw, recordsFiltered = recordsTotal, recordsTotal = recordsTotal, data = data };
            return Ok(jsonData);
        }
        catch (Exception)
        {
            throw;
        }
    }
}
<Route("api/[controller]")>
<ApiController>
Public Class ProductController
	Inherits ControllerBase

	Private ReadOnly context As ApplicationDBContext
	Public Sub New(ByVal context As ApplicationDBContext)
		Me.context = context
	End Sub

	<HttpPost>
	Public Function GetProducts() As IActionResult
		Try
			Dim draw = Request.Form("draw").FirstOrDefault()
			Dim start = Request.Form("start").FirstOrDefault()
			Dim length = Request.Form("length").FirstOrDefault()
			Dim searchValue = Request.Form("search[value]").FirstOrDefault()
			Dim pageSize As Integer = If(length IsNot Nothing, Convert.ToInt32(length), 0)
			Dim skip As Integer = If(start IsNot Nothing, Convert.ToInt32(start), 0)
			Dim recordsTotal As Integer = 0
			Dim productData = context.Products.ToLis()

			' Filtering data based on provided search value
			If Not String.IsNullOrEmpty(searchValue) Then
				productData = productData.Where(Function(m) m.ProductName.Contains(searchValue) OrElse m.ProductDescription.Contains(searchValue) OrElse m.Id.ToString().Contains(searchValue)).ToList()
			End If

			recordsTotal = productData.Count()
			Dim data = productData.Skip(skip).Take(pageSize).ToList()
			Dim jsonData = New With {
				Key .draw = draw,
				Key .recordsFiltered = recordsTotal,
				Key .recordsTotal = recordsTotal,
				Key .data = data
			}
			Return Ok(jsonData)
		Catch e1 As Exception
			Throw
		End Try
	End Function
End Class
$vbLabelText   $csharpLabel

Burada, sunucu tarafında sayfalama ve arama uyguladık.

Şimdi, veritabanımızı kurup Program.cs sınıfına konfigürasyon eklememiz gerekiyor. .NET 5 veya daha düşük bir sürüm kullanıyorsanız, bunu Startup.cs sınıfında yapmanız gerekebilir.

Önce, appsettings.json dosyasına aşağıdaki Bağlantı Dizgesini ekleyin.

"ConnectionStrings": {
   "ProductDB": "Server=localserver\\SQLEXPRESS;Database=ProductDB;Trusted_Connection=True;MultipleActiveResultSets=true;TrustServerCertificate=True;"
}

Şimdi Program.cs sınıfına aşağıdaki kodu ekleyin.

public static void Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDbContext<ApplicationDBContext>(options =>
    {
         options.UseSqlServer(builder.Configuration.GetConnectionString("ProductDB"));
    });
    builder.Services.AddControllers();
    // Add services to the container.
    builder.Services.AddRazorPages();
    var app = builder.Build();
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
         app.UseExceptionHandler("/Error");
         // The default HSTS value is 30 days.
         app.UseHsts();
    }
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.MapControllers();
    app.MapRazorPages();
    app.Run();
}
public static void Main(string[] args)
{
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddDbContext<ApplicationDBContext>(options =>
    {
         options.UseSqlServer(builder.Configuration.GetConnectionString("ProductDB"));
    });
    builder.Services.AddControllers();
    // Add services to the container.
    builder.Services.AddRazorPages();
    var app = builder.Build();
    // Configure the HTTP request pipeline.
    if (!app.Environment.IsDevelopment())
    {
         app.UseExceptionHandler("/Error");
         // The default HSTS value is 30 days.
         app.UseHsts();
    }
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseRouting();
    app.UseAuthorization();
    app.MapControllers();
    app.MapRazorPages();
    app.Run();
}
Public Shared Sub Main(ByVal args() As String)
	Dim builder = WebApplication.CreateBuilder(args)
	builder.Services.AddDbContext(Of ApplicationDBContext)(Sub(options)
		 options.UseSqlServer(builder.Configuration.GetConnectionString("ProductDB"))
	End Sub)
	builder.Services.AddControllers()
	' Add services to the container.
	builder.Services.AddRazorPages()
	Dim app = builder.Build()
	' Configure the HTTP request pipeline.
	If Not app.Environment.IsDevelopment() Then
		 app.UseExceptionHandler("/Error")
		 ' The default HSTS value is 30 days.
		 app.UseHsts()
	End If
	app.UseHttpsRedirection()
	app.UseStaticFiles()
	app.UseRouting()
	app.UseAuthorization()
	app.MapControllers()
	app.MapRazorPages()
	app.Run()
End Sub
$vbLabelText   $csharpLabel

Kod-birinci yaklaşım kullandığımız için taşıma işlemini çalıştırmamız gerekiyor.

Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın.

Add-Migration init
Add-Migration init
SHELL

Yukarıdaki komut bir taşıma oluşturacaktır. Şimdi bu taşımaları veritabanımıza uygulamamız gerekiyor. Paket Yöneticisi Konsolunda aşağıdaki komutu çalıştırın.

Update-Database
Update-Database
SHELL

Yukarıdaki komut veritabanımızda tablolar oluşturacaktır. Ürün Tablosuna sahte veri ekle; Rastgele verileri Mockaroo'dan oluşturabilirsiniz.

Şimdi, bu uygulamayı birleştirin ve çalıştırın.

Çıktı

Oldukça etkileşimli bir arayüz ve gelişmiş etkileşim kontrolleri ile karşılaştık.

DataTables.NET (Geliştirici İçin Nasıl Çalışır): Şekil 2 - Çıktı

Sunucu tarafında sayfalama aşağıda gösterildiği gibi uygulanmıştır.

DataTables.NET (Geliştirici İçin Nasıl Çalışır): Şekil 3 - Sayfalama

Çıkış Arayüzü

Veriler, zengin kullanıcı arayüzü kontrolü ile İstemci Tarafında oluşturulur.

DataTables.NET (Geliştirici İçin Nasıl Çalışır): Şekil 4 - UI

Daha fazlasını DataTables.NET belgelerini keşfederek öğrenebilirsiniz.

IronXL'e Giriş

IronXL - .NET için Excel Kütüphanesi, .NET uygulamalarında Excel dosyalarıyla çalışmanıza olanak tanıyan bir kütüphanedir. Excel elektronik tabloları oluşturabilir, CSV dosyalarını okuyabilir, Excel dosyalarını düzenleyebilir ve Excel'e aktarabilir. Microsoft Office veya Excel Interop kurulumu gerektirmez. .NET 8, 7, 6, 5, Core, Framework ve Azure'u destekler.

Verileri Excel veya CSV dosyalarına aktarma gereksinimimiz sık sık olur. IronXL bu durumda en iyi seçimdir. Şimdi, verilerimizi bir Excel dosyasına aktaran bir kod yazacağız.

IronXL'yi Yükleyin

Paket Yöneticisi Konsoluna aşağıdaki komutu girerek projemize IronXL kutuphanesini kurun.

Install-Package IronPdf

Bu, projemize IronXL ve gerekli bağımlılıkları yükleyecektir.

Verileri Excel'e Aktar

Ürün listemizi bir Excel dosyasına dönüştüren bir kod yazalım.

public void ExportToExcel(List<Product> productList)
{
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX); // Create a new workbook instance
    WorkSheet ws = wb.DefaultWorkSheet; // Access the default worksheet
    int rowCount = 1;

    // Iterate over the product list and fill the worksheet
    foreach (Product product in productList)
    {
        ws["A" + rowCount].Value = product.Id.ToString();
        ws["B" + rowCount].Value = product.ProductName;
        ws["C" + rowCount].Value = product.ProductDescription;
        ws["D" + rowCount].Value = product.ProductPrice;
        ws["E" + rowCount].Value = product.ProductWeight;
        ws["F" + rowCount].Value = product.ProductManufacturingDate;
        ws["G" + rowCount].Value = product.ProductExpiryDate;
        rowCount++;
    }
    wb.SaveAs("product.xlsx"); // Save the workbook as an Excel file
}
public void ExportToExcel(List<Product> productList)
{
    WorkBook wb = WorkBook.Create(ExcelFileFormat.XLSX); // Create a new workbook instance
    WorkSheet ws = wb.DefaultWorkSheet; // Access the default worksheet
    int rowCount = 1;

    // Iterate over the product list and fill the worksheet
    foreach (Product product in productList)
    {
        ws["A" + rowCount].Value = product.Id.ToString();
        ws["B" + rowCount].Value = product.ProductName;
        ws["C" + rowCount].Value = product.ProductDescription;
        ws["D" + rowCount].Value = product.ProductPrice;
        ws["E" + rowCount].Value = product.ProductWeight;
        ws["F" + rowCount].Value = product.ProductManufacturingDate;
        ws["G" + rowCount].Value = product.ProductExpiryDate;
        rowCount++;
    }
    wb.SaveAs("product.xlsx"); // Save the workbook as an Excel file
}
Public Sub ExportToExcel(ByVal productList As List(Of Product))
	Dim wb As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX) ' Create a new workbook instance
	Dim ws As WorkSheet = wb.DefaultWorkSheet ' Access the default worksheet
	Dim rowCount As Integer = 1

	' Iterate over the product list and fill the worksheet
	For Each product As Product In productList
		ws("A" & rowCount).Value = product.Id.ToString()
		ws("B" & rowCount).Value = product.ProductName
		ws("C" & rowCount).Value = product.ProductDescription
		ws("D" & rowCount).Value = product.ProductPrice
		ws("E" & rowCount).Value = product.ProductWeight
		ws("F" & rowCount).Value = product.ProductManufacturingDate
		ws("G" & rowCount).Value = product.ProductExpiryDate
		rowCount += 1
	Next product
	wb.SaveAs("product.xlsx") ' Save the workbook as an Excel file
End Sub
$vbLabelText   $csharpLabel

Listeyi çok basit ve kolay bir şekilde bir Excel dosyasına dönüştürdük.

DataTables.NET (Geliştirici İçin Nasıl Çalışır): Şekil 5 - Excel Çıkışı

IronXL, XLSX dosyaları oluşturma ile ilgili eğitimler, Excel okuma ile ilgili kod örnekleri ve API belgeleri sunar.

ASP.NET performansını optimize ederken, yalın ve verimli bir geliştirme ortamını garantilemek için yalnızca Çekirdek Yazılıma güveniriz. Veri işleme ve Excel'e aktarma işlemlerini kolaylaştırarak dış bağımlılıkları minimize eder. Ek olarak, optimize edilmiş ve kendine yeten bu ekosistem içinde kod katkıları daha sorunsuz hale gelir.

IronPDF, web sayfalarını, URL'leri ve HTML'i PDF belgelerine dönüştürmek için tasarlanmış bir çözümdür. Oluşturulan PDF'ler, kaynak web sayfalarının orijinal biçimlendirmesini ve stil öğelerini korur. Bu araç, raporlar ve faturalar gibi web tabanlı içeriğin PDF versiyonlarını oluşturmak için özellikle etkilidir.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Sonuç

Özetle, ASP.NET dağıtım repo projelerinde sunucu tarafı işleme için DataTables.NET'i kullanmak, büyük veri kümesi işlemlerini daha verimli bir şekilde yönetmek için iyi bir stratejidir. Bu yaklaşım, verileri yönetilebilir parçalara ayırarak performansın optimize edilmesini ve bant genişliği kullanımının azaltılmasını sağlar ve kullanıcı deneyimini geliştirir. IronXL entegrasyonu, tablo verilerini Excel'e kolay bir şekilde aktararak uygulamanın yeteneklerini genişletir ve kapsamlı veri analizi ve raporlama imkanı sunar.

Bu teknolojileri benimseyerek, geliştiriciler zengin interaktif ve kaynak verimli web uygulamaları oluşturabilirler, özellikle büyük veri kümelerinin yer aldığı senaryolarda. IronXL, geliştirici sayısı, proje ve yeniden dağıtım ihtiyacına bağlı olarak çeşitli lisans seçenekleri sunar. Lisanslar süresizdir ve ücretsiz destek ve güncellemeler içerir.

Sıkça Sorulan Sorular

DataTables.NET bir ASP.NET projesine nasıl entegre edilir?

DataTables.NET'i bir ASP.NET projesine entegre etmek için, bir ASP.NET Web Uygulaması oluşturun, DataTables Client-Side stillendirme paketlerini ekleyin, Entity Framework Core Paketlerini kurun, Model Sınıfları, Denetleyiciler ve Razor Sayfaları ekleyin, JavaScript'i sunucu-tarafı işlemeye göre yapılandırın ve ardından projenizi oluşturup çalıştırın.

DataTables.NET'te sunucu-tarafı işleme nedir?

DataTables.NET'te sunucu-tarafı işleme, tüm veri kümesini bir kerede yüklemek yerine, verileri yönetilebilir parçalar halinde sunucudan istemciye aktarmayı içerir. Bu, yükleme sürelerini azaltarak ve özellikle büyük veri kümeleriyle CPU ve bant genişliği kullanımını en aza indirerek performansı arttırır.

DataTables.NET'te sunucu-tarafı işleme neden önemlidir?

Sunucu-tarafı işleme, büyük veri kümeleriyle çalışırken performansı optimize etmek için hayati önem taşır. Bu, sunucunun sadece gerekli verileri istemciye göndermesine olanak tanıyarak tarayıcı üzerindeki yükü azaltır ve genel verimliliği artırır.

Bir ASP.NET uygulamasında tablo verilerini Excel'e nasıl aktarabilirim?

Bir ASP.NET uygulamasında tablo verilerini Excel'e aktarmak için IronXL kütüphanesini kullanabilirsiniz. IronXL, veri listelerinizden Microsoft Office veya Excel Interop'a gerek olmadan doğrudan Excel dosyaları oluşturmanıza ve düzenlemenize olanak tanır.

DataTables için ASP.NET'de bir İstemci Tarafı Kütüphanesi nasıl kurulmalı?

ASP.NET'de bir İstemci Tarafı Kütüphanesi kurmak için, Visual Studio'da Çözümünüzde sağ tıklayın, 'Ekle'yi seçin, ardından 'İstemci Tarafı Kütüphanesi'ni seçin. Projenizin işlevselliğini arttıracak bir kütüphane eklemek için arama yapabilirsiniz, örneğin DataTables.

DataTables.NET'i sunucu-tarafı işleme için yapılandırmanın aşamaları nedir?

DataTables.NET'i sunucu-tarafı işleme için yapılandırmak için, bir Model Sınıfı, DB Bağlamı, Denetleyici ve HTML tablosu kurduğunuzdan emin olun. Ayrıca AJAX çağrısı yapmalı ve veri alma ve manipülasyonunu yönetmek üzere JavaScript dosyalarınızda sunucu-tarafı işleme mantığını yapılandırmalısınız.

DataTables.NET ile filtreleme ve sayfalama nasıl çalışır?

DataTables.NET'te filtreleme ve sayfalama sunucu-tarafı işleme yolu ile yönetilir. Sunucu, arama kriterlerine göre verileri filtreler ve sayfalamayı verilerin parçalar halinde istemciye gönderilmesi ile yönetir, böylece veri işleme daha verimli olur.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

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