我正在使用下面的代码从Excel工作表中读取列名。它工作正常。但是它会将整个工作表数据加载到datatable中。这会花费很多时间。有没有什么方法可以只读取列名而不加载整个工作表?
using (var stream = File.Open(strDoc, FileMode.Open, FileAccess.Read))
{
using (var reader = ExcelReaderFactory.CreateReader(stream))
{
dt = reader.AsDataSet(new ExcelDataSetConfiguration()
{
ConfigureDataTable = (tablereader) => new ExcelDataTableConfiguration() { UseHeaderRow = true }
}).Tables["Data"];
}
}
foreach (var col in dt.Columns)
{
columnNamesList.Add(col.ToString().Trim());
}
“Data”是工作表名称。
2条答案
按热度按时间qij5mzcb1#
可以使用
FilterRow
跳过行。例如:此时
dt.Rows.Count
将为0。不确定这是否会加快响应速度,但它会阻止将工作表中的行插入到DataTable中。
有用链接:
Using ExcelDataReader to read Excel data starting from a particular cell .
如何跳过行和单元格以创建数据集?
vcudknz32#
最快的方法是读取第一行,而不需要
AsDataSet
的开销: