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


            常常写博客或空间日记的朋友,对网络编辑器(如图1,是CSDN的博客编辑器)并不陌生。也比較easy做出非常绚烂的排版。但这次在做一个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人士的出发点。

  • 相关阅读:
    重新进入学习模式
    第八章 函数
    第七章 用户输入和while语句
    第6章 字典
    第五章 if语句
    对前四章方法、函数、语句的总结
    完成四个章节的学习,我觉得有必要花一天的时间对各章节内的函数、方法、语句进行总结。明后天不再对新章节进行学习。
    第四章 操作列表
    第三章 列表简介
    C语言数据结构-折半查找
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8398624.html
Copyright © 2020-2023  润新知