C# C读取头不是第一行的excel文件

C# C读取头不是第一行的excel文件,c#,C#,我正在尝试从excel文件中读取数据。完整代码如下。前几行是垃圾,因此请使用以下命令跳过它们 "SELECT * From [" + SheetName + "] WHERE [F3] <> ''"; 我希望将代码读入datatable,并且仍然保留标题。出现在垃圾行之后 问题是,当我使用上面的WHERE子句过滤垃圾行时,datatable列标题显示为F1、F2等 在我的连接字符串中,我确实指定了我想要的头 HDR=是 如果我从SELECT中删除WHERE子句,它将按预期工作 请告

我正在尝试从excel文件中读取数据。完整代码如下。前几行是垃圾,因此请使用以下命令跳过它们

"SELECT * From [" + SheetName + "] WHERE [F3] <> ''";
我希望将代码读入datatable,并且仍然保留标题。出现在垃圾行之后

问题是,当我使用上面的WHERE子句过滤垃圾行时,datatable列标题显示为F1、F2等

在我的连接字符串中,我确实指定了我想要的头

HDR=是

如果我从SELECT中删除WHERE子句,它将按预期工作

请告知

switch (Extension)
            {
                case ".xls": //Excel 97-03
                    conStr = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
                    break;
                case ".xlsx": //Excel 07
                    conStr = ConfigurationManager.ConnectionStrings["Excel07ConString"].ConnectionString;
                    break;
            }
            conStr = String.Format(conStr, FilePath, "Yes");
            OleDbConnection connExcel = new OleDbConnection(conStr);
            OleDbCommand cmdExcel = new OleDbCommand();
            OleDbDataAdapter oda = new OleDbDataAdapter();
            DataTable dt = new DataTable();
            cmdExcel.Connection = connExcel;

            //Get the name of First Sheet
            connExcel.Open();
            DataTable dtExcelSchema;
            dtExcelSchema = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string SheetName = ListSheets.SelectedValue;
            connExcel.Close();

            //Read Data from First Sheet
            connExcel.Open();
            cmdExcel.CommandText = "SELECT * From [" + SheetName + "] WHERE [F3] <> ''";
            oda.SelectCommand = cmdExcel;
            oda.Fill(dt);


     connExcel.Close();

假设您的Excel工作表中有固定行的垃圾代码,您可以这样执行查询

"SELECT * From [Sheet1$A5:C]"
这里的假设是,标题位于第5行,C是数据结束的列。这将正确加载列的标题名称

添加用于执行上述查询的Excel的快照


假设您的Excel工作表中有固定行的垃圾代码,您可以这样执行查询

"SELECT * From [Sheet1$A5:C]"
这里的假设是,标题位于第5行,C是数据结束的列。这将正确加载列的标题名称

添加用于执行上述查询的Excel的快照


因为这样,excel中的标题就不会被放入数据表中,因为标题是表中固定的垃圾行数?我已经更新了答案。请检查一下这是否适合你。我已经在本地运行了它,它似乎满足了您的要求。这似乎得到了标题,但不是数据。它也得到了数据。您得到的行数是多少?因为这样excel中的标题不会被放入数据表中,因为标题是您的工作表中固定的垃圾行数?我已更新了答案。请检查一下这是否适合你。我已经在本地运行了它,它似乎满足了您的要求。这似乎得到了标题,但不是数据。它也得到了数据。你的行数是多少?