源博客http://blog.csdn.net/kable999/article/details/4786654

代码支持任意office格式
需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS
下载地址
这是一个微软官方出的office插件。
安装好之后,打开VS,以VS2005为例
新建windows应用程序项目
添加以下com组件的引用
Microsoft Word 12.0 Object Library
Microsoft PowerPoint 12.0 Object Library
Microsoft Excel 12.0 Object Library
 
------------------------------------------------------
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Microsoft.Office.Core;
 
我们可以使用一个枚举类型来决定生成文件的类型
Word.WdExportFormat wd = Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF;
Excel.XlFixedFormatType excelType = Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF;
PowerPoint.PpSaveAsFileType ppType = Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsPDF;
 
这里Word跟Excel我使用了ExportAsFixedFormat,PowerPoint我使用了SaveAs方法。
对于Word跟PowerPoint效果是一样的,只是SaveAs方法支持的格式更多。
但是Excel似乎不支持SaveAs方法,呵呵
----------------
Word转换方法
private bool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat) 
                { 
                        bool result; 
                        object paramMissing = Type.Missing; 
                        Word.ApplicationClass wordApplication = new Word.ApplicationClass(); 
                        Word.Document wordDocument = null; 
                        try 
                        { 
                                object paramSourceDocPath = sourcePath; 
                                string paramExportFilePath = targetPath; 
 
                                Word.WdExportFormat paramExportFormat = exportFormat; 
                                bool paramOpenAfterExport = false; 
                                Word.WdExportOptimizeFor paramExportOptimizeFor = 
                                        Word.WdExportOptimizeFor.wdExportOptimizeForPrint; 
                                Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument; 
                                int paramStartPage = 0; 
                                int paramEndPage = 0; 
                                Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent; 
                                bool paramIncludeDocProps = true; 
                                bool paramKeepIRM = true; 
                                Word.WdExportCreateBookmarks paramCreateBookmarks = 
                                        Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks; 
                                bool paramDocStructureTags = true; 
                                bool paramBitmapMissingFonts = true; 
                                bool paramUseISO19005_1 = false; 
 
                                wordDocument = wordApplication.Documents.Open( 
                                        ref paramSourceDocPath, ref paramMissing, ref paramMissing, 
                                        ref paramMissing, ref paramMissing, ref paramMissing, 
                                        ref paramMissing, ref paramMissing, ref paramMissing, 
                                        ref paramMissing, ref paramMissing, ref paramMissing, 
                                        ref paramMissing, ref paramMissing, ref paramMissing, 
                                        ref paramMissing); 
 
                                if (wordDocument != null) 
                                        wordDocument.ExportAsFixedFormat(paramExportFilePath, 
                                                paramExportFormat, paramOpenAfterExport, 
                                                paramExportOptimizeFor, paramExportRange, paramStartPage, 
                                                paramEndPage, paramExportItem, paramIncludeDocProps, 
                                                paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, 
                                                paramBitmapMissingFonts, paramUseISO19005_1, 
                                                ref paramMissing); 
                                result = true; 
                        } 
                        finally 
                        { 
                                if (wordDocument != null) 
                                { 
                                        wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing); 
                                        wordDocument = null; 
                                } 
                                if (wordApplication != null) 
                                { 
                                        wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing); 
                                        wordApplication = null; 
                                } 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                        } 
                        return result; 
                }
Excel转换方法
private bool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType) 
                { 
                        bool result; 
                        object missing = Type.Missing; 
                        ApplicationClass application = null; 
                        Workbook workBook = null; 
                        try 
                        { 
                                application = new ApplicationClass(); 
                                object target = targetPath; 
                                object type = targetType; 
                                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing, 
                                        missing, missing, missing, missing, missing, missing, missing, missing, missing); 
 
                                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing); 
                                result = true; 
                        } 
                        catch 
                        { 
                                result = false; 
                        } 
                        finally 
                        { 
                                if (workBook != null) 
                                { 
                                        workBook.Close(true, missing, missing); 
                                        workBook = null; 
                                } 
                                if (application != null) 
                                { 
                                        application.Quit(); 
                                        application = null; 
                                } 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                        } 
                        return result; 
                }
PowerPoint转换方法
                private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType) 
                { 
                        bool result; 
                        object missing = Type.Missing; 
                        ApplicationClass application = null; 
                        Presentation persentation = null; 
                        try 
                        { 
                                application = new ApplicationClass(); 
                                persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse); 
                                persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue); 
 
                                result = true; 
                        } 
                        catch 
                        { 
                                result = false; 
                        } 
                        finally 
                        { 
                                if (persentation != null) 
                                { 
                                        persentation.Close(); 
                                        persentation = null; 
                                } 
                                if (application != null) 
                                { 
                                        application.Quit(); 
                                        application = null; 
                                } 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                                GC.Collect(); 
                                GC.WaitForPendingFinalizers(); 
                        } 
                        return result; 
                }
 
如果是word文档或者Excel文档想要转换xps格式,我们还可以有一种方法,那就是利用xps虚拟打印机实现。
安装了.NetFrameWork3.5之后,默认会在系统中安装XPS虚拟打印机,我们将其设置为默认打印机。
Microsoft XPS Document Writer
word文档打印为xps
                public void PrintWord(string wordfile) 
                { 
                        oWord.ApplicationClass word = new oWord.ApplicationClass(); 
                        Type wordType = word.GetType(); 
 
                        //打开WORD文档 
                        oWord.Documents docs = word.Documents; 
                        Type docsType = docs.GetType(); 
                        object objDocName = wordfile; 
                        oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true }); 
 
                        //打印输出到指定文件 
                        //可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数 
                        Type docType = doc.GetType(); 
                        object printFileName = wordfile + ".xps"; 
                        docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, new object[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName }); 
 
                        //退出WORD 
                        wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null); 
                }
Excel利用虚拟打印机转换为xps
                public void PrintExcel(string execlfile) 
                { 
                        Excel.ApplicationClass eapp = new Excel.ApplicationClass(); 
                        Type eType = eapp.GetType(); 
                        Excel.Workbooks Ewb = eapp.Workbooks; 
                        Type elType = Ewb.GetType(); 
                        object objelName = execlfile; 
                        Excel.Workbook ebook = (Excel.Workbook)elType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, Ewb, new Object[] { objelName, true, true }); 
 
                        object printFileName = execlfile + ".xps"; 
 
                        Object oMissing = System.Reflection.Missing.Value; 
                        ebook.PrintOut(oMissing, oMissing, oMissing, oMissing, oMissing, true, oMissing, printFileName); 
 
                        eType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, eapp, null); 
                }
,同样,如果系统安装了PDF虚拟打印机,如5D PDF之类的,我们也可以将其设置为默认打印机以达到转换为PDF格式的目的
我们可以将这些方法放在windows service里面,实现文档的后台转换。

C#实现office文档转换为PDF或xps的一些方法( 转)的更多相关文章

  1. 转:C#实现office文档转换为PDF或xps的一些方法

    代码支持任意office格式 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址 [url]http://www.microsoft ...

  2. 在禅道中实现WORD等OFFICE文档转换为PDF进行在线浏览

    条件: 安装好禅道的服务器 能直接浏览PDF的浏览器(或通过 安装插件实现 ) 文档转换服务程序(建议部署在另一台服务器上)     实现 原理: 修改禅道的文件预览功能(OFFICE文档其使用的是下 ...

  3. C#实现office文档转换为PDF格式

    1.安装组件OfficeSaveAsPDFandXPS 需要安装office 2007 还有一个office2007的插件OfficeSaveAsPDFandXPS 下载地址   OfficeSave ...

  4. java使用jacob将office文档转换为PDF格式

    jacob 包下载地址: http://sourceforge.net/projects/jacob-project/ 下载后,将jacob 与 jacob-1.19-x64.dll放到安装jdk目录 ...

  5. office文档转pdf

    这里贴下代码吧,没啥好说的. using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

  6. OFFICE 文档转换为html在线预览

    OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper Office文档直接转换为SWF,通过网页加载Flash预览 微软的 ...

  7. Java实现web在线预览office文档与pdf文档实例

    https://yq.aliyun.com/ziliao/1768?spm=5176.8246799.blogcont.24.1PxYoX 摘要: 本文讲的是Java实现web在线预览office文档 ...

  8. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  9. 把office文档转换为html过程中的一些坑

    之前和我们项目的团队一起酝酿了一个项目,公司的业务文档技术文档比较多,但都比较分散,虽然通过FTP或其他方式聚合起来了,但感觉还是不够方便. 另外公司每次都来新员工,新员工都需要一些培训,比较耗时,比 ...

随机推荐

  1. Android Studio 配置使用百度api (附带简单样例)

    还是和同学开发的那个课程作业项目的app, 要使用到百度地图的api 但是,官方文档貌似只有Eclipse的例子,对Android Studio似乎没有说明.  难道,是因为后者是 "Doo ...

  2. 漫游Kafka入门篇之简单介绍

    介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢?   首先让我们看几个基本的消息系统术语: Kafka将消息以 ...

  3. SqlDataAdapter的update方法

    公司项目需要,需要将旧数据升级.所谓的旧数据指密码,密码经过了加密处理,但是可逆的.现将加密算法进行了更新,因此需要同步处理系统中已有的旧数据. 所有的数据存储在一个表中,简单的说是数据批量更新.自动 ...

  4. marginCollapse之兄弟关系的DIV

    废话不说,直接上图 基本代码如下: 效果图如下: 给两个div分别加marginBottom和marginTop看一下效果 实际效果如下: 我们可以看出两个div之间的距离并不是50+50,而是只显示 ...

  5. 判断https

    判断https <script> if(window.location.protocol=='https:'){ window.location.href='http://e.abchin ...

  6. 剑指offer-第二章算法之斐波拉契数列(青蛙跳台阶)

    递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调 ...

  7. 【转】Eclipse常用快捷键

    原文网址:http://denver.blog.51cto.com/272871/52219 编辑相关快捷键 1.[Alt+/] 为用户提供内容的辅助. 2.[Ctrl+O] 显示类中方法和属性的大纲 ...

  8. android中的所谓观察者模式

    生活中我们常认定某些人很有才,但什么是有才呢?明朝的王守仁曾这样解释:才,是所谓天理,应用到物上,便成了才.凡事凡物,只要掌握了所谓科学的方法,并能灵活运用,那么你也可以成为一个有才的人. 观察者模式 ...

  9. mysql 1130 ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server

    mysql -u root -p  mysql;use mysql;  mysql;select 'host' from user where user='root';  mysql;update u ...

  10. tcpdump命令

    tcpdump 抓包 http://blog.sina.com.cn/s/blog_6335d36b0101mrfz.html