Excel c#.net在不在后台打开Excel的情况下检索数据

时间:2014-01-30 06:35:45

标签: c# excel

我正在尝试使用C#读取Excel工作表中的数据,这是我的代码。

    public void ReadExcel()
    {
        try
        {
            string sheetName = "Sheet1$A1:C6";
            DataTable sheetTable = loadSingleSheet(@"C:\Users\..\Desktop\Sample.xls",                  sheetName);
        }
        catch (Exception e)
        {
            throw e;
        }
    }
    private OleDbConnection returnConnection(string fileName)
    {
        return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;Extended Properties=\"Excel 8.0;\"");
    }
    private DataTable loadSingleSheet(string fileName, string sheetName)
    {
        DataTable sheetData = new DataTable();
        using (OleDbConnection conn = this.returnConnection(fileName))
        {
            conn.Open();
            // retrieve the data using data adapter
            OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
            sheetAdapter.Fill(sheetData);
        }
        return sheetData;
    }

但DataTable总是得到空值

enter image description here

1 个答案:

答案 0 :(得分:1)

这是使用ODBC和ADO.Net

的方法
    private void Form1_Load(object sender, EventArgs e)
    {   
       try
       {        
            string sheetName = "Sheet1$";// Read the whole excel sheet document      
            DataTable sheetTable = loadSingleSheet(@"C:\excelFile.xls", sheetName);
            dataGridView1.DataSource = sheetTable;

            string sheetNameWithRange = "Sheet1$A1:D10"; // Read excel sheet document from A1 cell to D10 cell values.
            DataTable sheetTableWithRange = loadSingleSheet(@"C:\excelFile.xls",sheetNameWithRange);
            dataGridView2.DataSource = sheetTableWithRange;
       }
       catch (Exception Ex)
       {
            MessageBox.Show(Ex.Message, "");
       }  
    }        

    private OleDbConnection returnConnection(string fileName)
    {
        return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;Extended Properties=\"Excel 8.0;\"");
    }

    private DataTable loadSingleSheet(string fileName, string sheetName)
    {           
        DataTable sheetData = new DataTable();
        using (OleDbConnection conn = this.returnConnection(fileName))
        {
           conn.Open();
           // retrieve the data using data adapter
           OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
            sheetAdapter.Fill(sheetData);
        }                        
        return sheetData;
    }