DEV Community

Cover image for Export Data from Excel to Data Tables with Customization in C#
Suresh Mohan for Syncfusion, Inc.

Posted on • Originally published at syncfusion.com on

Export Data from Excel to Data Tables with Customization in C#

Exporting data from Excel to other formats lets users visualize the data according to their requirement. Syncfusion Excel Library (XlsIO) provides support to export worksheet data to data tables, collection objects, and nested class objects for handling the data efficiently.

In this blog, you will learn the steps to export data from:

Getting started

Step 1: Create a new C# console application in Visual Studio.

Create a New Console Application
Create a New Console Application

*Step 2: * Then, install the Syncfusion.XlsIO.WinForms NuGet package as a reference to the application from NuGet.org.

Install NuGet Package
Install NuGet Package

Step 3: Now, include the following namespaces in the Program.cs file.

using Syncfusion.XlsIO;
using System.Data;
using System.IO;
using System.Reflection;

Enter fullscreen mode Exit fullscreen mode

Export to data table

The project is ready! Let’s add the code that exports data from Excel to a data table. The ExportDataTable() method in XlsIO allows you to do this:

Step 1: Open or create an Excel spreadsheet using the Excel engine in XlsIO. This is the source spreadsheet from which we are going to export data to a data table. Here, we are opening an existing Excel document with data.

ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;

FileStream inputStream = new FileStream("Sample.xlsx", FileMode.Open, FileAccess.Read);
IWorkbook workbook = application.Workbooks.Open(inputStream);

Enter fullscreen mode Exit fullscreen mode

Step 2: Then, add the code to export the data from Excel to a data table. There are two overloads to perform this operation:

  • ExportDataTable (IRange dataRange, ExcelExportDataTableOptions options): This overload allows you to specify the range of data to be exported along with the export options. The following code example exports data from the specified range to the data table.
//Export data from the specified range to the data table.
DataTable customersTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);

Enter fullscreen mode Exit fullscreen mode
  • ExportDataTable (int firstRow, int firstColumn, int maxRows, int maxColumns, ExcelExportDataTableOptions options): This overload allows you to specify the rows and columns of the data to be exported along with the export options. We should define the start and end rows and columns in this method.
//Export data from the first row and first column, up to the 10th row and 10th column of the Excel worksheet to the data table.
DataTable customersTable = worksheet.ExportDataTable(1, 1, 10, 10, ExcelExportDataTableOptions.ColumnNames);

Enter fullscreen mode Exit fullscreen mode

The following complete code snippet illustrates how to export data from Excel to a data table.

static void Main(string[] args)
{
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
        IApplication application = excelEngine.Excel;
        application.DefaultVersion = ExcelVersion.Xlsx;
        FileStream inputStream = new FileStream("Sample.xlsx", FileMode.Open, FileAccess.Read);
        IWorkbook workbook = application.Workbooks.Open(inputStream);
        IWorksheet worksheet = workbook.Worksheets[0];

        //Read data from the worksheet and export to the data table.
        DataTable customersTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);

        //Save the workbook as stream.
        FileStream stream = new FileStream("ExportToDT.xlsx", FileMode.Create, FileAccess.ReadWrite);
        workbook.SaveAs(stream);
        stream.Dispose();
    }
}

Enter fullscreen mode Exit fullscreen mode

Export to data table with customization

So, we have learned to export the data from Excel to a data table. Now, let’s focus on customizing the data during the export. The following are different customization options available when exporting the data to a data table:

  • Modify the value of a cell in the data table.
  • Skip specific rows.
  • Stop the data export.

The modifications made will only be reflected in the data table, and the data in the Excel spreadsheet will remain the same.

The ExportDataTableEvent will be triggered when exporting data from each cell. This event helps in performing the following actions using the ExportDataTableActions enumeration:

  • Default: Exports worksheet data to the data table without any action.
  • SkipRows: Exports worksheet data to the data table by skipping specific rows.
  • StopExporting: Stops exporting the data from the Excel worksheet to the data table.

The following steps show how to export data from an Excel worksheet to a data table with customization:

Step 1: Open or create an Excel document using the Excel engine in XlsIO. Here, we are opening an existing Excel document with data.

Note: Follow the Getting Started section to create a project with the NuGet packages.

ExcelEngine excelEngine = new ExcelEngine();
IApplication application = excelEngine.Excel;
application.DefaultVersion = ExcelVersion.Xlsx;

FileStream inputStream = new FileStream("Sample.xlsx", FileMode.Open, FileAccess.Read);
IWorkbook workbook = application.Workbooks.Open(inputStream);

Enter fullscreen mode Exit fullscreen mode

Step 2: Then, create an event handler method in the class.

private void ExportDataTable_EventAction(ExportDataTableEventArgs e)
{
   //Event handler code should be placed here.
}

Enter fullscreen mode Exit fullscreen mode

Step 3: Now, bind the event handler with ExportDataTableEvent in IWorksheet.

//Event to choose an action while exporting data from Excel to data table.
//The event will be triggered at this line while exporting data from each cell in the Excel worksheet.
worksheet.ExportDataTableEvent += ExportDataTable_EventAction();

Enter fullscreen mode Exit fullscreen mode

Step 4: Finally, export worksheet data using the ExportDataTable method.

//Read data from the worksheet and exports to the data table.
DataTable customersTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);

Enter fullscreen mode Exit fullscreen mode

The following is the complete code example of how to export data from an Excel worksheet to a data table by triggering an event to customize the export.

static void Main(string[] args)
{
    using (ExcelEngine excelEngine = new ExcelEngine())
    {
        IApplication application = excelEngine.Excel;
        application.DefaultVersion = ExcelVersion.Xlsx;
        FileStream inputStream = new FileStream("Sample.xlsx", FileMode.Open, FileAccess.Read);
        IWorkbook workbook = application.Workbooks.Open(inputStream);
        IWorksheet worksheet = workbook.Worksheets[0];

        //Event to choose an action while exporting data from Excel to data table.
        //The event will be triggered at this line while exporting data from each cell in the Excel worksheet.
        worksheet.ExportDataTableEvent += ExportDataTable_EventAction();

        //Read data from the worksheet and export to the data table.
        DataTable customersTable = worksheet.ExportDataTable(worksheet.UsedRange, ExcelExportDataTableOptions.ColumnNames);

        //Saving the workbook as stream.
        FileStream stream = new FileStream("ExportToDT.xlsx", FileMode.Create, FileAccess.ReadWrite);
        workbook.SaveAs(stream);
        stream.Dispose();
    }
}

Enter fullscreen mode Exit fullscreen mode

The following code is the event handler for the previous code.

private void ExportDataTable_EventAction(ExportDataTableEventArgs e)
{
    if (e.ExcelValue != null && e.ExcelValue.ToString() == "Owner")
    {
        //Skips the row to export into the data table if the Excel cell value is “Owner”.
        e.ExportDataTableAction = ExportDataTableActions.SkipRow;    
    }
    else if (e.DataTableColumnIndex == 0 && e.ExcelRowIndex == 5 && e.ExcelColumnIndex == 1)
    {
        //Stops the export based on the condition.
        e.ExportDataTableAction = ExportDataTableActions.StopExporting;   
    }
    else if (e.ExcelValue != null && e.ExcelValue.ToString() == "Mexico D.F.")
    {
        //Replaces the cell value in the data table without affecting the Excel document.
        e.DataTableValue = "Mexico";     
    }
}

Enter fullscreen mode Exit fullscreen mode

GitHub samples

For more information, refer to the export data from Excel to a data table with customization demo project.

Conclusion

As you can see, the Syncfusion Excel Library (XlsIO) provides support to export data from Excel to data tables with customization options. Take a moment to peruse the documentation, where you’ll find other options and features, all with accompanying code samples. Using the library, you can also export Excel data to PDF, image, CSV, TSV, HTML, collections of objects, ODS and JSON file formats, and more.

If you are new to our Excel Library, it is highly recommended that you follow our Getting Started guide.

Are you already a Syncfusion user? You can download the product setup. If you’re not yet a Syncfusion user, you can download a free, 30-day trial.

If you have any questions about these features, please let us know in the comments below. You can also contact us through our support forum, Direct-Trac, or feedback portal. We are happy to assist you!

Related blogs

  1. 6 Easy Ways to Export Data to Excel in C#
  2. How to Export Data from SQL Server to Excel Table in C#
  3. Export Data from Collection to Excel and Group It in C#
  4. Export Data to a Predefined Excel Template in C#
  5. Easy Steps to Export HTML Tables to an Excel Worksheet in C#

Top comments (0)