您的位置:首页 > 数据库

list集合导出Excel文件(二)

2017-10-23 16:17 323 查看
第二种导出Excel的方法,思路差不多。

/// <summary>
/// Excle导出数据
/// </summary>
/// <typeparam name="T">类对象</typeparam>
/// <param name="list">对象数据</param>
/// <param name="column">类字段,字段对应列名</param>
/// <param name="filename">excel表名</param>
public void OutExcel<T>(List<T> list, Dictionary<string, string> column, string FileName)
{
if (list == null || list.Count == 0 || column == null || column.Count == 0)
{
return;
}
StringWriter sw = new StringWriter();
string title = string.Empty;
foreach (KeyValuePair<string, string> kvp in column)
{
title += kvp.Value + "\t";
}
title = title.Substring(0, title.LastIndexOf("\t"));
sw.WriteLine(title);
Type objType = typeof(T);
BindingFlags bf = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static;//反射标识
PropertyInfo[] propInfoArr = objType.GetProperties(bf); //获取映射列表
foreach (T model in list)
{
System.Text.StringBuilder data = new System.Text.StringBuilder();
foreach (string key in column.Keys)
{
foreach (PropertyInfo propInfo in propInfoArr)
{
if (key == propInfo.Name)//判断头相对应的字段
{
PropertyInfo modelProperty = model.GetType().GetProperty(propInfo.Name);
if (modelProperty != null)
{
object objResult = modelProperty.GetValue(model, null);//获取值
data.Append(((objResult == null) ? string.Empty : objResult) + "\t");
}
}
}
}
var temp = data.ToString();
temp = temp.Substring(0, temp.LastIndexOf("\t"));
sw.WriteLine(temp);
}
sw.Close();//读取数据结束
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
HttpContext.Current.Response.Write(sw.ToString());
HttpContext.Current.Response.End();
}


调用:

public void DataExport()
{
string time = this.SelType.InnerText;
string filePath = DateTime.Now.ToString("yyyyMMddhhmmss") + "信息查询";
string condition = "1=1";

Dictionary<string, string> myDictionary = new Dictionary<string, string>();
myDictionary.Add("EmpID", "工号");
myDictionary.Add("Name", "姓名");
myDictionary.Add("BusID", "班车");
myDictionary.Add("BusLineID", "路线");
myDictionary.Add("StationID", "站定");
myDictionary.Add("CardTime", "上车时间");

List<CardRecord> list = new CC_CardRecord().Find(condition, pagerInfo, "EmpID");
if (list.Count > 0)
{
ExExcel<CardRecord>(list, myDictionary, filePath);

OutExcel<CardRecord>(list, myDictionary, filePath);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  excel 对象 数据 sql list