博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#读取Excel文件,准换为list
阅读量:7282 次
发布时间:2019-06-30

本文共 1410 字,大约阅读时间需要 4 分钟。

 

经常会用到,废话不多说直接贴代码

 

//读取Excel文件

public static DataTable ReadExcelToTable(string path)//excel存放的路径

{
try
{

//连接字符串

string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";

using (OleDbConnection conn = new OleDbConnection(connstring))

{
conn.Open();
//读取sheetName
DataTable sheetsName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); 
string firstSheetName = sheetsName.Rows[0][2].ToString();
string sql = string.Format("SELECT * FROM [{0}]", firstSheetName); 
OleDbDataAdapter ada = new OleDbDataAdapter(sql, connstring);
DataSet set = new DataSet();
ada.Fill(set);
return set.Tables[0];
}
}
catch (Exception)
{
return null;
}

}

 

//把读取到的数据转换为 list

public class ModelConvertHelper<T> where T : new()

{
public static IList<T> ConvertToModel(DataTable dt)
{
// 定义集合 
IList<T> ts = new List<T>();

// 获得此模型的类型 

Type type = typeof(T);
string tempName = "";

foreach (DataRow dr in dt.Rows)

{
T t = new T();
// 获得此模型的公共属性 
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo p in propertys)
{
tempName = p.Name; // 检查DataTable是否包含此列

if (dt.Columns.Contains(tempName))

{
// 判断此属性是否有Setter 
if (!pi.CanWrite) continue;

object value = dr[tempName];

if (value != DBNull.Value)
p.SetValue(t, value, null);
}
}
ts.Add(t);
}
return ts;
}

 

转载于:https://www.cnblogs.com/WlxjSan/p/10749056.html

你可能感兴趣的文章
单片机中断的IE和IP寄存器(摘抄)
查看>>
Javascript题库
查看>>
写正则不要再瞎转义了
查看>>
自动复制转换StringBuffer
查看>>
【linux】linux shell 日期格式化
查看>>
Android改变图片颜色的自定义控件
查看>>
【Todo】OSGi学习
查看>>
MyBatis入门学习教程-优化MyBatis配置文件中的配置
查看>>
JS优秀资源站点收集
查看>>
15 个 Android 通用流行框架大全
查看>>
001_Mac键盘图标与对应快捷按键标志汇总
查看>>
join用法
查看>>
使用JavaScript为一张图片设置备选路径
查看>>
ubuntu selinux
查看>>
discuz回贴通知插件实现-插件后台管理配置
查看>>
spark textFile 困惑与解释
查看>>
除了首付,购房预算还须有这7项才能买到房!
查看>>
Dynamic attention in tensorflow
查看>>
python中的三元运算
查看>>
Swift:宏定义
查看>>