廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 26241 個閱讀者
 
<<   1   2  下頁 >>(共 2 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
Joery
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x37
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[.Net][討論] [ASP.NET With C#]請問有人會將GridView的資料匯出Excel嗎
您好:
我將資料撈完後填到GridView中
但現在想要將 ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被Joery在2007-05-03 22:56重新編輯 ]


Herry Life
輕鬆享瘦 http://www.framewor...rryLin/

獻花 x1 回到頂端 [樓 主] From:臺灣中華HiNet | Posted:2007-05-03 07:44 |
Joery
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x37
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用Joery於2007-05-03 07:44發表的 [ASP.NET][C#]請問有人會將GridView的資料匯出Excel嗎:
您好:
我將資料撈完後填到GridView中
但現在想要將裡頭的資料匯成Excel 檔
我在其他地方有看到蠻多相關的文章
不知道在這裡有沒有人有做過呢
.......

果然還沒有人回覆
那我先把我的方法寫出來吧
要將WebForm裡或GridView裡的資料匯成其他檔案格式
或者是匯成Excel 檔案格式
方法應該很多
但我找到的資料大部份可歸納成二種<比較多人用的>
1. 以Response.AddHeader() 使用 HTML輸出方法
2. 建立物件使用物件去控制

差別:
當資料量大時 使用第二種方法,匯出時,時間長比較慢
但好處就是方便且容易操控 Excel
第1種以HTML方式則與第2方法相反
===========================
參考資料:
參考:
MSDN:
http://forums.microsoft.com/msdn-cht/Sh...=697768&SiteID=14

http://gridviewguy.com/Article...articleID=86

http://blog.blueshop.com.tw/tim...es/16076.aspx
使用JavaScript
http://blog.xuite.net/hcktony/work/9369696

http://www.move-to.net/comm...T/4429.aspx
=========================================
複製程式
#region 匯出 Excel 檔案  <使用 HTML 方式匯出>
DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
        // 設定要由 HTML 方式輸出
Response.Clear();
Response.AddHeader("content-disposition","attachment;filename=ExportExcel.xls");
Response.Charset = "zh-tw";      Response.ContentEncoding=System.Text.Encoding.GetEncoding("BIG5");
Response.ContentType = "application/ms-excel "; //內容型態設為Excel
this.EnableViewState = false; //把ViewState給關了
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
//GridView1.RenderControl(htmlWrite);
#region 開始填入 Excel 表格中
        // 印出 Titile
        Response.Write("代號\t代號說明");
        Response.Write(htmlWrite.NewLine);
        Response.Write(htmlWrite.NewLine);
        for (int i = 0; i < dv.Table.Rows.Count; i++)
        {
            for (int j = 0; j < dv.Table.Columns.Count; j++)
                Response.Write(dv.Table.Rows[i][j].ToString()+ "\t");   // 加入"\t"是為了換格
            Response.Write(htmlWrite.NewLine);  // 換行            
        }
        Response.End();
        #endregion
#endregion



Herry Life
輕鬆享瘦 http://www.framewor...rryLin/

獻花 x1 回到頂端 [1 樓] From:臺灣中華HiNet | Posted:2007-05-03 22:54 |
reacky
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x6
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用Joery於2007-05-03 22:54發表的 :


果然還沒有人回覆
那我先把我的方法寫出來吧
要將WebForm裡或GridView裡的資料匯成其他檔案格式
.......

謝謝分享 很不錯的文章
不過版上好像很少人耶
有誰知道另外一種方法
建立物件的方法怎麼用呢
手上有找到 ASP.NET with VB的
但C# 又不太一樣
大概知道步驟
1. 先將專案將入參考 在COM裡加入MExcel元件
2. using Microsoft.Interop.Excel
3. 建立物件
但我還沒找到如何建立物件的語法 有誰知道呢


獻花 x1 回到頂端 [2 樓] From:臺灣中華HiNet | Posted:2007-05-03 23:14 |
Joery
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x37
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用Joery於2007-05-03 22:54發表的 :
差別:
當資料量大時 使用第二種方法,匯出時,時間長比較慢
但好處就是方便且容易操控 Excel
第1種以HTML方式則與第2方法相反

.......

建立物件的方法找到了
http://www.blueshop.com.tw/board/show.asp?subcde=BRD200...00410061525290EW&rplcnt=0
這位大大有釋放記憶體 ^^

補充一下
第一種HTML方式匯出
1.       以其格式為文字檔格式
2.       Server side可不用安裝Office Excel <省下成本>
3.       減輕Server負擔,但對Excel 操控配置不易不方便
第二種建立Excel 物件
1.       因為建立物件,對Excel 操控方便
2.       Server Side必須有安裝 Office Excel
3.       當資料量大時,匯出速度慢且長
4.       增加對 Server Load
<比如建立一個物件開啟Excel 需 50kb,那在Server上如果同時有100人或更多人,則會需要很大的memory>


Herry Life
輕鬆享瘦 http://www.framewor...rryLin/

獻花 x1 回到頂端 [3 樓] From:臺灣 | Posted:2007-05-04 11:16 |
dolphins_11
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

HI~
你好~
若資料不多
用Response.AddHeader 把資料匯出就可以了

若是資料多 xls 內欄位又是變動的
我的作法是先用物件產生 第一列是欄位的空白xls
好處是要多少的sheet 自己可以控制
再去olbdbconnection的方式去連xls檔
把資料 insert進去
用oledb 去insert 就很快了
這是我的方法
以上
ps 我是用c#寫的

我的blog是http://blog.xuite.net/yan.kee/CSharp
歡迎有空來玩
by 11


獻花 x0 回到頂端 [4 樓] From:臺灣中華電信HINET | Posted:2008-01-02 15:21 |
zerosay
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

用物件的方法是會有效能上的問題,其實如果您的Client使用的是Excel XP, Excel 2003以上,就可以用xml格式的Excel檔,之前有寫過一個物件,相對實作一個Excel物件在資料量大時,速度真的差很多。可以參考一下,試著找一下網路上的資源, Excel Xml。


獻花 x0 回到頂端 [5 樓] From:臺灣 | Posted:2008-02-11 16:06 |
ywchung
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

各位大大, 我碰到一個問題, 原本GridView 沒分頁前, 匯成excel是OK的, 但分頁後, 卻無法完整的匯出excel,
如果, 我的頁面是在第一頁, 滙出excel時, 只有第一頁, 無法將完整的資料都匯出耶~~
要加上什麼條件嘛? 請各位大大幫個忙吧~感恩~~
表情


獻花 x0 回到頂端 [6 樓] From:台灣中華電信 | Posted:2009-11-11 18:20 |
三仙 會員卡
個人頭像
個人文章 個人相簿 個人日記 個人地圖
頭銜:以馬內利 以馬內利
版主
級別: 版主 該用戶目前不上站
版區: 程式設計
推文 x17 鮮花 x370
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用 ywchung 於 2009-11-11 18:20 發表的 : 到引言文
各位大大, 我碰到一個問題, 原本GridView 沒分頁前, 匯成excel是OK的, 但分頁後, 卻無法完整的匯出excel,
如果, 我的頁面是在第一頁, 滙出excel時, 只有第一頁, 無法將完整的資料都匯出耶~~
要加上什麼條件嘛? 請各位大大幫個忙吧~感恩~~
表情


真是佩服你
二年前的文章了
都被你挖出來

至於你的問題
我會在匯出前、後把 GridView1.AllowPaging 做處理
但你又說只有第一頁無法匯出
真是有點奇怪了


挖出答案的難度,取決提問的深度!
獻花 x0 回到頂端 [7 樓] From:臺灣中華電信 | Posted:2009-11-11 22:29 |
ywchung
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我有做處理了~ 但匯出來的內容卻是空白的 >< , 如果沒處理前, 是只有匯出第一頁的內容~ (之前打錯= =||歹勢)

rotected void Button2_Click(object sender, EventArgs e)
  {
        GridView1.AllowPaging = false;
        GridView1.DataBind();
       
       
   
   
        string excelFileName = "Result.xls";
        Response.Clear();
       
        Context.Response.AddHeader("content-disposition", "attachment;filename=" +
        Server.UrlEncode(excelFileName));
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Context.Response.ContentType = "application/vnd.xls";
        Response.Charset = "utf-8"; // "big5";
        System.IO.StringWriter tw = new System.IO.StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);        
        this.GridView1.RenderControl(hw);

        Context.Response.Write(tw.ToString().Replace("<div>", "").Replace("</div>", ""));
        Context.Response.End();

        GridView1.AllowPaging = true;
        GridView1.DataBind();
   
  }


獻花 x0 回到頂端 [8 樓] From:台灣中華電信 | Posted:2009-11-12 11:15 |
三仙 會員卡
個人頭像
個人文章 個人相簿 個人日記 個人地圖
頭銜:以馬內利 以馬內利
版主
級別: 版主 該用戶目前不上站
版區: 程式設計
推文 x17 鮮花 x370
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

圖 1. 你的程式執行如附圖   
你的程式執行如附圖

圖 2.

圖 3.

圖 4.

圖 5.



下面是引用 ywchung 於 2009-11-12 11:15 發表的 : 到引言文
我有做處理了~ 但匯出來的內容卻是空白的 >< , 如果沒處理前, 是只有匯出第一頁的內容~ (之前打錯= =||歹勢)
rotected void Button2_Click(object sender, EventArgs e)
  {
        GridView1.AllowPaging = false;
        GridView1.DataBind();
.......


小舖那題應該也是你提的吧

如有問題請提出


挖出答案的難度,取決提問的深度!
獻花 x0 回到頂端 [9 樓] From:台灣中華電信 | Posted:2009-11-12 15:06 |

<<   1   2  下頁 >>(共 2 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.069254 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言