2
我正在编写C#库以读取没有任何其他依赖关系(如OLDEB(AccessDatabaseEngine)库)的Excel文件。使用exceldatareader获取excel表单列名称
所以我选择了ExcelDataReader库来读取.XLS和.XLSX文件。
ExcelDataReader与我的本地和部署服务器环境完全兼容这两种文件格式。
我面临的问题,如何从给定的Excel文件中获取所有列名称?
我正在编写C#库以读取没有任何其他依赖关系(如OLDEB(AccessDatabaseEngine)库)的Excel文件。使用exceldatareader获取excel表单列名称
所以我选择了ExcelDataReader库来读取.XLS和.XLSX文件。
ExcelDataReader与我的本地和部署服务器环境完全兼容这两种文件格式。
我面临的问题,如何从给定的Excel文件中获取所有列名称?
最简单的方法是同时投下DataTableCollection
和DataColumnCollection
,以便您可以对它们使用正常的Linq查询。
例如:
var stream = File.Open(@"C:\temp\Book1.xlsx", FileMode.Open, FileAccess.Read);
var excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
var result = excelReader.AsDataSet();
var tables = result.Tables
.Cast<DataTable>()
.Select(t => new {
TableName = t.TableName,
Columns = t.Columns
.Cast<DataColumn>()
.Select(x => x.ColumnName)
.ToList()
});
之所以投是必要的,因为这两个DataTableCollection
和DataColumnCollection
只实现IEnumerable
,而不是IEnumerable<T>
,因为他们可以追溯到天前泛型。
对于此代码的工作,您的电子表格必须实际包含已定义的表格,而不仅仅是其中的数据。
你是什么意思列名?像Excel中所示的A,B,C一样? –