Export DataTable To Excel in C#
By FoxLearn 1/8/2025 4:20:45 AM 114
In this article, I introduce a utility for exporting a DataTable to an Excel file in C# using the Interop method.
Add Interop References
The first step in the process is adding a reference to Microsoft.Office.Interop.Excel
in your C# project to enable interaction with Excel.
Create a DataTable Dynamically
Use the following code to create and populate a DataTable with sample data.
static DataTable CreateSampleTable() { // Create a DataTable with five columns DataTable table = new DataTable(); table.Columns.Add("ProductID", typeof(int)); table.Columns.Add("ProductName", typeof(string)); table.Columns.Add("Category", typeof(string)); table.Columns.Add("Price", typeof(decimal)); table.Columns.Add("StockQuantity", typeof(int)); // Add sample rows of product data table.Rows.Add(101, "Laptop", "Electronics", 750.50, 30); table.Rows.Add(102, "Smartphone", "Electronics", 350.75, 50); table.Rows.Add(103, "Desk Chair", "Furniture", 120.30, 15); table.Rows.Add(104, "Coffee Maker", "Appliances", 45.99, 80); table.Rows.Add(105, "Blender", "Appliances", 90.99, 20); table.Rows.Add(106, "Monitor", "Electronics", 180.00, 40); table.Rows.Add(107, "Keyboard", "Electronics", 25.49, 70); table.Rows.Add(108, "Sofa", "Furniture", 600.00, 10); table.Rows.Add(109, "Table Lamp", "Furniture", 40.00, 60); table.Rows.Add(110, "Headphones", "Electronics", 60.00, 100); return table; }
Create a Class for Generating Excel Files
We created a separate class file named ExcelExporter.cs
to manage the process of exporting sales data to Excel.
Declare Excel Objects
Define the following variables:
Microsoft.Office.Interop.Excel.Application excel; Microsoft.Office.Interop.Excel.Workbook excelWorkBook; Microsoft.Office.Interop.Excel.Worksheet excelSheet; Microsoft.Office.Interop.Excel.Range excelCellRange;
Initialize Excel Objects
// Start Excel and get the Application object. excel = new Microsoft.Office.Interop.Excel.Application(); // Make Excel invisible and disable alerts. excel.Visible = false; excel.DisplayAlerts = false; // Create a new Workbook. excelWorkBook = excel.Workbooks.Add(Type.Missing); // Create a new Worksheet. excelSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.ActiveSheet; excelSheet.Name = "Sales Report";
Write Data to Excel File
excelSheet.Cells[1, 1] = "Product Name"; excelSheet.Cells[1, 2] = "Units Sold"; excelSheet.Cells[1, 3] = "Price per Unit"; excelSheet.Cells[1, 4] = "Total Sales"; excelSheet.Cells[2, 1] = "Laptop"; excelSheet.Cells[2, 2] = 50; excelSheet.Cells[2, 3] = 1200.00; excelSheet.Cells[2, 4] = 50 * 1200.00; excelSheet.Cells[3, 1] = "Smartphone"; excelSheet.Cells[3, 2] = 75; excelSheet.Cells[3, 3] = 800.00; excelSheet.Cells[3, 4] = 75 * 800.00; excelSheet.Cells[4, 1] = "Tablet"; excelSheet.Cells[4, 2] = 30; excelSheet.Cells[4, 3] = 500.00; excelSheet.Cells[4, 4] = 30 * 500.00;
Work with Ranges and Format Cells
// Resize columns automatically. excelCellRange = excelSheet.Range[excelSheet.Cells[1, 1], excelSheet.Cells[4, 4]]; excelCellRange.EntireColumn.AutoFit(); // Add borders to the range. Microsoft.Office.Interop.Excel.Borders border = excelCellRange.Borders; border.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; border.Weight = 2d;
Apply Formatting and Color to Cells
We use the following method to format and color the cells:
public void FormatExcelCells(Microsoft.Office.Interop.Excel.Range range, string htmlColorCode, System.Drawing.Color fontColor, bool isBold) { range.Interior.Color = System.Drawing.ColorTranslator.FromHtml(htmlColorCode); range.Font.Color = System.Drawing.ColorTranslator.ToOle(fontColor); if (isBold) { range.Font.Bold = isBold; } }
Here's how to write data from the CreateSampleTable
method into an Excel file:
using Microsoft.Office.Interop.Excel; using System; using System.Data; class ExcelExporter { public static void ExportToExcel(DataTable dataTable) { // Step 1: Declare Excel objects Application excel = new Application(); Workbook excelWorkBook = excel.Workbooks.Add(Type.Missing); Worksheet excelSheet = (Worksheet)excelWorkBook.ActiveSheet; excelSheet.Name = "Sample Data"; // Step 2: Write data to Excel file // Write headers for (int col = 0; col < dataTable.Columns.Count; col++) { excelSheet.Cells[1, col + 1] = dataTable.Columns[col].ColumnName; } // Write data rows for (int row = 0; row < dataTable.Rows.Count; row++) { for (int col = 0; col < dataTable.Columns.Count; col++) { excelSheet.Cells[row + 2, col + 1] = dataTable.Rows[row][col].ToString(); } } // Step 3: Format Excel cells Range excelCellRange = excelSheet.Range[excelSheet.Cells[1, 1], excelSheet.Cells[dataTable.Rows.Count + 1, dataTable.Columns.Count]]; excelCellRange.EntireColumn.AutoFit(); // Add borders Borders border = excelCellRange.Borders; border.LineStyle = XlLineStyle.xlContinuous; border.Weight = 2d; // Step 4: Make Excel visible and save excel.Visible = true; excel.DisplayAlerts = false; // Optional: Save to a file // string filePath = @"C:\yourfile.xlsx"; // excelWorkBook.SaveAs(filePath); } static void Main() { // Create a sample table DataTable sampleTable = CreateSampleTable(); // Export the table to Excel ExportToExcel(sampleTable); } }
This example will write the contents of the CreateSampleTable
method to an Excel file.
- How to fix 'Failure sending mail' in C#
- How to Parse a Comma-Separated String from App.config in C#
- How to convert a dictionary to a list in C#
- How to retrieve the Executable Path in C#
- How to validate an IP address in C#
- How to retrieve the Downloads Directory Path in C#
- C# Tutorial
- Dictionary with multiple values per key in C#
Categories
Popular Posts
Freedash bootstrap lite
11/13/2024
Material Lite Admin Template
11/14/2024
Focus Admin Dashboard Template
11/18/2024
Stisla Admin Dashboard Template
11/18/2024