.Net源码论坛 [ 繁体中文 ]

发新话题 回复该主题

.net导出Word文档的一种方法 [复制链接]

楼主
由于ActiveX控件只支持IE(好像FF可以通过安装插件支持),所以js导出word的方式就比较局限

可是如果当页面经过js修改以后,.net是无法获取到的,所以要通过js获取到最新的html并传给后台生成文件流以供下载

    $("#expword").click(function () {

                var form = $("<form>");
                form.attr('style', 'display:none');
                form.attr('target', '');
                form.attr('method', 'post');
                form.attr('action', 'ExportWord.aspx');
                var input1 = $('<input>');
                input1.attr('type', 'hidden');
                input1.attr('name', 'curDivHtml');
                input1.attr('value', $('#divArea').html());
                $('body').append(form);
                form.append(input1);

                form.submit();
                form.remove();
            });

复制代码
通过以上方式传输html内容,需要在源页面和"ExportWord.aspx"页面上加上ValidateRequest="false"

获取到html内容后传入下面的方法中,就会通过Response输出word文件了

    /// <summary>
            /// 将HTML导出为Word文档
            /// </summary>
            /// <param name="html">html代码</param>
            /// <param name="filename">word文件名</param>
            public void ExportHTML(string html,string filename)
            {
                //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;

                //输出
                HttpContext.Current.Response.Write(html);
                HttpContext.Current.Response.End();

            }
分享 转发
TOP
沙发

什么时候才能不要验证码啊
TOP
板凳

学习了,用到了。
TOP
地板

回复 2楼czv3665336的帖子

难于上青天
TOP
五楼

赚积分,小手一抖,积分到手
TOP
六楼

总要赚购积分饿了
TOP
七楼

可以参考一下的
TOP
八楼

回复 3楼wsvip的帖子

搜噶
TOP
九楼

回复 5楼wsvip的帖子

.....
TOP
十楼

回复 6楼wsvip的帖子

。。。。。
TOP
发新话题 回复该主题