广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 26251 个阅读者
 
<<   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.055900 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言