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

标签 c#

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

"SELECT * From [" + SheetName + "] WHERE [F3] <> ''";

我想将代码读取到数据表中并仍然保留标题。出现在垃圾线之后。

问题是,当我使用上面的 WHERE 子句过滤垃圾行时,数据表列标题显示为 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 的快照。

enter image description here

关于C#读取标题不是第一行的excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267154/

相关文章:

c# - 使用 C# 列出来自 Oracle 的超过 1000 万条记录

c# - 将枚举转换为具有空格的字符串

c# - 在 ASP.NET MVC 应用程序中处理记录/实体级别的安全性

c# - Convert.ToDbType() 方法的逻辑

c# - 获取已检查的事件数据绑定(bind) wpf

c# - 实现自定义 MembershipUser 和自定义 MembershipProvider

c# - 如何将文件拖放到应用程序中?

c# - mysql 只返回一个值

c# - API Get 需要 Content-Type application/json;charset=UTF-8 - Http 客户端问题

c# - .NET Windows 应用商店应用程序中 CultureInfo.GetCultures 的替代品