`
wumingwei-123
  • 浏览: 20551 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
社区版块
存档分类
最新评论

.net导出EXCEL文件操作类包括格式较复杂表格导出

阅读更多

复杂的页面数据表格导出成EXCEL
的操作类
多个方法的封装实现多中导出功能 详情如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
namespace Export
{
public enum ExportType
{
Word = 1,
Excel = 2,
HTML = 3
}
/// <summary>
/// ExportExcel 的摘要说明
/// </summary>
public class ExportExcel
{
public ExportExcel()
{
}

/// <summary>
/// 导出EXCEL
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="pn">承载导出内容的控件</param>
public static void exPort(string fileName, Panel pn,ExportType exportType)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
pn.RenderControl(htmlText);
outWrite(fileName, oStringWriter.ToString(), exportType);
}
/// <summary>
/// 导出EXCEL
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="table">承载导出内容的控件</param>
public static void exPort(string fileName, HtmlTable table, ExportType exportType)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
table.RenderControl(htmlText);
outWrite(fileName, oStringWriter.ToString(), exportType);
}
/// <summary>
/// 导出EXCEL
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="tb">承载导出内容的空间</param>
public static void exPort(string fileName, Table tb, ExportType exportType)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
tb.RenderControl(htmlText);
outWrite(fileName, oStringWriter.ToString(), exportType);
}

/// <summary>
/// 导出EXCEL
/// </summary>
/// <param name="fileNmae"></param>
/// <param name="body">内容</param>
/// <param name="exportType"></param>
public static void exPort(string fileName, string body, ExportType exportType)
{
outWrite(fileName, body, exportType);
}

private static void outWrite(string fileName, String body, ExportType exportType)
{
HttpResponse Response = System.Web.HttpContext.Current.Response;
Response.Clear();
Response.Buffer = true;
fileName = HttpContext.Current.Server.UrlEncode(fileName);

//如果上面的方式再度出现文件名乱码就采用该方式
//fileName = HttpUtility.UrlEncode(fileName);

if (exportType == ExportType.Word)
{
fileName += ".doc";
Response.ContentType = "application/vnd.ms-word";
}
else if (exportType == ExportType.Excel)
{
fileName += ".xls";
Response.ContentType = "application/vnd.ms-excel";
}
else if (exportType == ExportType.HTML)
{
fileName += ".htm";
Response.ContentType = "application/vnd.ms-html";
}
//attachment 参数表示作为附件下载,可以改成 online在线打开
//filename=*.doc 指定输出文件的名称,注意其扩展名和指定文件类型相符,可以为:.doc    .xls    .txt   .htm 

Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
//Response.ContentType指定文件类型 可以为application/ms-excel    application/ms-word    application/ms-txt    application/ms-html    或其他浏览器可直接支持文档

string str = " <!--[if gte mso 9]><xml>"
+ " <x:ExcelWorkbook>"
+ " <x:ExcelWorksheets>"
+ " <x:ExcelWorksheet>"
+ " <x:Name></x:Name>"
+ " <x:WorksheetOptions>"
+ " <x:Print>"
+ " <x:ValidPrinterInfo />"
+ " </x:Print>"
+ " </x:WorksheetOptions>"
+ " </x:ExcelWorksheet>"
+ " </x:ExcelWorksheets>"
+ " </x:ExcelWorkbook>"
+ " </xml>"
+ " <![endif]-->";

if (body.IndexOf("<html>") != -1)
{
body.Replace("<html>", "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
int headIndex = body.IndexOf("<head>");
body = body.Insert(headIndex + 5, str);
}
else {
body = "<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\"><head>" + str + "</head><body>" + body;
body = body + "</body></html>";
}

//System.Web.HttpContext.Current.EnableViewState = false;
Response.Write(body);
Response.Flush();
Response.End();
}
/// <summary>
/// 返回指定控件的内容
/// </summary>
/// <param name="pn"></param>
/// <returns></returns>
public static string getBodys(Panel pn)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
pn.RenderControl(htmlText);
return oStringWriter.ToString();
}
/// <summary>
/// 返回指定控件的内容
/// </summary>
/// <param name="pn"></param>
/// <returns></returns>
public static string getBodys(HtmlTable table)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
table.RenderControl(htmlText);
return oStringWriter.ToString();
}
/// <summary>
/// 返回指定控件的内容
/// </summary>
/// <param name="pn"></param>
/// <returns></returns>
public static string getBodys(Table tb)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
tb.RenderControl(htmlText);
return oStringWriter.ToString();
}

public static string getBodys(GridView gv)
{
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
HtmlTextWriter htmlText = new HtmlTextWriter(oStringWriter);
gv.RenderControl(htmlText);
return oStringWriter.ToString();
}

}
}

相见: http://www.lvtaostudio.com/2009/0717/174.html

分享到:
评论

相关推荐

    ASP.NET之导出Excel

    操作类请见:http://www.xhsjs.com/NET/ZhiShi/100000909.shtml 操作方法请见 http://www.xhsjs.com/NET/ZhiShi/100000912.shtml

    ASP.NET操作EXCEL的总结篇

    公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出,考虑到导出耗时的...

    大数据Excel操作不会内存溢出POI

    同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,excel文件20W条数据没有任何问题,仅读取的话2-3分钟解析完毕。 网络上有关eventusermodel...

    asp.net知识库

    从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle...

    .net技术资料大全(语言规范 源码教程 学习笔记 技术资料 .net代码生成器)

    ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt ...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。 技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的...

    ASP升级.net资料大全(c#入门 语言规范 源码教程 学习笔记 技术资料 面试题 asp与.net代码生成器)

    ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt ...

    ASP.NET中使用开源组件NPOI快速导入导出Execl数据

    就可以导出html数据表格到execl中,这种方法的问题就是编码格式的兼容性太差,用Mac OS之类的 office打开直接乱码给你看。或者是调用office的COM组件,或宏脚本的方式操作Execl,这种方式的主要问题就是客户端必须要...

    久其表格OCX控件(共享版)

    是基于微软COM/COM+技术开发的报表二次开发组件,可以应用于企业级的报表开发,能够实现多种复杂报表的设计、打印等操作,具有以下几个特点: 1. 表格控件操作简单,采用类Excel的设计风格,易学易用;...

    DataGridView打印控件5.3版

    6、解决在64位操作系统下无法弹出打印对话框的问题,去掉了打印处理进度窗口中的“.NET轻松打印控件”字样; 7、彻底解决了调用Excel后(导出为excel文件)Excel进程未关闭问题; 8、多表头组件...

    c#WinForm教师教务系统源码

    7、包括各种条件查询、导出Excel表格,Tab页面管理模式、前进后退操作等等功能。 三、注意事项 1、开发环境为Visual Studio 2010,数据库为access,使用.net 4.0开发。 2、管理员用户名密码是:Admin(区分大小写)

    C#敏捷开发公共资源库

    6.xb.FrameWork.Office:此组件为Office操作组件,借助于NPOI2.1.1.0 可以实现对03到16版本的Excel的各种导入、导出功能,并且支持Word的导出功能(此导出功能非常强大,支持段落、表格导出,纸张、字体、标题的...

    Access 2007 VBA宝典 1/4

     10.2.3 导出数据库和电子表格文件  10.3 使用XML和HTML文件  10.3.1 导入HTML和XML文件  10.3.2 导出HTML和XML文件  10.4 使用电子邮件发送导出的文本文件  10.5 小结  第11章 将Access与Outlook联系...

    Access 2007 VBA宝典 4/4

     10.2.3 导出数据库和电子表格文件  10.3 使用XML和HTML文件  10.3.1 导入HTML和XML文件  10.3.2 导出HTML和XML文件  10.4 使用电子邮件发送导出的文本文件  10.5 小结  第11章 将Access与Outlook联系...

    Access 2007 VBA宝典 3/4

     10.2.3 导出数据库和电子表格文件  10.3 使用XML和HTML文件  10.3.1 导入HTML和XML文件  10.3.2 导出HTML和XML文件  10.4 使用电子邮件发送导出的文本文件  10.5 小结  第11章 将Access与Outlook联系...

    Access 2007 VBA宝典 2/4

     10.2.3 导出数据库和电子表格文件  10.3 使用XML和HTML文件  10.3.1 导入HTML和XML文件  10.3.2 导出HTML和XML文件  10.4 使用电子邮件发送导出的文本文件  10.5 小结  第11章 将Access与Outlook联系...

    MF00576-在线培训考试系统源码.zip

     3、支持自定义题型功能,系统提供单选类、多选类、判断类、填空类、问答类、作文类、打字类和操作类等八大类基本题型,其中操作类试题提供了文件下载和上传功能,轻松实现Word、Excel、FrontPage、Visual Foxpro等...

    C#通过NPOI操作Excel的实例代码

    C#操作Excel的方法有很多种,常见的有微软官方的OLE Automation,Apache的POI等。这里介绍的是POI翻译成C#的NPOI。...这里提供一个操作Excel的类,类中提供了4个方法,两个导出,两个导入。可以通过DataSet导

Global site tag (gtag.js) - Google Analytics