首页 新闻 会员 周边

ASP.net 打开Word生成Word

0
悬赏园豆:5 [已关闭问题]

在VS中运行调试都没错,都能打开和生成Word,但是放在IIS上就不能打开和生成了,不知道怎么回事?请高手帮忙!

思想在飞的主页 思想在飞 | 初学一级 | 园豆:195
提问于:2010-05-12 00:05
< >
分享
其他回答(3)
0

不知道你是用什么方法打开和生成Word文档的,是不是服务器没有安装相应版本的Office组件(以前操作Excel遇到过)。

 

生成Word:

    protected void Button1_Click(object sender, EventArgs e)
    {
        Export("application/ms-word", "员工报表.doc");
    }
    private void Export(string FileType, string FileName)
    {
        Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType = FileType;
        this.EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        GridView1.RenderControl(hw);
        Response.Write(tw.ToString());
        Response.End();
    }

Astar | 园豆:40805 (高人七级) | 2010-05-12 08:32
0

主要就是权限的问题,你可以参考一下这个:

开始->运行->"dcomcnfg"->在应用程序列表框中选择“Microsoft   Word   文档”   
          
a.“安全性”->选择“使用自定义访问权限”,点击“编辑”按钮,添加本地“ASPNET”用户,   权限为“允许访问”;   
b.   "身份标识"->“交互式访问”;

设置的话就是的这个组件服务里设置的了,但是具体设置可能要看你的程序

星云一点 | 园豆:205 (菜鸟二级) | 2010-05-12 11:02
0

权限不够。但是,即使你设置了权限,也不建议你在服务器端进行 Office 操作,原因是以下几点。

  1. Office 的设计从未考虑过服务器端的应用。举一个最简单的例子,如果某个操作出错,Office 就会弹出对话框,这在无人监控的服务器端如何应对?况且服务器端会有很多的并发访问,每个并发访问都弹出对话框,如何应对?
  2. 每次操作 Office,根据操作对象,会启动新的 Word 和 Excel 之类的进程,而且您即使调用了 Application.Quit 之类的函数,并且进行了垃圾回收,也不能保证会被释放,那么允许一段时间,您的服务器可能就崩溃了。

根据以上 2 点,如果您一定要在服务器端使用 Office,那么可以按照以下方式进行设计。

  1. 专门建一台服务器,这台服务器只用于运行 Office。
  2. Web 服务器通过服务,如 Web Services 或者 WCF,向 Office 服务器发起服务请求。
  3. 由 Office 服务器进行操作,并将结果返回给 Web 服务器。

这样,即使服务器崩溃了,只要重启 Office 服务器即可,整个应用不会停止。

周巍 | 园豆:735 (小虾三级) | 2010-05-12 11:19
0

这个问题老生常谈了,几年过去了,现在早有非常成熟的方案了,用卓正PageOffice,在线显示、编辑、生成word、excel,不费吹灰之力,跨浏览器支持,IE、谷歌Chrome、火狐Firefox、Opera、国产浏览器兼容极速模式都不在话下

spiderman3 | 园豆:210 (菜鸟二级) | 2013-06-28 15:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册