''"; -6ren">
gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:06 26 4
gpt4 key购买 nike

我正在尝试从 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com