最近所做的项目中需要在Winform窗体中显示Office文档。刚开始就使用webBrowser控件实现的,但是后来发现这个控件在显示Office文档的时候有个限制:只支持Office2003之前的版本,之后的版本都有问题。在网上也有很多人遇到这个问题,找了好久的解决方案都没有找到,后来在一个网站上面找到了一个第三方的控件,可以很好的支持这个功能,就是Dsoframer(可以从网上找到关于Dsoframer的使用说明,里面有很详细介绍它的方法和属性)

操作步骤:

1.需要从网站下载dsoframer.ocx文件

2.把dsoframer.ocx文件复制到c:\windows\system32目录下

开始->运行->regsvr32 dsoframer.ocx , 系统会提示DSOFramer.ocx中的DllRegisterServer成功。

3.在VS中新建项目,添加引用

4.将该控件加载到工具箱中(添加新选项)

5.将控件拖到窗体中

打开文件:this.axFramerControl1.Open(“文档地址”);    //office的相关文档

注:此Dsoframer控制还有很多其它很好的方法和功能,可以去下载一个Dsoframer的使用接口说明文档

------------------------------------------------------------------------------------------------------------------------------------------------

doc  pdf ppt与 txt之间的转换 :

组件的作用一般是将文件读出成字符格式,并不是单纯的转换文件名后缀,所以需要将读出的东西写入txt文件 。

添加office引用

.net中对office中的word及ppt进行编程时,确保安装office时已经安装了word,ppt可编程组件(自定义安装时可查看)或者安装“Microsoft Office 2003 Primary Interop Assemblies”

安装后,在编程页面添加引用:

添加引用-com—microsoft powerpoint object 11.0 libaray/word 11.0 object library;

还得添加office组件

using Microsoft.Office.Interop.Word;

using Microsoft.Office.Interop.PowerPoint;

using org.pdfbox.pdmodel;

using org.pdfbox.util;

using Microsoft.Office.Interop.Word;

using Microsoft.Office.Interop.PowerPoint;

public void pdf2txt(FileInfo file,FileInfo txtfile)

{

PDDocument doc = PDDocument.load(file.FullName);

PDFTextStripper pdfStripper = new PDFTextStripper();

string text = pdfStripper.getText(doc);

StreamWriter swPdfChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));

swPdfChange.Write(text);

swPdfChange.Close();

}

对于doc文件中的表格,读出的结果是去除掉了网格线,内容按行读取。

public void word2text(FileInfo file,FileInfo txtfile)

{

object readOnly = true;

object missing = System.Reflection.Missing.Value;

object fileName = file.FullName;

Microsoft.Office.Interop.Word.ApplicationClass wordapp = new Microsoft.Office.Interop.Word.ApplicationClass();

Document doc = wordapp.Documents.Open(ref fileName,

ref missing, ref readOnly, ref missing, ref missing, ref missing,

ref missing, ref missing, ref missing, ref missing, ref missing,

ref missing, ref missing, ref missing, ref missing, ref missing);

string text = doc.Content.Text;

doc.Close(ref missing, ref missing, ref missing);

wordapp.Quit(ref missing, ref missing, ref missing);

StreamWriter swWordChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));

swWordChange.Write(text);

swWordChange.Close();

}

public void ppt2txt(FileInfo file, FileInfo txtfile)

{

Microsoft.Office.Interop.PowerPoint.Application pa = new Microsoft.Office.Interop.PowerPoint.ApplicationClass();

Microsoft.Office.Interop.PowerPoint.Presentation pp = pa.Presentations.Open(file.FullName,

Microsoft.Office.Core.MsoTriState.msoTrue,

Microsoft.Office.Core.MsoTriState.msoFalse,

Microsoft.Office.Core.MsoTriState.msoFalse);

string pps = "";

StreamWriter swPPtChange = new StreamWriter(txtfile.FullName, false, Encoding.GetEncoding("gb2312"));

foreach (Microsoft.Office.Interop.PowerPoint.Slide slide in pp.Slides)

{

foreach (Microsoft.Office.Interop.PowerPoint.Shape shape in slide.Shapes)

pps += shape.TextFrame.TextRange.Text.ToString();

}

swPPtChange.Write(pps);

swPPtChange.Close();

}

读取不同类型的文件

public StreamReader text2reader(FileInfo file)

{

StreamReader st = null;

switch (file.Extension.ToLower())

{

case ".txt":

st = new StreamReader(file.FullName, Encoding.GetEncoding("gb2312"));

break;

case ".doc":

FileInfo wordfile = new FileInfo(@"E:/my programs/200807program/FileSearch/App_Data/word2txt.txt");//不能使用相对路径,想办法改进

word2text(file, wordfile);

st = new StreamReader(wordfile.FullName, Encoding.GetEncoding("gb2312"));

break;

case ".pdf":

FileInfo pdffile = new FileInfo(@"E:/my programs/200807program/FileSearch/App_Data/pdf2txt.txt");

pdf2txt(file, pdffile);

st = new StreamReader(pdffile.FullName, Encoding.GetEncoding("gb2312"));

break;

case".ppt":

FileInfo pptfile = new FileInfo(@"E:/my programs/200807program/FileSearch/App_Data/ppt2txt.txt");

ppt2txt(file,pptfile);

st = new StreamReader(pptfile.FullName,Encoding.GetEncoding("gb2312"));

break;

}

return st;

}

winform显示word和ppt文档的更多相关文章

  1. winform显示word、ppt和pdf,用一个控件显示

    思路:都以pdf的格式展示,防止文件拷贝,所以要把word和ppt转换为pdf:展示用第三方组件O2S.Components.PDFView4NET.dll,破解版的下载链接:https://pan. ...

  2. PDF/WORD/EXCEL/PPT 文档在线阅读

    查资料看了2种解决方法: 1.通过办公软件dll转换,用flans去看 2.通过Aspose转换成pdf格式,在用js前台读pdf(我用的pdf.js) 今天我解决的就是WORD/EXCEL/PPT ...

  3. 文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法

    在文档集界面中显示Word文档,是文档大师的一个核心功能. 最近在 Win10 升级到最新版后,发现 无法正常显示Office 文档的问题. 一开始以为是Word版本问题,从2007升级到2016,问 ...

  4. word&excel&ppt文档加密方式

    ppt excel word

  5. Java实现在线预览Word,Excel,Ppt文档

    效果图:

  6. 用R创建Word和PowerPoint文档--转载

    https://www.jianshu.com/p/7df62865c3ed Rapp --简书 Microsoft的Office软件在办公软件领域占有绝对的主导地位,几乎每个职场人士都必须掌握Wor ...

  7. Atitit 计算word ppt文档的页数

    Atitit 计算word ppt文档的页数 http://localhost:8888/ http://git.oschina.net/attilax/ati_wordutil private vo ...

  8. 基于DevExpress实现对PDF、Word、Excel文档的预览及操作处理

    http://www.cnblogs.com/wuhuacong/p/4175266.html 在一般的管理系统模块里面,越来越多的设计到一些常用文档的上传保存操作,其中如PDF.Word.Excel ...

  9. 在网页中在线浏览ppt文档

    方法一: 把ppt文件的扩展名直接修改为pps,嵌入到网页中 缺点:这种方式浏览器会提示是打开,还是下载,选择打开的话会直接在浏览器中打开,并且客户端一定要安装Office PowerPoint才能打 ...

随机推荐

  1. Python自学之路---Day13

    目录 Python自学之路---Day13 常用的三个方法 匹配单个字符 边界匹配 数量匹配 逻辑与分组 编译正则表达式 其他方法 Python自学之路---Day13 常用的三个方法 1.re.ma ...

  2. 程序员用 Python 扒出 B 站那些“惊为天人”的UP主!

    ​ 前言 ! 近期B站的跨年晚会因其独特的创意席卷各大视频网站,给公司带来了极大的正面影响,股价也同时大涨,想必大家都在后悔没有早点买B站的股票: ​ 然而今天我们要讨论的不是B站的跨年晚会,而是B站 ...

  3. LeetCode——79. 单词搜索

    给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字 ...

  4. (函数)P1149 火柴棒等式

    题解: #include<stdio.h>int a[10]={6,2,5,5,4,5,6,3,7,6};int num(int n){                          ...

  5. 201771010123汪慧和《面向对象程序设计JAVA》第七周实验总结

    一.理论部分 1.继承 如果两个类存在继承关系,则子类会自动继承父类的方法和变量,在子类中可以调用父类的方法和变量,如果想要在子类里面做一系列事情,应该放在父类无参构造器里面,在java中,只允许单继 ...

  6. [CISCN2019 华北赛区 Day2 Web1]Hack World

    知识点:题目已经告知列名和表明为flag,接下来利用ascii和substr函数即可进行bool盲注 eg: id=(ascii(substr((select(flag)from(flag)),1,1 ...

  7. TX2在Turtlebot测试kobuki

    1.检查TX2开发板上的ROS,输入: $ roscore 如果ROS安装正确显示 started core service [/rosout] 2.输入检测kobuki 命令 ls /dev/kob ...

  8. STM32F407读编码器没上拉电阻遇见的问题

    在调试之前由于本科阶段参加飞思卡尔智能汽车的竞赛,一直在使用与竞赛相关的单片机和编码器,后来由于工程的需要开始使用STM32的板子,在调试编码器的时候遇见了,使用了STM32的官方标准库中的定时器正交 ...

  9. WinServer--mstsc

    部署项目时,远程连接服务器一直提示连接达最大拒绝连接. mstsc /admin 从sp2后,/console参数就改为/admin了,其实就是登陆到远程服务器的控制台,一般加这个参数是为了在远程桌面 ...

  10. Linux-异步IO

    1.何为异步IO (1).几乎可以这么认为:异步IO就是操作系统用软件实现的一套中断响应系统. (2).异步IO的工作方法:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处 ...