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

本文介绍了一种将Word文档转换为HTML的方法,以便实现文档的在线浏览。通过使用Microsoft Office Interop组件,该方法能够在服务器端将Word文档转换为HTML格式,并确保图片与表格等元素能够正确展示。

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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==nullreturn;
      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, truetrue });
      //转换格式,另存为 
      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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值