首页 文章

使用OldeDbConnection读取excel表使用第9行作为列名?

提问于
浏览
1

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

谢谢,亚历克斯

3 回答

  • 0

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

    要在特定方案上添加一些输入:有一个具有Rows属性的Worksheet对象 .

  • 0

    如果您对其他方法持开放态度我建议您使用LinqToExcel,您可以在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;
    
  • 0

    没有人回答我的问题好..但我在我的寂寞中想出来了 .

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

    如果有人想要对此进行更多说明,请继续询问 .

相关问题