winform顯示word和ppt文檔

最近所作的項目中須要在Winform窗體中顯示Office文檔。剛開始就使用webBrowser控件實現的,可是後來發現這個控件在顯示Office文檔的時候有個限制:只支持Office2003以前的版本,以後的版本都有問題。在網上也有不少人遇到這個問題,找了很久的解決方案都沒有找到,後來在一個網站上面找到了一個第三方的控件,能夠很好的支持這個功能,就是Dsoframer(能夠從網上找到關於Dsoframer的使用說明,裏面有很詳細介紹它的方法和屬性)web

操做步驟:編程

1.須要從網站下載dsoframer.ocx文件windows

2.把dsoframer.ocx文件複製到c:\windows\system32目錄下app

         開始->運行->regsvr32 dsoframer.ocx , 系統會提示DSOFramer.ocx中的DllRegisterServer成功。ide

3.在VS中新建項目,添加引用工具

4.將該控件加載到工具箱中(添加新選項)網站

5.將控件拖到窗體中ui

   打開文件:this.axFramerControl1.Open(「文檔地址」);    //office的相關文檔this

注:此Dsoframer控制還有不少其它很好的方法和功能,能夠去下載一個Dsoframer的使用接口說明文檔.net

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

 

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;

    }

相關文章
相關標籤/搜索