使用 OleDbConnection 读取 excel sheet 使用第 9 行作为列名?

Use OldeDbConnection to read excel sheet using 9th row as the column names?

我正在尝试使用 oleDbConnection 和 OleDbDataAdapter 读取 excel sheet,然后用该信息填充数据集。我需要弄清楚如何做的是忽略 excel sheet 中的前 8 行并读取它,就好像第 9 行是第一行,(使列名称成为第 9 行中的值行)。

谢谢, 亚历克斯

查看 How to open an Excel file in C#?

要针对您的特定场景添加一些输入:有一个具有 Rows 属性的 Worksheet 对象。

如果您对其他方法持开放态度,我建议使用 LinqToExcel you can find it on NuGet,这样您最终会得到一个 IQueryable 对象,而不是一些混乱的数据集,例如:

正在定义您的实体:

class MyType
{
    public string A { get; set; }
    public string B { get; set; }
    public string C { get; set; }
}

如果您知道要读取的范围,您可以执行以下操作:

var excel=new ExcelQueryFactory(@"c:\temp\temp.xlsx");
    var q = from r in excel.WorksheetRange<MyType>("A9","C12")
            select r;

然后您可以使用 q 进行过滤、迭代等...

如果您不知道文件中有多少行来定义范围,您可以这样做:

var excel=new ExcelQueryFactory(@"c:\temp\temp.xlsx");
int rowCount=excel.WorksheetNoHeader().Count();
    var q = from r in excel.WorksheetRange<MyType>("A9","C"+rowCount)
            select r;

没有人很好地回答我的问题..但我是在寂寞的时候想出来的。

我通过将 excel sheet 读入数据表解决了这个问题。然后从数据表中删除前 8 行。然后我创建了第二个数据 table,手动添加了列(使用 Columns.Add 命令)并使用 foreach(OGdataTable 中的行)将所有行添加到新的 table.

如果有人想对此进行更多说明,请继续提问。