源博客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. WebView中Js与Android本地函数的相互调用

    介绍 随着Html5的普及,html在表现力上不一定比原生应用差,并且有很强的扩展兼容性,所以越来越多的应用是采用Html与Android原生混合开发模式实现. 既然要实现混合开发,那么Js与Andr ...

  2. 动态设置easyui datagrid URL

    动态设置easyui datagrid URL$('#tt').datagrid({url:'website/jsp/servlet',        queryParams:{method:'xx' ...

  3. C#操作文件

    c# 操作txt文件 # 操作txt文件 c#创建文本 private const string FILE_NAME = "ErroLog.txt"; public static ...

  4. 瞎折腾之 VS2013 Cordova项目的创建与配置

    扯淡 什么是Cordova ? 网上查询的说明: Cordova是贡献给Apache后的开源项目,是从PhoneGap中抽出的核心代码,是驱动PhoneGap的核心引擎.你可以把他想象成类似于Webk ...

  5. 《摇滚南京》——"人生下来就是孤独"

    昨天是纪录片<摇滚南京>东南大学站的展映分享会 我不是一个摇滚迷,作为学渣狗看论文.码代码的时候会塞个耳机,平时其实民谣听得更多一点,摇滚觉得有点高大上.所以整好趁着学校有活动,也跟着高大 ...

  6. OpenGL学习之路(四)

    1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...

  7. 获取Request请求的路径信息

    从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...

  8. 恢复SD卡错删数据

           对于众多米粉来说,手机里存储的很多资料都非常宝贵,如果不小心删除了,想要重新收集这些资料就显得非常困难.有道是千金易得,数据无价,特别是一些珍贵照片之类的充满回忆的数据,丢失了甚至会抱憾 ...

  9. show engine innodb status 详解

    找个mysql客户端,执行show engine innodb status得到如下结果: 详细信息如下: ************************************** ======= ...

  10. JDBC数据源(DataSource)的简单实现

    数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用.   数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少创建数据 ...