asp.net 实现在线浏览word文档(word转html)

版权所有,禁止匿名转载;禁止商业使用。

最近在做word文档在线浏览,找了种种方法、控件之后,回归到word转HTML,在线浏览....

一下是后台代码,前台html页面默认代码即可。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.IO;

using Word = Microsoft.Office.Interop.Word;

using Word = Microsoft.Office.Interop.Word;
没有引用好组件时,此处会报错,找不到Interop之类的,
这时需要在引用里面引用组件.net下的Microsoft.Office.Interop.Visio,Microsoft.Office.Interop.Word
后台代码如下:
protected void Page_Load(object sender, EventArgs e)
    {
      string relativePath = Request.QueryString["FilePath"]; //相对路径 ,从跳转页面得到文件相对路径。
      if (relativePath == "" || relativePath==null) return;
      string serverPath = Server.MapPath(relativePath);  //相对转服务器对应路径
      string html = serverPath.Replace(".doc", ".html");
      if (!File.Exists(@html)) //html页面不存在,把word转换成html
      {
        string filename = WordToHtml(serverPath);
        StreamReader fread = new StreamReader(filename, System.Text.Encoding.GetEncoding("gb2312"));
        string ss = fread.ReadToEnd();
        Response.Write(ss); //直接写字符串到网页会发现,文字可显示,图片、表格无法显示。因此在后面重跳转到html文件页面。
        fread.Close();
        fread.Dispose();
      }
      html = relativePath.Replace(".doc", ".html"); 
                 //html文件也存储在同样的路径下,
                //只需要改了原路径的后缀即可得到html文件路径
      Response.Redirect(html);
      return;
    }
     /// <summary> 
    /// word转成html 
    /// </summary> 
    /// <param name="wordFileName"></param> 
    private string WordToHtml(object wordFileName)
    {
      //在此处放置用户代码以初始化页面 
      Word.Application word = new Word.Application();
      Type wordType = word.GetType();
      Word.Documents docs = word.Documents;
      //打开文件 
      Type docsType = docs.GetType();
      Word.Document doc = (Word.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { wordFileName, true, true });
      //转换格式,另存为 
      Type docType = doc.GetType();
      string wordSaveFileName = wordFileName.ToString();
      string strSaveFileName = wordSaveFileName.Substring(0, wordSaveFileName.Length - 3) + "html";
      object saveFileName = (object)strSaveFileName;
      docType.InvokeMember("SaveAs", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
      docType.InvokeMember("Close", System.Reflection.BindingFlags.InvokeMethod, null, doc, null);
      //退出 Word 
      wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
      return saveFileName.ToString();
    }


0 0