利用
http://blog.joycode.com/kaneboy/archive/2004/11/03/37889.aspx中提供的方法,已经基本上可以实现word,excel等office文档的在线更新了。为什么说是基本上呢,这就是我说的问题点了。问题是这样的:对于有些word文件在点击打开的时候会提示打不开。但是把文件从服务器上下载下来却是可以正常打开的,证明文件没有被损坏,像这种情况遇到过几回,查了很久还是找不到问题的真正所在,所以在这里请教各位大侠指点下,改怎么解决这个问题。
我的另外一篇相关的帖子:http://community.csdn.net/Expert/TopicView.asp?id=4319918

解决方案 »

  1.   

    现在已经可以实现文档的在线更新了。但是我怎么控制点击word,excel等文件,如果文件不提供下载的话就直接在网页中显示,而不需要弹出一个提示是否打开或保存的对话框?我的另外一个帖子:
    http://community.csdn.net/Expert/topic/4319/4319918.xml?temp=.2048303
      

  2.   

    好久好久没用 VB 了,不过我的机器上一直装着 VB6。我拿那个玩意写几行测试代码,然后给你拷过来。
      

  3.   

    写起来好繁,你还是按照这样的顺序自己写吧:1. 创建一个 ActiveX 控件。
    2. 在界面上加入一个Inet控件。
    3. 引用 microsoft.word 组件。
    4. 代码中写:Option ExplicitPrivate WordApp As New Word.Application
    Private WithEvents WordDoc As Word.DocumentPublic Sub OpenWordDocument(HttpFile As String)
      '使用 Inet 控件下载httpFile到本地
      WordDoc = Word.Application.Documents.Open(本地文件)
    End SubPrivate Sub WordDoc_Close()  '这个事件就是我要说明的自己扩展Word文档行为的功能。
      '对WordDoc对象进行加工,例如将客户端本地信息写入Word的一些标签区域。这是偷取客户
      '  机器上保密资料的好机会,因为此时客户的机器属于你的程序控制。
      WordDoc.Close(本地文件)
      '使用 Inet 控件把本地Word文件 Post 上去。
    End Sub5. 使用 VB6 打包和展开向导程序将这个ActiveX打包成internet组件,它会写入一个 CAB 文件,并且产生可以直接复制到 html 中的代码。
      

  4.   

    下载和上传都是你的程序来控制的(Inet控件是使用起来非常简单,只需要一两条命令),因此关于提示信息和容错流程你可以自己定义。而且也不需要你的网站的某一个目录的权限设置成“write”,你可以把Word文件作为一个参数Form参数(当然要先变为不同字符串,例如xml)传递给一个aspx程序,这样你的网站的管理员也比较放心和省事。
      

  5.   

    谢谢楼上的大哥。现在在线编辑的问题已经解决了,但是还遗留了一个问题,就是怎么在线直接打开word,excel等文档,而不弹出保存对话框。
    在程序里我这样控制的:
    Response.Clear();  Response.Buffer = true; 
    Response.Charset = "utf-8"; 

    if (flag == 1)     //下载指定的文件
    { Response.ContentType = "application/octet-stream";

    Response.AddHeader("content-disposition","attachment; filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1) ));     
    }
    else if (flag == 0)   //直接在浏览器中打开文件
    {
    Response.ContentType = strContentType ;
    Response.AddHeader("content-disposition","inline; filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1)));
    }

    Response.BinaryWrite (file) ;
    Response.Flush () ;
    Response.End () ;但是当flag为0的时候怎么还是会弹出保存或打开的提示框啊,我要的效果是当flag为0时就直接在网页中打开这些文件。