Search code examples
c#excelado.netxlsx

Read Data from XLSX in c#


I am new to c# and am trying to read an XLSX file in c# with the following code:

string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\\Temp\\source.xlsx;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

//code to read the content of format file 
OleDbConnection con = new OleDbConnection(Connection);
OleDbCommand command = new OleDbCommand();

DataTable dt = new DataTable();
OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Tabelle1$]", con);

myCommand.Fill(dt);
Console.Write(dt.Rows.Count);

I get t a correct count from the output, but I have 2 more questions:

1.How do make a select where statement (how to access the rows)?

 select * from [Tabelle1$] where A = '123' (A being an existing Excel row)

will throw an error mentioning wrong parameters...

2.can anyone supply me with a tutorial link or short sample how to access the data?


Solution

  • Please refer the following sample code:

    private DataTable LoadXLS(string strFile, String sheetName, String column, String value)
    {
        DataTable dtXLS = new DataTable(sheetName);
    
        try
        {
           string strConnectionString = "";
    
           if(strFile.Trim().EndsWith(".xlsx")) {
    
               strConnectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", strFile);
    
           } else if(strFile.Trim().EndsWith(".xls")) {
    
               strConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", strFile);
    
           }
    
           OleDbConnection SQLConn = new OleDbConnection(strConnectionString);
    
           SQLConn.Open();
    
           OleDbDataAdapter SQLAdapter = new OleDbDataAdapter();
    
           string sql = "SELECT * FROM [" + sheetName + "$] WHERE " + column + " = " + value;
    
           OleDbCommand selectCMD = new OleDbCommand(sql, SQLConn);
    
           SQLAdapter.SelectCommand = selectCMD;
    
           SQLAdapter.Fill(dtXLS);
    
           SQLConn.Close();
        }
    
        catch (Exception e)
        {
           Console.WriteLine(e.ToString());
        }
    
        return dtXLS;
    
    }