The Syncfusion WinUI Excel (XlsIO) library provides support for exporting data to Excel from various data sources such as data tables, arrays, collections, CSV, and TSV. Also allows exporting data from Excel to data tables, collections and nested classes.
Exporting data to Excel works on these platforms: .NET MAUI, ASP.NET Core, ASP.NET MVC, Blazor, Windows Forms, UWP, WinUI, WPF, and Xamarin.
Data from ADO.NET objects such as data tables, data columns, and data views can be exported to Excel worksheets.
Here is an example of how to export data from the data table to Excel in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet worksheet = workbook.Worksheets[0];
//Initialize the DataTable
DataTable table = SampleDataTable();
//Export data from DataTable to the worksheet
worksheet.ImportDataTable(table, true, 1, 1);
//Save the document into a stream
using (MemoryStream outputStream = new MemoryStream())
{
workbook.Save(outputStream);
}
}
private DataTable SampleDataTable()
{
//Create a DataTable with four columns
DataTable table = new DataTable();
table.Columns.Add("Dosage", typeof(int));
table.Columns.Add("Drug", typeof(string));
table.Columns.Add("Patient", typeof(string));
table.Columns.Add("Date", typeof(DateTime));
//Add five DataRows
table.Rows.Add(25, "Indocin", "David", DateTime.Now);
table.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
table.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
table.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
table.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
return table;
}
This option enables you to export:
Exporting one-dimensional or two-dimensional arrays to Excel worksheets is supported by XlsIO.
Here is an example of how to export data from an array to Excel in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet worksheet = workbook.Worksheets[0];
//Initialize the object array
object[] array = new object[4] { "Total Income", "Actual Expense", "Expected Expenses", "Profit" };
//Export data from object array to the worksheet
worksheet.ImportArray(array, 1, 1, false);
//Save the document into a stream
using (MemoryStream outputStream = new MemoryStream())
{
workbook.Save(outputStream);
}
}
This option enables you to export:
Export the collection with the desired data to an Excel worksheet.
Here is an example of how to export data from a collection to Excel in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
IWorkbook workbook = application.Workbooks.Create(1);
IWorksheet worksheet = workbook.Worksheets[0];
//Initialize the collection
IList<Customer> reports = GetSalesReports();
//Export data from the collection to the worksheet
worksheet.ImportData(reports, 2, 1, false);
//Save the document into a stream
using (MemoryStream outputStream = new MemoryStream())
{
workbook.Save(outputStream);
}
}
//Gets a list of sales reports
public List<Customer> GetSalesReports()
{
List<Customer> reports = new List<Customer>();
reports.Add(new Customer("Andy Bernard", "45000", "58000"));
reports.Add(new Customer("Jim Halpert", "34000", "65000"));
reports.Add(new Customer("Karen Fillippelli", "75000", "64000"));
reports.Add(new Customer("Phyllis Lapin", "56500", "33600" ));
reports.Add(new Customer("Stanley Hudson", "46500", "52000"));
return reports;
}
//Customer details
public class Customer
{
[DisplayNameAttribute("Sales Person Name")]
public string SalesPerson { get; set; }
[Bindable(false)]
public string SalesJanJun { get; set; }
public string SalesJulDec { get; set; }
public Customer(string name, string janToJun, string julToDec)
{
SalesPerson = name;
SalesJanJun = janToJun;
SalesJulDec = julToDec;
}
}
This enables you to export:
Comma-separated value (CSV) files are helpful in generating tabular data or lightweight reports with a few columns and multiple rows. Excel opens such files to make the data easier to read.
The Syncfusion WinUI Excel library supports opening and saving CSV files in seconds. The below code example shows how to open a CSV file, also save it as XLSX file.
Here is an example of how to save a CSV file as Excel in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
using(Stream inputStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("WinUISample.Sample.xlsx"))
{
IWorkbook workbook = application.Workbooks.Open(inputStream);
//Save the document into a stream
using (FileStream outputStream = new FileStream(“Output.xlsx”, FileMode.Create, FileAccess.ReadWrite))
{
workbook.Save(outputStream);
}
}
}
The data in an Excel document can be exported to the data table.
Here is an example of how to export data from Excel to a data table in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
using(Stream inputStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("WinUISample.Sample.xlsx"))
{
IWorkbook workbook = application.Workbooks.Open(inputStream);
IWorksheet worksheet = workbook.Worksheets[0];
//Read data from the worksheet and export to the DataTable
DataTable dataTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);
}
}
The data in Excel document can be exported to a collection object.
Here is an example of how to export data from Excel to a collection object in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
using(Stream inputStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("WinUISample.Sample.xlsx"))
{
IWorkbook workbook = application.Workbooks.Open(inputStream);
IWorksheet worksheet = workbook.Worksheets[0];
//Export worksheet data into a collection object
List<Report> collectionObject = worksheet.ExportData<Report>(1, 1, 10, 3);
}
}
public class Report
{
[DisplayNameAttribute("Sales Person Name")]
public string SalesPerson { get; set; }
[Bindable(false)]
public string SalesJanJun { get; set; }
public string SalesJulDec { get; set; }
public Report()
{
}
}
The data in an Excel document can be exported to a nested collection object.
Here is an example of how to export data from Excel to a nested collection object in C# using the Syncfusion WinUI Excel library.
using (ExcelEngine excelEngine = new ExcelEngine())
{
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;
using(Stream inputStream = typeof(App).GetTypeInfo().Assembly.GetManifestResourceStream("WinUISample.Sample.xlsx"))
{
IWorkbook workbook = application.Workbooks.Open(inputStream);
IWorksheet worksheet = workbook.Worksheets[0];
//Map column headers in the worksheet with class properties.
Dictionary<string, string> mappingProperties = new Dictionary<string, string>();
mappingProperties.Add("Customer ID", "CustId");
mappingProperties.Add("Customer Name", "CustName");
mappingProperties.Add("Customer Age", "CustAge");
mappingProperties.Add("Order ID", "CustOrder.Order_Id");
mappingProperties.Add("Order Price", "CustOrder.Price");
//Export worksheet data into a nested class object.
List<Customer> nestedClassObject = worksheet.ExportData<Customer>(1, 1, 10, 5, mappingProperties);
}
}
//Customer details class
public partial class Customer
{
public int CustId { get; set; }
public string CustName { get; set; }
public int CustAge { get; set; }
public Order CustOrder { get; set; }
public Customer()
{
}
}
//Order details class
public partial class Order
{
public int Order_Id { get; set; }
public double Price { get; set; }
public Order()
{
}
}
Greatness—it’s one thing to say you have it, but it means more when others recognize it. Syncfusion is proud to hold the following industry awards.