在c#中使用oledb获取Excel数据范围

2024-01-29

我想通过使用 oledb 获取 Excel 工作表使用的数据范围。 代码如下,

String strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;"
                                    + "Data Source=E:\\DOTNET\\CrsMicro\\CA.xls;"
                                    + "Extended Properties='Excel 8.0;HDR=Yes'";


using (OleDbConnection connExcel = new OleDbConnection(strExcelConn))
        {
            string selectString = "SELECT * FROM [CA$A1:D500]";
            using (OleDbCommand cmdExcel = new OleDbCommand(selectString,connExcel))
            {
                cmdExcel.Connection = connExcel;
                connExcel.Open();
                DataTable dt=new DataTable();                    
                OleDbDataAdapter adp = new OleDbDataAdapter();
                adp.SelectCommand = cmdExcel;
                adp.FillSchema(dt, SchemaType.Source);
                adp.Fill(dt);
                int range=dt.Columns.Count;
                int row = dt.Rows.Count;

            //var result = cmdExcel.ExecuteReader();

            //DataTable dtExcelSchema;
            //dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
           // string excelsheetname = dtExcelSchema.Rows[0].ItemArray[2].ToString();
            connExcel.Close();
            //string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
        }
    }

我的纸张范围并不总是 A1:D500,它可能会经常变化。所以我需要动态获取工作表范围。我知道这可以通过互操作来实现,但我需要在 oledb 中完成。有什么建议吗?


创建一个命名范围:https://msdn.microsoft.com/EN-US/library/office/ff196817.aspx https://msdn.microsoft.com/EN-US/library/office/ff196817.aspx并替换selectString to

"SELECT * FROM [CA$MyNamedRange]"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在c#中使用oledb获取Excel数据范围 的相关文章

随机推荐