网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.asp.net如何连接sql server2000数.
.通过数据捆绑将数据添加到ASP.NE.
.关于.net中页面CSS样式丢失的解决.
.ASP.NET 2.0角色及成员管理 .
.压力监测程序sqlserver和MYSQL版.
.Asp.net下的对象成员数据绑定器实.
.UNIX时间戳与.net日期类的转换 .
.Sys.ScriptLoader与JS加载进度条.
.借助HiddenText 确定CheckBoxLis.
.Asp.net1.0 升级 ASP.NET 2.0 的.
.使用DES对称加密代码,支持中文.
.关于HtmlForm控件.
.ASP.NET Atlas对JavaScript的扩展.
.Asp.Net中文本换行 .
.如何使用FindControl查找内容页上.
.如何取得IP/用户名等信息.
.如何在上传的图片上写字.
.在ASP.NET中使用SQL的IN操作.
.使用UTF-8编码/JMail组件发送邮件.
.ASP.NET模拟其他用户进行关机.

asp.net里导出excel表方法汇总

发表日期:2008-10-24


1、由dataset生成

public void CreateExcel(DataSet ds,string typeid,string FileName)

   {

   HttpResponse resp;

   resp = Page.Response;

   resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

   resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);  

   string colHeaders= "", ls_item="";

   int i=0;

   //定义表对象与行对像,同时用DataSet对其值进行初始化

   DataTable dt=ds.Tables[0];

   DataRow[] myRow=dt.Select("");

   // typeid=="1"时导出为EXCEL格式文件;typeid=="2"时导出为XML格式文件

   if(typeid=="1")

    {

    //取得数据表各列标题,各标题之间以"t分割,最后一个列标题后加回车符

    for(i=0;i     colHeaders+=dt.Columns[i].Caption.ToString()+""t";

    colHeaders +=dt.Columns[i].Caption.ToString() +""n";  

    //向HTTP输出流中写入取得的数据信息

    resp.Write(colHeaders);

    //逐行处理数据 

    foreach(DataRow row in myRow)

     {

     //在当前行中,逐列获得数据,数据之间以"t分割,结束时加回车符"n

     for(i=0;i      ls_item +=row[i].ToString() + ""t";    

     ls_item += row[i].ToString() +""n";

     //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   

     resp.Write(ls_item);

     ls_item="";

    }

   }

   else

    {

    if(typeid=="2")

     {

     //从DataSet中直接导出XML数据并且写到HTTP输出流中

     resp.Write(ds.GetXml());

    }   

   }

   //写缓冲区中的数据到HTTP头文件中

   resp.End();

  }

2、由datagrid生成

public void ToExcel(System.Web.UI.Control ctl) 

   {

   HttpContext.Current.Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");

   HttpContext.Current.Response.Charset ="UTF-8";   

   HttpContext.Current.Response.ContentEncoding =System.Text.Encoding.Default;

   HttpContext.Current.Response.ContentType ="application/ms-excel";//image/JPEG;text/HTML;image/GIF;vnd.ms-excel/msword

   ctl.Page.EnableViewState =false;  

   System.IO.StringWriter  tw = new System.IO.StringWriter() ;

   System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);

   ctl.RenderControl(hw);

   HttpContext.Current.Response.Write(tw.ToString());

   HttpContext.Current.Response.End();

  }

用法:ToExcel(datagrid1);


3、这个用dataview

public void OutputExcel(DataView dv,string str)

{

   //

   // TODO: 在此处添加构造函数逻辑

   //

                           //dv为要输出到Excel的数据,str为标题名称

   GC.Collect();

   Application excel;// = new Application();

   int rowIndex=4;

   int colIndex=1;

   _Workbook xBk;

   _Worksheet xSt;

   excel= new ApplicationClass();

 

   xBk = excel.Workbooks.Add(true);

  

   xSt = (_Worksheet)xBk.ActiveSheet;

   //

   //取得标题

   //

   foreach(DataColumn col in dv.Table.Columns)

    {

    colIndex++;

    excel.Cells[4,colIndex] = col.ColumnName;

    xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[4,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐

   }

   //

   //取得表格中的数据

   //

   foreach(DataRowView row in dv)

    {

    rowIndex ++;

    colIndex = 1;

    foreach(DataColumn col in dv.Table.Columns)

     {

     colIndex ++;

     if(col.DataType == System.Type.GetType("System.DateTime"))

      {

      excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");

      xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐

     }

     else

      if(col.DataType == System.Type.GetType("System.String"))

      {

      excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();

      xSt.get_Range(excel.Cells[rowIndex,colIndex],excel.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐

     }

     else

      {

      excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();

     }

    }

   }

   //

   //加载一个合计行

   //

   int rowSum = rowIndex + 1;

   int colSum = 2;

   excel.Cells[rowSum,2] = "合计";

   xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;

   //

   //设置选中的部分的颜色

   //

   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select();

   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种

   //

   //取得整个报表的标题

   //

   excel.Cells[2,2] = str;

   //

   //设置整个报表的标题格式

   //

   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;

   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;

   //

   //设置报表表格为最适应宽度

   //

   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();

   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit();

   //

   //设置整个报表的标题为跨列居中

   //

   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).Select();

   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;

   //

   //绘制边框

   //

   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle = 1;

   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗

   xSt.get_Range(excel.Cells[4,2],excel.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗

   xSt.get_Range(excel.Cells[4,colIndex],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗

   xSt.get_Range(excel.Cells[rowSum,2],excel.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗

   //

   //显示效果

   //

   excel.Visible=true;

   //xSt.Export(Server.MapPath(".")+""""+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.Office.Interop.OWC.SheetExportFormat.ssExportHTML);

   xBk.SaveCopyAs(Server.MapPath(".")+""""+this.xlfile.Text+".xls");

   ds = null;

            xBk.Close(false, null,null);

  

            excel.Quit();

            System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);

            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);

    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);

            xBk = null;

            excel = null;

   xSt = null;

            GC.Collect();

   string path = Server.MapPath(this.xlfile.Text+".xls");

   System.IO.FileInfo file = new System.IO.FileInfo(path);

   Response.Clear();

   Response.Charset="GB2312";

   Response.ContentEncoding=System.Text.Encoding.UTF8;

   // 添加头信息,为"文件下载/另存为"对话框指定默认文件名

   Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));

   // 添加头信息,指定文件大小,让浏览器能够显示下载进度

   Response.AddHeader("Content-Length", file.Length.ToString());

  

   // 指定返回的是一个不能被客户端读取的流,必须被下载

   Response.ContentType = "application/ms-excel";

  

   // 把文件流发送到客户端

   Response.WriteFile(file.FullName);

   // 停止页面的执行

 

   Response.End();

}

上一篇:Asp.net中如何过滤html,js,css代码 人气:1706
下一篇:ASP.net Server Application Unavailable 人气:633
浏览全部asp.net的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐