C#读取Excel到DataTable的方法示例
程序员文章站
2023-11-10 08:41:28
前提
在windows下进行数据处理的时候最常见的情况莫过于读取microsoft的excel文件了,excel的普及率惊人,是事实上的标准。以前的开发中我采用调用第...
前提
在windows下进行数据处理的时候最常见的情况莫过于读取microsoft的excel文件了,excel的普及率惊人,是事实上的标准。以前的开发中我采用调用第三方类库 npoi 的方式来处理excel。这个方式有两个缺点:
- 需要依赖第三方类库npoi
- npoi支持几乎全功能的office条件,缺点就是复杂度也高。
如果只是简单的导入数据,完全可以有更加简单的方案,方案的限制条件为;
- 只支持windows平台
- 只读取excel文件
- 支持xls和xlsx文件格式
依赖
还是有依赖的 2007 office system driver: data connectivity components
如果没有安装driver,你会得到以下的报错:
microsoft.ace.oledb.12.0' provider is not registered on the local machine
代码
public static datatable readastable(string xlsxfile, string sheetname = "sheet1") { var connectionstring = string.format("provider=microsoft.ace.oledb.12.0;data source={0};extended properties=\"excel 12.0;hdr=yes;imex=1\"", xlsxfile); var adapter = new oledbdataadapter($"select * from [{sheetname}$]", connectionstring); var ds = new dataset(); adapter.fill(ds, sheetname); return ds.tables[sheetname]; }
在 connectionstring 中有两个extended properties可以根据需要进行修改:
- hdr,这个属性表示excel的第一行是不是转换成datatable的列名(column name)还是普通数据处理。
- imex,这个数据表明是不是读取类型,还是全部当做文本来读取,为了安全读取最好设置为1,即当做文本来处理: treat data as text 。
技巧
有时候我们需要将读取的数据绑定到特定类型上,我们可以这样做:
var query = dt .asenumerable() .where(x => x.field<string>("phonenumber") != string.empty) .select(x => new contact { firstname= x.field<string>("first name"), lastname = x.field<string>("last name"), phonenumber =x.field<string>("phone number"), });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
C#读取Excel到DataTable的方法示例
-
【C#常用方法】2.DataTable(或DataSet)与Excel文件之间的导出与导入(使用NPOI)
-
C#从文件流读取xml文件到DataSet并显示的方法
-
C#使用Ado.net读取Excel表的方法
-
C#实现将DataTable内容输出到Excel表格的方法
-
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
-
C#保存与读取DataTable信息到XML格式的方法
-
python读取excel指定列数据并写入到新的excel方法
-
C#基于COM方式读取Excel表格的方法
-
C#读取文本文件到listbox组件的方法