When i load data in datagrid from excel file using closexml it generate first row as a column header of the excel file. But i want to define my custom header of the datagrid when closexml load data from excel file. I dont know how to do this . I use following code to load data from excel file to datagrid.
try
{
OpenFileDialog dlg_im = new OpenFileDialog();
dlg_im.Filter = "Excel File|*.xlsx";
//create openfileDialog Object
OpenFileDialog openFileDialog1 = new OpenFileDialog();
//open file format define Excel Files(.xls)|*.xls| Excel Files(.xlsx)|*.xlsx|
openFileDialog1.Filter = "Excel Files (*.xlsx) |*.xlsx";
openFileDialog1.FilterIndex = 3;
//not allow multiline selection at the file selection level
openFileDialog1.Multiselect = false;
//define the name of openfileDialog
openFileDialog1.Title = "Open Excel File";
//define the initial directory
openFileDialog1.InitialDirectory = @"Desktop";
//executing when file open
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string filePath = openFileDialog1.FileName;
//Open the Excel file using ClosedXML.
using (XLWorkbook workBook = new XLWorkbook(filePath))
{
//Read the first Sheet from Excel file.
IXLWorksheet workSheet = workBook.Worksheet(1);
//Create a new DataTable.
DataTable dt = new DataTable();
//Loop through the Worksheet rows.
bool firstRow = true;
foreach (IXLRow row in workSheet.Rows())
{
//Use the first row to add columns to DataTable.
if (firstRow)
{
foreach (IXLCell cell in row.Cells())
{
dt.Columns.Add(cell.Value.ToString());
}
firstRow = false;
}
else
{
//Add rows to DataTable.
dt.Rows.Add();
int i = 0;
foreach (IXLCell cell in row.Cells())
{
dt.Rows[dt.Rows.Count - 1][i] = cell.Value.ToString();
i++;
}
}
DataGridImp.DataSource = dt;
}
}
}
}