I have done this in one of my application in following way
private void button1_Click(object sender, EventArgs e)
{
try
{
string fname = SelectTextFile("Excel File");
if (fname == null || string.IsNullOrEmpty(fname.Trim()))
{
MessageBox.Show("No Excel Sheet is selected to upload.");
}
else
{
string ifname = fname.Substring(fname.LastIndexOf('\\') + 1);
string[] filename = ifname.Split('.');
getDataFromXLS(fname);
StringBuilder sb = new StringBuilder();
int i = 0;
foreach (DataRow dr in dtCSV.Rows)
{
for (int k = 0; k < dtCSV.Columns.Count; k++)
{
sb.Append(dr.ItemArray.GetValue(k).ToString() + ",");
}
sb.Append("\n");
i++;
}
richTextBox1.Text = sb.ToString();
}
}
}
private string SelectTextFile(string strTitle)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "xls file (*.xls)|*.xls |xlsx file(*.xlsx)|*.xlsx|all file(*.*)|*.*";
dialog.Title = strTitle;
return (dialog.ShowDialog() == DialogResult.OK)
? dialog.FileName : null;
}
private void getDataFromXLS(string strFilePath)
{
string strConn = string.Empty;
try
{
if (System.IO.Path.GetExtension(strFilePath).Equals(".xlsx"))
{
strConn = "provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + strFilePath + "';Extended Properties=Excel 12.0;";
}
else
{
strConn = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + strFilePath + "';Extended Properties=Excel 8.0;";
}
OleDbConnection cnCSV = new OleDbConnection(strConn);
cnCSV.Open();
System.Data.DataTable dtsheetName = new System.Data.DataTable();
dtsheetName = cnCSV.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
string excelSheets = string.Empty;
int i = 0;
foreach (DataRow row in dtsheetName.Rows)
{
excelSheets = row["TABLE_NAME"].ToString();
break;
}
OleDbCommand cmdSelect = new OleDbCommand("SELECT * FROM [" + excelSheets + "]", cnCSV);
OleDbDataAdapter daCSV = new OleDbDataAdapter();
daCSV.SelectCommand = cmdSelect;
dtCSV.Clear();
daCSV.Fill(dtCSV);
richTextBox1.Text = dtCSV.ToString();
cnCSV.Close();
daCSV.Dispose();
cmdSelect.Dispose();
}
catch (Exception ex)
{
string Message = ex.Message.ToString();
MessageBox.Show(Message);
}
}
This may help you.