I am reading values from Excel sheet. Columns generally contain `String` but sometimes it may contain numeric values. While reading Excel sheet into datatable numeric value is read as blank. 

It reads 90004 as `null`, But if I sort this column by numeric the it reads numeric value and gives string value as `null` and if I sort this column by string then it reads string value and gives numeric as null. 

```
AC62614 abc     EA  MISC
AC62615 pqr     EA  MISC
AC62616 xyz     EA  MISC
AC62617 test    EA  90004
AC62618 test3   TO  MISC
AC62619 test3   TO  STEEL

```

my code: 

```
    public static DataTable ReadExcelFile(FileUpload File1, string strSheetName)
    {
        string strExtensionName = "";
        string strFileName = System.IO.Path.GetFileName(File1.PostedFile.FileName);
        DataTable dtt = new DataTable();
        if (!string.IsNullOrEmpty(strFileName))
        {
            //get the extension name, check if it's a spreadsheet
            strExtensionName = strFileName.Substring(strFileName.IndexOf(".") + 1);
            if (strExtensionName.Equals("xls") || strExtensionName.Equals("xlsx"))
            {
                /*Import data*/
                int FileLength = File1.PostedFile.ContentLength;
                if (File1.PostedFile != null && File1.HasFile)
                {

                    //upload the file to server
                    //string strServerPath = "~/FolderName"; 
                    FileInfo file = new FileInfo(File1.PostedFile.FileName);
                    string strServerFileName = file.Name;
                    string strFullPath =     HttpContext.Current.Server.MapPath("UploadedExcel/" + strServerFileName);
                    File1.PostedFile.SaveAs(strFullPath);

                    //open connection out to read excel
                    string strConnectionString = string.Empty;
                    if (strExtensionName == "xls")
                        strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
                                                + strFullPath
                                                + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\"";
                    else if (strExtensionName == "xlsx")
                        strConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
                                                + strFullPath
                                                + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\"";

                    if (!string.IsNullOrEmpty(strConnectionString))
                    {
                        OleDbConnection objConnection = new OleDbConnection(strConnectionString);
                        objConnection.Open();
                        DataTable oleDbSchemaTable = objConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                        bool blExists = false;
                        foreach (DataRow dtr in oleDbSchemaTable.Rows)
                        {
                            //reads from the spreadsheet called 'Sheet1'
                            if (dtr["TABLE_NAME"].ToString() == "" + strSheetName + "$")
                            {
                                blExists = true;
                                break;
                            }
                        }
                        if (blExists)
                        {
                            OleDbCommand objCmd = new OleDbCommand(string.Format("Select * from [{0}$]", strSheetName), objConnection);
                            OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
                            objAdapter1.SelectCommand = objCmd;
                            DataSet objDataSet = new DataSet();
                            objAdapter1.Fill(objDataSet);
                            objConnection.Close();
                            dtt = objDataSet.Tables[0];
                        }

                    }
                }
            }
        }
        return dtt;
    }

```