.Net导出Word和Excel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;


public class ExportOffice
{
    //导出页面或web控件方法#region 导出页面或web控件方法
    /**/
    /// <summary>
    /// 将Web控件或页面信息导出(不带文件名参数)
    /// </summary>
    /// <param name="source">控件实例</param>        
    /// <param name="DocumentType">导出类型:Excel或Word</param>
    public void ExportControl(System.Web.UI.Control source, string DocumentType)
    {
        //设置Http的头信息,编码格式
        if (DocumentType == "Excel")
        {
            //Excel            
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("下载文件.xls", System.Text.Encoding.UTF8));
            HttpContext.Current.Response.ContentType = "application/ms-excel";
        }

        else if (DocumentType == "Word")
        {
            //Word
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("下载文件.doc", System.Text.Encoding.UTF8));
            HttpContext.Current.Response.ContentType = "application/ms-word";
        }

        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

        //关闭控件的视图状态
        source.Page.EnableViewState = false;

        //初始化HtmlWriter
        System.IO.StringWriter writer = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
        source.RenderControl(htmlWriter);

        //输出
        HttpContext.Current.Response.Write(writer.ToString());
        HttpContext.Current.Response.End();
    }

    /**/
    /// <summary>
    /// 将Web控件或页面信息导出(带文件名参数)
    /// </summary>
    /// <param name="source">控件实例</param>        
    /// <param name="DocumentType">导出类型:Excel或Word</param>
    /// <param name="filename">保存文件名</param>
    public void ExportControl(System.Web.UI.Control source, string DocumentType, string filename)
    {
        //设置Http的头信息,编码格式
        if (DocumentType == "Excel")
        {
            //Excel            
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + ".xls", System.Text.Encoding.UTF8));
            HttpContext.Current.Response.ContentType = "application/ms-excel";
        }

        else if (DocumentType == "Word")
        {
            //Word
            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + ".doc", System.Text.Encoding.UTF8));
            HttpContext.Current.Response.ContentType = "application/ms-word";
        }

        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

        //关闭控件的视图状态
        source.Page.EnableViewState = false;

        //初始化HtmlWriter
        System.IO.StringWriter writer = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
        source.RenderControl(htmlWriter);

        //输出
        HttpContext.Current.Response.Write(writer.ToString());
        HttpContext.Current.Response.End();
    }
    #region 调用说明
    //方法ExportControl(System.Web.UI.Control source, string DocumentType,string filename)中
    //第一个参数source表示导出的页面或控件名,当为datagrid或dataList控件时,在导出Excel/word文件时,必须把控件的分页、排序等属性去除并重新绑定,
    //第二个参数DocumentType表示导出的文件类型word或excel
    //第三个参数filename表示需要导出的文件所取的文件名
    //调用方法:
    //ExportData export=new ExportData();
    //export.ExportControl(this, "Word","testfilename");//当为this时表示当前页面
    //这是将整个页面导出为Word,并命名为testfilename
    #endregion
}

  

<!DOCTYPE html>

<html xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<head runat="server">
 <!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:TrackMoves>false</w:TrackMoves><w:TrackFormatting/><w:ValidateAgainstSchemas/><w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid><w:IgnoreMixedContent>false</w:IgnoreMixedContent><w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText><w:DoNotPromoteQF/><w:LidThemeOther>EN-US</w:LidThemeOther><w:LidThemeAsian>ZH-CN</w:LidThemeAsian><w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript><w:Compatibility><w:BreakWrappedTables/><w:SnapToGridInCell/><w:WrapTextWithPunct/><w:UseAsianBreakRules/><w:DontGrowAutofit/><w:SplitPgBreakAndParaMark/><w:DontVertAlignCellWithSp/><w:DontBreakConstrainedForcedTables/><w:DontVertAlignInTxbx/><w:Word11KerningPairs/><w:CachedColBalance/><w:UseFELayout/></w:Compatibility><w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel><m:mathPr><m:mathFont m:val='Cambria Math'/><m:brkBin m:val='before'/><m:brkBinSub m:val='--'/><m:smallFrac m:val='off'/><m:dispDef/><m:lMargin m:val='0'/> <m:rMargin m:val='0'/><m:defJc m:val='centerGroup'/><m:wrapIndent m:val='1440'/><m:intLim m:val='subSup'/><m:naryLim m:val='undOvr'/></m:mathPr></w:WordDocument></xml><![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <style>
        table{ border: solid 1px black;border-collapse: collapse;}
        td{width: 200px;border: solid 1px black;word-wrap: break-word; word-break: break-all;}
        body,tr,td{font-size:14px;}
    </style>
</head>
<body>
<form id="form1" runat="server">
 <table style="margin:0px auto;" border="1" >
        <caption style="font:20px/30px Arail;"><asp:Literal runat="server" ID="lbl_Caption"></asp:Literal></caption>
        <tr>
            <td><asp:Literal runat="server" ID="lbl_username_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_username_value"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_userCode_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_userCode_value"></asp:Literal></td>
        </tr>
        <tr>
            <td><asp:Literal runat="server" ID="lbl_sex_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_sex_value"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_birthday_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_birthday_value"></asp:Literal></td>
        </tr>
        <tr>
            <td><asp:Literal runat="server" ID="lbl_nationality_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_nationality_value"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_company_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_company_value"></asp:Literal></td>
        </tr>
        <tr>
            <td><asp:Literal runat="server" ID="lbl_hospitalName_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_hospitalName_value"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_tjDate_title"></asp:Literal></td>
            <td><asp:Literal runat="server" ID="lbl_tjDate_value"></asp:Literal></td>
        </tr>
        <asp:Literal runat="server" ID="lbl_data"> </asp:Literal>
    </table>
    </form>
</body>
</html>

  

posted @ 2014-04-28 16:28  指尖舞者  阅读(331)  评论(1编辑  收藏  举报