I have scoured the net, and found many people asking this, yet none have fixed my answer.
I have a Connection Class, and a Method that uses that Class in a page.
DataConn.cs
public static OleDbConnection ConnectExcel()
{
    //Store the connection details as a string
    string connstr =
        String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=pricelist.xlsx;Extended Properties=Excel 12.0 Xml;HDR=YES");
    //Initialise the connection to the server using the connection string.
    OleDbConnection oledbConn = new OleDbConnection(connstr);
    //Open the connection, we do this here so we can instantly be able to use SQL commands in the code.
    oledbConn.Open();
    return oledbConn;
}
public static void DisconnectExcel()
{
    _oledbConn.Dispose();
    _oledbConn.Close();
}
And the code that calls it
protected void Page_Load(object sender, EventArgs e)
{
    // Connection String
    const string xlStr = "SELECT * FROM [Sheet2$]";
    // Create OleDbCommand object and select data from worksheet Food
    OleDbCommand cmd = new OleDbCommand(xlStr, DataConn.ConnectExcel());
    // Create new OleDbDataAdapter
    OleDbDataAdapter oleda = new OleDbDataAdapter();
    oleda.SelectCommand = cmd;
    // Create a DataSet which will hold the data extracted from the worksheet.
    DataSet ds = new DataSet();
    // Fill the DataSet from the data extracted from the worksheet.
    oleda.Fill(ds);
    // Bind the data to the GridView
    gridPricelist.DataSource = ds;
    gridPricelist.DataBind();
}
Yes I STILL get:
System.Data.OleDb.OleDbException: Could not find installable ISAM.
Can anyone please help?
If you use more than 1 extended property then the value tokens must be quoted, otherwise there is no way for the driver to distinguish them from the other non-extended properties in the connection string;
...Extended Properties=""Excel 8.0;IMEX=1"""
modify your connection string
String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=pricelist.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES""");
reference: Could not find installable ISAM
please "Extended Properties" put it in ' '.
That is, like the following statement:
string connStr = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=pricelist.xlsx;Extended Properties=
'Excel 12.0 Xml;HDR=YES'")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With