匯出excel時,經常會遇到需要重複性的書寫每個列的名稱,以此造成**編寫的重複書寫,例如:
為了避免這種編寫,我們可以採取特性加反射的形式進行**解耦。**例子如下:
**封裝:
using model.attribute;
using npoi.hssf.usermodel;
using npoi.ss.usermodel;
using system;
using system.collections;
using system.collections.generic;
using system.data;
using system.io;
using system.linq;
using system.reflection;
using system.web;
namespace services
var dt = toexceldatatable(list);//關鍵核心
return datatabletoexcel(dt);//匯出excel的方法可以自己定義
}catch (exception ex)
return null;
}/// /// 將泛型集合類轉換成datatable(只針對匯出excel)
///
/// 集合項型別
/// 集合
/// 資料集(表)
public static datatable toexceldatatable(ilistlist)
}if (list != null || list.count > 0)
}object array = templist.toarray();
result.loaddatarow(array, true);}}
return result;
}/// /// 匯出excel
///
///
public static memorystream datatabletoexcel(datatable dt)
if (dt != null && dt.rows.count > 0)}}
workbook.write(ms);//向開啟的這個xls檔案中寫入資料
ms.seek(0, seekorigin.begin);
}return ms;
}catch (exception ex)
return null;}}
}}
[attributeusage(attributetargets.property | attributetargets.field)]
public class exportpropattribute : system.attribute
public static class attributeext
return propname;
}/// /// 獲取擴充套件的列舉值
///
///
///
///
///
public static object getenumfordesc(this string propname, object value)
}return value;}}
/// /// 學生型別
///
public enum studenttypeenum
public static class enumhelper
catch
}/// /// 獲取列舉的描述資訊,根據傳入的列舉值
///
///
///
///
public static string getenumdesc(type enumtype, byte enumvalue)
return result;
}#endregion
}
呼叫端**:
public class officecontroller : controller
/// /// 匯出excel
///
///
public fileresult exportrecordexcel()
,new studententity,
new studententity,
new studententity};}
}
index.cshtml:
@
效果:
GridControl 通用匯出excel
關於devexpress winform 的所有可列印控制項的匯出excel 的通用方法,並且解決devexpress控制項自帶的方法存在的缺陷問題 1 解決gridcontrol自帶方法不能匯出 2 gridcontrol 的bandgridview 多表頭無法匯出等問題 3 解決pivotgri...
Spring 匯出Excel通用方法
匯出excel param filename 匯出的檔名稱 httpservletresponse response throws ioexception 定義臨時儲存檔案位置 string path request.getsession getservletcontext getrealpath ...
通用excel資料匯出 轉換(三)
這一篇說c 怎麼操作mysql資料庫 我沒有仔細研究為什麼乙個mysql.data不能包含所有基本功能,非得帶3個看似用不著的東西 這樣就可以直接上 了,首先是類開頭的引用 using system.data using system.data.oledb using mysql.data usin...