我正在尝试使用 oleDbConnection 和 OleDbDataAdapter 读取 excel 工作表,然后用该信息填充数据集。我需要弄清楚如何做的是忽略 excel 工作表中的前 8 行并像第 9 行是第一行一样读取它(使列命名第 9 行中的值)。
谢谢亚历克斯
查看如何在 C# 中打开 Excel 文件?
若要在特定方案中添加一些输入:有一个具有"行"属性的工作表对象。
如果你对其他方法持开放态度,我建议使用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:temptemp.xlsx");
var q = from r in excel.WorksheetRange<MyType>("A9","C12")
select r;
然后你可以使用 q 来过滤、迭代等...
如果您不知道文件中有多少行来定义范围,您可以改为执行以下操作:
var excel=new ExcelQueryFactory(@"c:temptemp.xlsx");
int rowCount=excel.WorksheetNoHeader().Count();
var q = from r in excel.WorksheetRange<MyType>("A9","C"+rowCount)
select r;
没有人很好地回答我的问题。但我在寂寞中想通了。
我通过将 excel 工作表读入数据表解决了这个问题。然后从数据表中删除前 8 行。然后我创建了第二个数据表,手动添加列(使用 Columns.Add 命令)并使用 foreach(OGdataTable 中的行)将所有行添加到新表中。
如果有人想对此进行更多澄清,请继续询问。