在開發會遇到將gridview中的資料匯入到excel 這樣的需求,當girdview有多頁資料時按照一般的方式匯出的資料只可能是當前頁的資料,後幾頁的資料還在資料庫內,沒有呈現到頁面上,傳統的方式是將標記字元和文字寫入到 asp.net 伺服器控制項輸出流,沒有呈現的頁面不可能輸出到excel中。下面提供一種解決方式將所以資料都能匯入到excel中。
這一步沒有固定的**,可以在使用者查詢的時候用viewstate記錄查詢條件,例如
ordermng.orderlist_getsuporderlist_binddata( param, fdynamicparam, pageparambycus, dystr);(查詢出單頁的資料繫結到girdview)
viewstate["gparam"] = param; viewstate["dparam"] = fdynamicparam; viewstate["pageparam"] = pageparambycus; viewstate["strparam"] = dystr;(記錄查詢條件)
hashtable gparam = (hashtable)viewstate["gparam"];
hashtable dparam = (hashtable)viewstate["dparam"];
hashtable pageparam= (hashtable)viewstate["pageparam"];
string strparam=viewstate["strparam"].tostring();
是將開始查詢的條件轉化回來
datatable dt = ordermng.orderlist_getsuporderlist(gparam, dparam, pageparam, strparam);
相同的條件查詢後到datatable
第二步:處理datatable , 修改列名,排序,修改顯示的內容
**1protected
void
datatabletranfer(datatable dt)213
else
1417}18
row[
"商品名稱"]
="id[:"+
row[
"productid"]
+"]"
+row[
"productname"];
19//
ischeckoutk是頁面上判斷的方法
20row[
"結算狀態"]
=ischeckout(row[
"checkoutid
"], row[
"isrepeal
"]);
2122
23//
修改列名
24dt.columns[
"orderid
"].columnname ="
訂單號";25
dt.columns[
"buytime
"].columnname ="
交易日期";
26dt.columns[
"buycount
"].columnname ="
我的銷售數量";
27//
排序列
28dt.columns[
"訂單號
"].setordinal(0);
29dt.columns["型別
"].setordinal(1);
30dt.columns[
"交易日期
"].setordinal(2);
31//
移除列
32dt.columns.remove(dt.columns[
"totalsize
"]);
33dt.columns.remove(dt.columns[
"rownum
"]);
3435
}第三步:將datatable轉化成excel
**public
static
void
tabletoexcel(datatable tb,
string
filename)
}
帶母版頁的GRIDVIEW匯出到EXCEL方法
stringwriter sw new stringwriter htmltextwriter htw new htmltextwriter sw gridview1.rendercontrol htw response.write sw.tostring response.end gridview...
GridView匯出資料到Excel時格式設定
一 excel的格式 1 文字 vnd.ms excel.numberformat 2 日期 vnd.ms excel.numberformat yyyy mm dd 3 數字 vnd.ms excel.numberformat 0.00 4 貨幣 vnd.ms excel.numberformat...
GridView使用自定義表頭和匯出到Excel
如上圖 檢視列 是靜態新增上的,表頭和資料則是動態新增的。如下 using system using system.data using system.configuration using system.collections using system.web using system.web.s...