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

时间:2015-06-17 20:34:06

标签: c# excel oledbconnection

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

谢谢, 亚历

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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;

答案 2 :(得分:0)

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

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

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