PandaTech.FileExporter
4.0.0
dotnet add package PandaTech.FileExporter --version 4.0.0
NuGet\Install-Package PandaTech.FileExporter -Version 4.0.0
<PackageReference Include="PandaTech.FileExporter" Version="4.0.0" />
paket add PandaTech.FileExporter --version 4.0.0
#r "nuget: PandaTech.FileExporter, 4.0.0"
// Install PandaTech.FileExporter as a Cake Addin #addin nuget:?package=PandaTech.FileExporter&version=4.0.0 // Install PandaTech.FileExporter as a Cake Tool #tool nuget:?package=PandaTech.FileExporter&version=4.0.0
FileExporter
FileExporter is a lightweight C# library that simplifies file export operations in .NET applications. With support for exporting data to CSV, Excel (XLSX), and PDF formats, FileExporter provides an intuitive interface for developers to quickly generate and download files.
Features
- Easy Exporting: Simply call ToCsv(), ToXlsx(), or ToPdf() on your data collection to export to the desired format.
- Automatic Splitting: Handles large datasets by automatically splitting files if the maximum line count or file size is exceeded, then zipping them for easy download.
- Flexible Configuration: Customize export settings such as column headers, delimiter, and more to suit your needs.
- Effortless Integration: Seamlessly integrate FileExporter into your existing .NET projects with minimal setup.
- Helper Extension Methods: Use ToFileFormat(ExportType.Excel) as an alternative to directly calling ToCsv(), ToXlsx(), or ToPdf().
Installation
You can install FileExporter via NuGet Package Manager by running the following command:
Install-Package FileExporter
Usage
Here's a quick example of how to use FileExporter to export data to a CSV file with old way which is still supported:
using FileExporter;
// Define your data
var data = new List<MyDataClass>
{
new MyDataClass { Name = "John Doe", Age = 30, Email = "john@example.com" },
new MyDataClass { Name = "Jane Smith", Age = 25, Email = "jane@example.com" }
};
// Export data to CSV
var exportedFile = data.ToCsv().ToFile();
// Return the exported file to the caller
return exportedFile;
Starting from release 3.3.0, FileExporter supports exporting data using fluent rules.
Fluent Rules Example
First, create an ExportRule for your model. In the constructor, call GenerateRules() to automatically create default rules based on the model. To customize the setup, use the RuleFor() method to configure specific rules for your model's properties. Here's a quick demonstration:
Model Example:
public class FileData
{
public long Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime CreatedAt { get; set; }
public string? Comment { get; set; }
}
Export Rule Example:
This sample includes two constructors, one with a default name and one with a custom name.
namespace FileExporter.Tests.ExportRuleTests;
public class FileDataExportRule : ExportRule<FileData>
{
public FileDataExportRule()
{
GenerateRules();
// Custom rules
RuleFor(x => x.Description)
.WriteToColumn("Description")
.WithDefaultValue("Default text here");
RuleFor(x => x.CreatedAt)
.WriteToColumn("Creation date")
.WithDefaultValue("22/08/2024");
}
// OR with custom name
public FileDataExportRule() : base("File Data")
{
GenerateRules();
// Custom rules
RuleFor(x => x.Description)
.WriteToColumn("Description")
.WithDefaultValue("Default text here");
RuleFor(x => x.CreatedAt)
.WriteToColumn("Creation date")
.WithDefaultValue("22/08/2024");
}
}
If a property is incorrectly set up, an InvalidPropertyNameException will be thrown with a relevant message.
Controller Example:
Here is an example of how to integrate FileExporter into a web API controller:
namespace FileExporter.Demo.Controllers
{
[ApiController]
[Route("api/")]
public class FileDataExportController(ApiDbContext context) : Controller
{
[HttpGet("export-xlsx-via-rules")]
public IActionResult ExportXlsxViaRules()
{
var exportData = context.FileData.ToList();
var rule = new FileDataExportRule();
return rule.ToCsv(exportData).ToFile();
// OR alternative solution with extension method
return rule.ToFileFormat(exportData, ExportType.Xlsx).ToFile();
}
}
}
You can also export data to Excel (XLSX) or PDF formats by calling ToXlsx() or ToPdf() respectively.
Contributing
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. |
-
net9.0
- ClosedXML (>= 0.104.2)
- Microsoft.AspNetCore.OpenApi (>= 9.0.0)
- Microsoft.EntityFrameworkCore (>= 9.0.0)
- PdfSharpCore (>= 1.3.65)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on PandaTech.FileExporter:
Package | Downloads |
---|---|
Pandatech.SharedKernel.Postgres
Pandatech.SharedKernel.Postgres simplifies PostgreSQL integration in ASP.NET Core applications by providing utilities for Entity Framework Core setup, health checks, and other enhancements. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.0 | 48 | 11/21/2024 |
3.3.3 | 114 | 10/18/2024 |
3.3.2 | 110 | 8/27/2024 |
3.3.1 | 132 | 8/23/2024 |
3.3.0 | 115 | 8/23/2024 |
3.2.0 | 89 | 7/19/2024 |
3.1.1 | 92 | 6/28/2024 |
3.1.0 | 106 | 6/28/2024 |
3.0.10 | 116 | 6/28/2024 |
3.0.9 | 103 | 6/21/2024 |
3.0.8 | 112 | 5/13/2024 |
3.0.7 | 72 | 5/2/2024 |
3.0.6 | 114 | 4/29/2024 |
3.0.5 | 101 | 4/29/2024 |
3.0.4 | 115 | 4/26/2024 |
3.0.3 | 103 | 4/26/2024 |
3.0.2 | 116 | 4/26/2024 |
3.0.1 | 120 | 4/26/2024 |
3.0.0 | 122 | 4/26/2024 |
2.0.2 | 132 | 4/4/2024 |
Upgraded to .net 9