最新ASP.NET导出EXCEL类

说明:可以导出ASP.NET页面和DATAGRID(WebControl)数据,可以导出表单头

using System;
using System.Data;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Diagnostics;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Collections;

namespace bookstore
{
 ///
 /// Excel 的摘要说明。
 ///
 public class Excel
 {
  public Excel()
  {
   //
   // TODO: 在此处添加构造函数逻辑
   //
  }

public void SaveToExcel(Page myPage, DataTable dt,DataGrid DG,string myExcelHeader,HtmlTable Tab,string myFileName)
  {
   HttpResponse resp;   
   resp=myPage.Response;
   resp.ContentEncoding=Encoding.GetEncoding("GB18030");
   resp.AppendHeader("Content-Disposition","attachment;filename="+myFileName+".xls");
   resp.ContentType="application/ms-excel";

string colHeaders = "\t\t\t\t"+ myExcelHeader +"\n\n\n";

colHeaders+=tableHeader(Tab)+"\n";

StringBuilder sb=new StringBuilder();
  
   int mycol=DG.Columns.Count;
   ArrayList myAL=new ArrayList();

for(int i=0;i   {
    colHeaders +=DG.Columns[i].HeaderText+"\t"; 
    myAL.Add(((System.Web.UI.WebControls.BoundColumn)(DG.Columns[i])).DataField); 
   }
   colHeaders += "\n";
   sb.Append(colHeaders);

int myrow=dt.Rows.Count;

for(int k=0;k   {
    foreach(string field in myAL)
    {  
     sb.Append(dt.Rows[k][field]);
     sb.Append("\t");
    }
    sb.Append("\n");
   }      
  
   colHeaders=sb.ToString();

colHeaders=colHeaders+"\n";
   resp.Write(colHeaders);

resp.End();
   resp.Clear();
   resp.Close(); 
  }

/*得到表单头子*/
  /*表单头子有TABLE组成,偶次项排列,TABLE在HTML中加 RUNAT=SERVER*/
  public string tableHeader(HtmlTable Tab)
  {
   int iCols=Tab.Rows[0].Cells.Count;
   int iRows=Tab.Rows.Count;
   string str="";
  
   for(int row=0;row   {
    for(int col=0;col    {
     if(col%2==1)//取偶次项的控件数据(目前只有TextBox和DropDownList,没有包含LABEL)
     {
      try
      {
       if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.LiteralControl")
       {
        if(Tab.Rows[row].Cells[col].Controls[1].ToString()=="System.Web.UI.WebControls.TextBox")
        {
         str+=((System.Web.UI.WebControls.TextBox)(Tab.Rows[row].Cells[col].Controls[1])).Text+"\t";
        }
        if(Tab.Rows[row].Cells[col].Controls[1].ToString()=="System.Web.UI.WebControls.DropDownList")
        {
         str+=((System.Web.UI.WebControls.ListControl)(((System.Web.UI.WebControls.DropDownList)((Tab.Rows[row].Cells[col].Controls[1]))))).SelectedValue+"\t";    
        }
       }
       else
       {
        if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.WebControls.TextBox")
        {
         str+=((System.Web.UI.WebControls.TextBox)(Tab.Rows[row].Cells[col].Controls[0])).Text+"\t";
        }
        if(Tab.Rows[row].Cells[col].Controls[0].ToString()=="System.Web.UI.WebControls.DropDownList")
        {
         str+=((System.Web.UI.WebControls.ListControl)(((System.Web.UI.WebControls.DropDownList)((Tab.Rows[row].Cells[col].Controls[0]))))).SelectedValue+"\t";    
        }
       }
      }
      catch
      {
       str+=Tab.Rows[row].Cells[col].InnerHtml+"\t";
      }
      if((col+1)%iCols==0)
      {
       str+="\n";
      }
     }
     else
     {
      str+="\t"+Tab.Rows[row].Cells[col].InnerHtml+"\t";
     }
    }
   }
   return(str);
  }
 
 }
}

ASP.NET导出EXCEL类的更多相关文章

  1. Asp.net导出Excel续章(自定义合并单元格,非Office组件)

    结合上次写的导出Excel方法,这次上头要求我将列头进行一下合并 以前的效果: 改进后的效果: 在上篇文章中写到了Excel的导出方法,这次为了避免在生产环境中使用Office组件,服务器各种权限配置 ...

  2. 022医疗项目-模块二:药品目录的导入导出-对XSSF导出excel类进行封装

    资源全部来源于传智播客. 好的架构师写的程序,就算给刚入门的新手看,新手一看就知道怎么去用.所以我们要对XSSF导出excel类进行封装.这是架构师的工作,但我们也要知道. 我们写一个封装类: 这个类 ...

  3. asp.net导出excel示例代码

    asp.net导出excel的简单方法. excel的操作,最常用的就是导出和导入. 本例使用NPOI实现. 代码:/// <summary> );             ;       ...

  4. [转] Asp.Net 导出 Excel 数据的9种方案

    湛刚 de BLOG 原文地址 Asp.Net 导出 Excel 数据的9种方案 简介 Excel 的强大之处在于它不仅仅只能打开Excel格式的文档,它还能打开CSV格式.Tab格式.website ...

  5. asp.net导出excel并弹出保存提示框

    asp.net导出excel并弹出保存提示框 2013-07-12 | 阅:1  转:78   |  分享  腾讯空间 人人网 开心网 新浪微博 腾讯微博 搜狐空间 推荐给朋友 举报          ...

  6. ASP.NETCore -----导出Excel文件并下载

    本事例分为nopi(安装DotNetCore.NPOI)下载和EPPlus(EPPlus.Core.dll)下载,其中npoi下载演示的是根据执行的模板进行数据下载 npoi帮助类NpoiExcelU ...

  7. asp.net 导出Excel

    分享一个asp.net 导出假Excel代码.优点,不用借助于任何插件比如(NPOI),复制代码,修改grid.DataSource直接导出. 先看导出后的效果图 System.Web.UI.WebC ...

  8. Asp.net导出Excel乱码的解决方法

    通过跟踪Asp.net服务器代码,没有乱码,然而导出Excel到浏览器后,打开时出现乱码. 解决方法是添加编码格式的前缀字节码:Response.BinaryWrite(System.Text.Enc ...

  9. ASP.NET导出excel表方法汇总

    asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...

随机推荐

  1. Openfire 代码部署报错: Variable references non-existent resource:${workspace_loc:openfire_src}

    Variable references non-existent resource:${workspace_loc:openfire_src} -DopenfireHome=“${workspace_ ...

  2. 创业草堂之十:换位思考:假如你是VC

    前一回“创业草堂”的讲义是一份VC的Termsheet,这里面浓缩着VC投资关键性的理念. 今天来对Termsheet做些实质性的讲解.最有效的学习方法是创业者你亲自来扮演一回VC的角色,学习如何从V ...

  3. Qt源码分析之QObject

    原文:http://blog.csdn.net/oowgsoo/article/details/1529284 我感觉oowgsoo兄弟写的分析相当透彻,赞! 1.试验代码: #include < ...

  4. Python基本程序结构

    条件判断: 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断.比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:

  5. NC / Netcat - 反弹Shell

    原理 实验环境: 攻击机:windows机器,IP:192.168.12.109 受害机:linux机器,IP:192.168.79.1 攻击机:设置本地监听端口2222 C:\netcat>n ...

  6. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  7. OpenCV源码阅读(2)---matx.h---函数的内联实现

    外部矩阵计算函数 namespace internal { template<typename _Tp, int m> struct Matx_DetOp { double operato ...

  8. sql 随笔 2015-07-02

    sql 自定义函数 --检查函数是否存在 if exists (select * from dbo.sysobjects where id = object_id(N'dbo.pTitleCase') ...

  9. c创建win窗口

    windows程序设计示例: #include "windows.h" #pragma comment(lib, "winmm") LRESULT CALLBA ...

  10. 使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务

    使用 Oracle GoldenGate 在 Microsoft SQL Server 和 Oracle Database 之间复制事务 作者:Nikolay Manchev 分步构建一个跨这些平台的 ...