巧用数据流让 Word 文档在线阅读

经常写博客或空间日记的朋友,对网络编辑器(如图1,是CSDN的博客编辑器)并不陌生,也比较容易做出非常绚烂的排版。但这次在做一个BS的项目,客户一直在用Office的软件中的Word来编辑,并没用过这种工具,很陌生,“这里怎么设置行间距?”——让我瞬时摸不到头脑。在原版的系统中,客户发布信息时,索性用屏幕截图工具从Word中截图,然后粘到编辑器中,效果可想而知。后来细想,既然习惯了用Word,何不把Word上传,然后在线预览呢?

图1

查了一下资料,发现并不难,主要就是把Word转成Html格式,然后通过数据流读取,并显示出来!

注意:要先添加对 “Microsoft.Office.Interop.Word” 的引用

        下面看一下代码实现:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Word = Microsoft.Office.Interop.Word;

namespace TestWordOnline
{
    public partial class demo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string filename = WordToHtml("f:\\测试.doc");
            //以gb2312格式的编码从字节流中读取字符
            StreamReader fread = new StreamReader(filename, System.Text.Encoding.GetEncoding("gb2312"));
            string ss = fread.ReadToEnd();
            //打印数据
            Response.Write(ss);
            fread.Close();
            fread.Dispose();
        }

        /// <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();
        }
    }
}

        再看一下效果:

图3-Word版

图4-网页版

功能实现蛮简单的吧?我们用惯了这种网络编程器,无形中把这种习惯强加给了用户,孰不知恰好相反。程序是面向用户使用的,只有让用户切身感觉到用得舒服,这才是每个IT人士的出发点。

时间: 2024-10-13 10:26:44

巧用数据流让 Word 文档在线阅读的相关文章

asp.net如何实现word文档在线预览

原文:asp.net如何实现word文档在线预览 实现方式:office文档转html,再在浏览器里面在线浏览 1.首先引入com组件中office库,然后在程序集扩展中引入word的dll 2.将Microsoft.Office.Interop.Word的嵌入互操作类型设置为 false,如图 3.主要代码 C# 代码   复制 using System; using System.Collections.Generic; using System.Linq; using System.Web

word文档在线预览解决方案

花了一整天在网上翻关于 “word文档在线预览解决方案” 相关的资料,感觉实现难度比较大还是用PDF来解决好了.. 下面列一下比较好的参考资料吧 参考资料 前端实现在线预览pdf.word.xls.ppt等文件 OFFICE 文档转换为html在线预览 [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你! Office文件在线预览功能够折腾的了 Office在线预览及PDF在线预览的实现方式大集合 python3将docx转换成pdf,html文件

笔记——文档在线阅读的解决方案(未完待续)

目前现在很多大型的网站或是某些项目需要让用户上传的文档可以在线预览.这个目前我所了解到的有以下几种情况: 1.pdf 在线阅读 2.office 在线阅读 对于pdf目前有很多解决方案了,可以参考 http://www.open-open.com/news/view/1fc3e18  ,对于office在线阅读,目前.我的办法是,先转换为PDF,然后使用pdf在线阅读的方式进行浏览.目前好像很多站点都是这么做的. 然而,我在项目中,这类文档在线阅读方案是这样的.OFFICE --> PDF  -

php实现word文档在线浏览功能,配置安装手记

一般类似oa或者crm等管理系统可能都会遇到需要再线查看word文档的功能,类似百度文库. 记得去年小组中的一个成员负责的项目就需要这个的功能,后面说是实现比较困难,就将就着用chm格式替代了.今天看到网上一遍文章<LINUX下面PHP文件转换>,介绍怎么样在linux下使用Openoffice 3 , Pdf2Swf tool , Jodconverter , FlexPaper,实现文档在线查看. 自己再ubuntu下进行的尝试安装,步骤如下: 因为ubuntu版本为10.0.4,open

Java实现word文档在线预览,读取office文件

想要实现word或者其他office文件的在线预览,大部分都是用的两种方式,一种是使用openoffice转换之后再通过其他插件预览,还有一种方式就是通过POI读取内容然后预览. 一.使用openoffice方式实现word预览 主要思路是: 1.通过第三方工具openoffice,将word.excel.ppt.txt等文件转换为pdf文件 2.通过swfTools将pdf文件转换成swf格式的文件 3.通过FlexPaper文档组件在页面上进行展示 我使用的工具版本: openof:3.4.

word文档在线压缩的简单方法

word文档怎么压缩?文档太大的时候我们可以将较大的文档压缩变小,通常word文档是我们常用的文档格式,在日常的生活中,我们可能会经常用到一些不同的文档形式,那么我们是怎么将这些文档压缩变小的呢?下面小编就简单给大家介绍一下Word在线压缩的方法. 辅助工具:迅捷PDF在线转换器 步骤一:我们可将需要压缩的word文档进行压缩变小,将word文档准备好放在桌面上:步骤二:然后打开电脑中的浏览器进行搜索迅捷PDF在线转换器找到文档处理中的Word压缩:步骤三:找到之后就可以进行文档的选择了,在没选

html内嵌flex同时向flex页面传参实现pdf文档在线阅读

由于项目需求需要实现pdf文档的上传并在线阅读,在网上看了很多关于html在线阅读pdf文档的文章,遇到各种问题,包括不同浏览器之间,同一个浏览器不同版本等问题,最终没有实现.后来就换了一个思路,用flex实现pdf的在线阅读,但是flex不能实现直接阅读pdf(对我而言不行),于是了解到可以通过将pdf转swf之后再实现阅读.下面就来看看实现具体过程: 1,实现pdf转为swf: 2,flex实现swf文件的在线浏览: 3,html内嵌flex实现pdf在线浏览. 1,pdf转swf (1)要

flexPaper +swftools实现文档在线阅读

网上已有很多FlexPaper仿百度文库的一些文章,园子里也有很多大牛的详细教程. 结合这次做的例子,在这里详细记录一下使用Flexpaper实现仿百度文库的效果,及自己在跟着园子里的教程做的时候,遇到的一些小问题.希望能给初次接触或者遇到同样问题的同学们提供一些小小的帮助.(描述不足之处,请大家多多见谅,毕竟是第一次在园子里写文章). 1.准备工作:下载FlexPaper及PDF转换工具pdf2swf.exe Flexpaper下载地址:下载 (我下的是1.4.5 Flash Version 

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 =