我尝试使用oleDbConnection和OleDbDataAdapter读取excel表,然后使用该信息填充DataSet。我需要弄清楚如何做的是忽略excel表中的前8行并读取它,好像第9行是第一行,(使列名称为第9行中的值)。
谢谢, 亚历
答案 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中的行)将所有行添加到新表中。
如果有人想要对此进行更多说明,请继续询问。