复杂的页面数据表格导出成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
分享到:
相关推荐
操作类请见:http://www.xhsjs.com/NET/ZhiShi/100000909.shtml 操作方法请见 http://www.xhsjs.com/NET/ZhiShi/100000912.shtml
公元19XX年前,关于EXCEL的操作就如滔滔江水,连绵不绝,真正操作EXCEL我也是从去年下半年开始的,有些比较复杂的年度报表之类的,做起来也有点费力,不过还是都能画出来了,关于EXCEL的报表导出,考虑到导出耗时的...
同时支持Excel-2003和Excel-2007,excel-2003解析采用poi的eventusermodel模式实现,2007采用xmlreader实现,经项目验证,excel文件20W条数据没有任何问题,仅读取的话2-3分钟解析完毕。 网络上有关eventusermodel...
从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle Oracle中PL/SQL单行函数和组函数详解 mssql+oracle Oracle...
ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt ...
主要功能点:高安全性的用户管理体系、高安全性的异构系统数据导入导出、拼音检索、复合检索、无限级次数据管理、个性化邮件群发、Excel文件导入导出。 技术点 ADO.Net技术应用、SQLServer、MD5安全算法、基于NPOI的...
ASP导出Excel数据的四种方法.txt C#调用存储过程.txt CheckBox控件.txt datagrid排序_选择_分页.txt DataSet对象.txt DotNET WinForm FAQ 16个.txt excel打印.txt EXCEL导出.txt EXCEL中合并单元格.txt ...
就可以导出html数据表格到execl中,这种方法的问题就是编码格式的兼容性太差,用Mac OS之类的 office打开直接乱码给你看。或者是调用office的COM组件,或宏脚本的方式操作Execl,这种方式的主要问题就是客户端必须要...
是基于微软COM/COM+技术开发的报表二次开发组件,可以应用于企业级的报表开发,能够实现多种复杂报表的设计、打印等操作,具有以下几个特点: 1. 表格控件操作简单,采用类Excel的设计风格,易学易用;...
6、解决在64位操作系统下无法弹出打印对话框的问题,去掉了打印处理进度窗口中的“.NET轻松打印控件”字样; 7、彻底解决了调用Excel后(导出为excel文件)Excel进程未关闭问题; 8、多表头组件...
7、包括各种条件查询、导出Excel表格,Tab页面管理模式、前进后退操作等等功能。 三、注意事项 1、开发环境为Visual Studio 2010,数据库为access,使用.net 4.0开发。 2、管理员用户名密码是:Admin(区分大小写)
6.xb.FrameWork.Office:此组件为Office操作组件,借助于NPOI2.1.1.0 可以实现对03到16版本的Excel的各种导入、导出功能,并且支持Word的导出功能(此导出功能非常强大,支持段落、表格导出,纸张、字体、标题的...
10.2.3 导出数据库和电子表格文件 10.3 使用XML和HTML文件 10.3.1 导入HTML和XML文件 10.3.2 导出HTML和XML文件 10.4 使用电子邮件发送导出的文本文件 10.5 小结 第11章 将Access与Outlook联系...
10.2.3 导出数据库和电子表格文件 10.3 使用XML和HTML文件 10.3.1 导入HTML和XML文件 10.3.2 导出HTML和XML文件 10.4 使用电子邮件发送导出的文本文件 10.5 小结 第11章 将Access与Outlook联系...
10.2.3 导出数据库和电子表格文件 10.3 使用XML和HTML文件 10.3.1 导入HTML和XML文件 10.3.2 导出HTML和XML文件 10.4 使用电子邮件发送导出的文本文件 10.5 小结 第11章 将Access与Outlook联系...
10.2.3 导出数据库和电子表格文件 10.3 使用XML和HTML文件 10.3.1 导入HTML和XML文件 10.3.2 导出HTML和XML文件 10.4 使用电子邮件发送导出的文本文件 10.5 小结 第11章 将Access与Outlook联系...
3、支持自定义题型功能,系统提供单选类、多选类、判断类、填空类、问答类、作文类、打字类和操作类等八大类基本题型,其中操作类试题提供了文件下载和上传功能,轻松实现Word、Excel、FrontPage、Visual Foxpro等...
C#操作Excel的方法有很多种,常见的有微软官方的OLE Automation,Apache的POI等。这里介绍的是POI翻译成C#的NPOI。...这里提供一个操作Excel的类,类中提供了4个方法,两个导出,两个导入。可以通过DataSet导