asp.net 实现在线浏览word文档(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== 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();
     }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值