• 【C#点滴记录】ASP.NET 使用C# 导出Word 和Excel


    原文摘自 慧优米网,链接地址:http://huiyoumi.wang/upload/forum.php?mod=viewthread&tid=797&extra=

    好了正文来了

    今天有人问我,怎么把网页上的内容导出到word 或 excel中,很多公司或项目中都会用到该功能,大家解决方案有很多种

    首先谈一下关于使用前端技术来完成,使用js去抓取网页中结构和内容,是最好的方式之一了,但在生成内容上却收到浏览器的限制,现大多数浏览器对ActiveXObject 这个插件都有限制,甚至在上传路径中都已经做了保护措施,地址也非明文。所以这种导出方法不太可选。

    基于前端问题,大多数导出方案都放到了后台去完成,今天我们就使用C#完成导出功能,也借助了浏览器自带下载功能。

    实现步骤

    怎么创建ASP.NET应用程序这里就不用细讲了,

    创建好窗口代码如下

    <form id="form1" runat="server">
        <div>
         <table class="style1" id="table" border="1">  
                <tr>  
                    <td>  
                        你好,我是测试表格  
                    </td>  
                    <td>  
                        还有欠缺请包含  
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        dfgfsd  
                    </td>  
                    <td>  
                        hello  
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                        不及跬步  
                    </td>  
                    <td>  
                        无以至千里  
                    </td>  
                </tr>  
                <tr>  
                    <td>  
                           
                    </td>  
                    <td>  
                        朋友希望能帮到你哦  
                    </td>  
                </tr>  
            </table>  
            这是一段文本与表格无任何关系!!!!!!!<br />
    
            <asp:Button ID="BtnWord" runat="server" Text="-=导出Word=-" OnClick="BtnWord_Click" />
        </div>
        </form>

    注意的是,这里面代码直接拷贝到你的aspx页面中可能按钮会报错,大家重新拖一个进来然后再给一个事件即可
    C#代码如下

    /// <summary>  
            ///  导出到文件的方法,  
            /// </summary>  
            /// <param name="Model">Model=1:导出为Execl,Model=2:导出为Word</param>  
            private void toFiles(int Model)
            {
                string strFileName = DateTime.Now.ToString("yyyyMMdd-hhmmss");
                System.Web.HttpContext HC = System.Web.HttpContext.Current;
                HC.Response.Clear();
                HC.Response.Buffer = true;
                HC.Response.ContentEncoding = System.Text.Encoding.UTF8;//设置输出流为简体中文  
                if (Model == 1)
                {
                    //---导出为Excel文件  
                    HC.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8) + ".xls");
                    HC.Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。  
                }
                else
                {
                    //--- 导出为Word文件  
                    HC.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8) + ".doc");
                    HC.Response.ContentType = "application/ms-word";//设置输出文件类型为Word文件。  
                }
                System.IO.StringWriter sw = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
                this.RenderControl(htw);
                HC.Response.Write(sw.ToString());
                HC.Response.End();
    
            }  

    此外还需要导入两个命名空间

    using System.IO;
    using System.Text;

    在执行的过程中会在his.RenderControl(htw);这里报错。报一个缓冲错误,
    这时只需要在aspx页面添加一个属性即可 属性如下

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="OutWord.aspx.cs" Inherits="ImportWord.OutWord"  EnableEventValidation="false"  %>

    最后就是需要调用一下C#方法即可,

    在这里声明一下,本文摘抄地址也是我自己的论坛,所以内容都是经过自己亲测Demo 如果想要的话也私信我留邮箱我看到的话会发给你,

  • 相关阅读:
    vue-cli之加载ico文件
    arcgisJs之featureLayer中feature的获取
    浏览器兼容设置
    global.css
    sass之mixin的全局引入(vue3.0)
    arcgis之隐藏设置放大缩小按钮
    vue之scoped穿透
    关闭google默认打开翻译提醒
    ...args剩余参数用法
    js之向div contenteditable光标位置添加字符
  • 原文地址:https://www.cnblogs.com/zlero/p/6525179.html
Copyright © 2020-2023  润新知