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

摘要:
我搜了一些材料。以下是我知道的支持任何办公格式的一些方法代码。您需要安装office2007。还有一个用于office2007的插件。OfficeSaveAsPDFandXPS下载地址[url]http://www.microsoft.com/downloads/details.aspx?FamilyId=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en[/url]这是一个官方的Microsoft office插件。安装后,打开VS并以VS2005为例创建新的Windows应用程序项目。添加对以下com组件MicrosoftWord12.0ObjectLibraryMicrosoftPoint12.0ObjectLibrryMicrosoftExcel12.0ObjectLibrary的引用--------------------------------------------------------------------usingWord=Microsoft。办公室互操作。单词使用Excel=Microsoft.Office.Interop。擅长使用PowerPoint=Microsoft.Office.Interop。幻灯片演示文稿软件;使用Microsoft.Office。果心我们可以使用枚举类型来确定生成的文件Word的类型。WdExportFormatwd=Microsoft。办公室互操作。单词WdExportFormat。wdExportFormatPDF;Excel.XlFixedFormatTypeexcelType=Microsoft.Office.Interop.Excel.XlFixed格式类型。xlTypePDF;PowerPoint.PpSaveAsFileTypeppType=Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType。ppSaveAsPDF;在这里,Word和Excel使用ExportAsFixedFormat,PowerPoint使用SaveAs方法。对于Word,效果与PowerPoint相同,只是SaveAs方法支持更多格式。
这段时间一直在研究office文档转为PDF或xps格式的方法。查找了一些资料。
一下是我所知道的一些方法
代码支持任意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转换方法
C#实现office文档转换为PDF或xps的一些方法第1张privatebool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat)
C#实现office文档转换为PDF或xps的一些方法第1张                {
C#实现office文档转换为PDF或xps的一些方法第1张                        bool result;
C#实现office文档转换为PDF或xps的一些方法第1张                        object paramMissing = Type.Missing;
C#实现office文档转换为PDF或xps的一些方法第1张                        Word.ApplicationClass wordApplication = new Word.ApplicationClass();
C#实现office文档转换为PDF或xps的一些方法第1张                        Word.Document wordDocument = null;
C#实现office文档转换为PDF或xps的一些方法第1张                        try
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                object paramSourceDocPath = sourcePath;
C#实现office文档转换为PDF或xps的一些方法第1张                                string paramExportFilePath = targetPath;
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                                Word.WdExportFormat paramExportFormat = exportFormat;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramOpenAfterExport = false;
C#实现office文档转换为PDF或xps的一些方法第1张                                Word.WdExportOptimizeFor paramExportOptimizeFor =
C#实现office文档转换为PDF或xps的一些方法第1张                                        Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
C#实现office文档转换为PDF或xps的一些方法第1张                                Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument;
C#实现office文档转换为PDF或xps的一些方法第1张                                int paramStartPage = 0;
C#实现office文档转换为PDF或xps的一些方法第1张                                int paramEndPage = 0;
C#实现office文档转换为PDF或xps的一些方法第1张                                Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramIncludeDocProps = true;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramKeepIRM = true;
C#实现office文档转换为PDF或xps的一些方法第1张                                Word.WdExportCreateBookmarks paramCreateBookmarks =
C#实现office文档转换为PDF或xps的一些方法第1张                                        Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramDocStructureTags = true;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramBitmapMissingFonts = true;
C#实现office文档转换为PDF或xps的一些方法第1张                                bool paramUseISO19005_1 = false;
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                                wordDocument = wordApplication.Documents.Open(
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramSourceDocPath, ref paramMissing, ref paramMissing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramMissing, ref paramMissing, ref paramMissing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramMissing, ref paramMissing, ref paramMissing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramMissing, ref paramMissing, ref paramMissing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramMissing, ref paramMissing, ref paramMissing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        ref paramMissing);
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                                if (wordDocument != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                        wordDocument.ExportAsFixedFormat(paramExportFilePath,
C#实现office文档转换为PDF或xps的一些方法第1张                                                paramExportFormat, paramOpenAfterExport,
C#实现office文档转换为PDF或xps的一些方法第1张                                                paramExportOptimizeFor, paramExportRange, paramStartPage,
C#实现office文档转换为PDF或xps的一些方法第1张                                                paramEndPage, paramExportItem, paramIncludeDocProps,
C#实现office文档转换为PDF或xps的一些方法第1张                                                paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
C#实现office文档转换为PDF或xps的一些方法第1张                                                paramBitmapMissingFonts, paramUseISO19005_1,
C#实现office文档转换为PDF或xps的一些方法第1张                                                ref paramMissing);
C#实现office文档转换为PDF或xps的一些方法第1张                                result = true;
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        finally
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                if (wordDocument != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing);
C#实现office文档转换为PDF或xps的一些方法第1张                                        wordDocument = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                if (wordApplication != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing);
C#实现office文档转换为PDF或xps的一些方法第1张                                        wordApplication = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        return result;
C#实现office文档转换为PDF或xps的一些方法第1张                }
Excel转换方法
C#实现office文档转换为PDF或xps的一些方法第1张privatebool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType)
C#实现office文档转换为PDF或xps的一些方法第1张                {
C#实现office文档转换为PDF或xps的一些方法第1张                        bool result;
C#实现office文档转换为PDF或xps的一些方法第1张                        object missing = Type.Missing;
C#实现office文档转换为PDF或xps的一些方法第1张                        ApplicationClass application = null;
C#实现office文档转换为PDF或xps的一些方法第1张                        Workbook workBook = null;
C#实现office文档转换为PDF或xps的一些方法第1张                        try
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                application = new ApplicationClass();
C#实现office文档转换为PDF或xps的一些方法第1张                                object target = targetPath;
C#实现office文档转换为PDF或xps的一些方法第1张                                object type = targetType;
C#实现office文档转换为PDF或xps的一些方法第1张                                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
C#实现office文档转换为PDF或xps的一些方法第1张                                        missing, missing, missing, missing, missing, missing, missing, missing, missing);
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
C#实现office文档转换为PDF或xps的一些方法第1张                                result = true;
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        catch
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                result = false;
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        finally
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                if (workBook != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        workBook.Close(true, missing, missing);
C#实现office文档转换为PDF或xps的一些方法第1张                                        workBook = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                if (application != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        application.Quit();
C#实现office文档转换为PDF或xps的一些方法第1张                                        application = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        return result;
C#实现office文档转换为PDF或xps的一些方法第1张                }
PowerPoint转换方法
C#实现office文档转换为PDF或xps的一些方法第1张                privatebool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType)
C#实现office文档转换为PDF或xps的一些方法第1张                {
C#实现office文档转换为PDF或xps的一些方法第1张                        bool result;
C#实现office文档转换为PDF或xps的一些方法第1张                        object missing = Type.Missing;
C#实现office文档转换为PDF或xps的一些方法第1张                        ApplicationClass application = null;
C#实现office文档转换为PDF或xps的一些方法第1张                        Presentation persentation = null;
C#实现office文档转换为PDF或xps的一些方法第1张                        try
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                application = new ApplicationClass();
C#实现office文档转换为PDF或xps的一些方法第1张                                persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
C#实现office文档转换为PDF或xps的一些方法第1张                                persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                                result = true;
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        catch
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                result = false;
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        finally
C#实现office文档转换为PDF或xps的一些方法第1张                        {
C#实现office文档转换为PDF或xps的一些方法第1张                                if (persentation != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        persentation.Close();
C#实现office文档转换为PDF或xps的一些方法第1张                                        persentation = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                if (application != null)
C#实现office文档转换为PDF或xps的一些方法第1张                                {
C#实现office文档转换为PDF或xps的一些方法第1张                                        application.Quit();
C#实现office文档转换为PDF或xps的一些方法第1张                                        application = null;
C#实现office文档转换为PDF或xps的一些方法第1张                                }
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.Collect();
C#实现office文档转换为PDF或xps的一些方法第1张                                GC.WaitForPendingFinalizers();
C#实现office文档转换为PDF或xps的一些方法第1张                        }
C#实现office文档转换为PDF或xps的一些方法第1张                        return result;
C#实现office文档转换为PDF或xps的一些方法第1张                }
 
如果是word文档或者Excel文档想要转换xps格式,我们还可以有一种方法,那就是利用xps虚拟打印机实现。
安装了.NetFrameWork3.5之后,默认会在系统中安装XPS虚拟打印机,我们将其设置为默认打印机。
Microsoft XPS Document Writer
word文档打印为xps
C#实现office文档转换为PDF或xps的一些方法第1张                publicvoid PrintWord(string wordfile)
C#实现office文档转换为PDF或xps的一些方法第1张                {
C#实现office文档转换为PDF或xps的一些方法第1张                        oWord.ApplicationClass word = new oWord.ApplicationClass();
C#实现office文档转换为PDF或xps的一些方法第1张                        Type wordType = word.GetType();
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        //打开WORD文档
C#实现office文档转换为PDF或xps的一些方法第1张                        oWord.Documents docs = word.Documents;
C#实现office文档转换为PDF或xps的一些方法第1张                        Type docsType = docs.GetType();
C#实现office文档转换为PDF或xps的一些方法第1张                        object objDocName = wordfile;
C#实现office文档转换为PDF或xps的一些方法第1张                        oWord.Document doc = (oWord.Document)docsType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, docs, new Object[] { objDocName, true, true });
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        //打印输出到指定文件
C#实现office文档转换为PDF或xps的一些方法第1张                        //可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数
C#实现office文档转换为PDF或xps的一些方法第1张                        Type docType = doc.GetType();
C#实现office文档转换为PDF或xps的一些方法第1张                        object printFileName = wordfile + ".xps";
C#实现office文档转换为PDF或xps的一些方法第1张                        docType.InvokeMember("PrintOut", System.Reflection.BindingFlags.InvokeMethod, null, doc, newobject[] { false, false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName });
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        //退出WORD
C#实现office文档转换为PDF或xps的一些方法第1张                        wordType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, word, null);
C#实现office文档转换为PDF或xps的一些方法第1张                }
Excel利用虚拟打印机转换为xps
C#实现office文档转换为PDF或xps的一些方法第1张                publicvoid PrintExcel(string execlfile)
C#实现office文档转换为PDF或xps的一些方法第1张                {
C#实现office文档转换为PDF或xps的一些方法第1张                        Excel.ApplicationClass eapp = new Excel.ApplicationClass();
C#实现office文档转换为PDF或xps的一些方法第1张                        Type eType = eapp.GetType();
C#实现office文档转换为PDF或xps的一些方法第1张                        Excel.Workbooks Ewb = eapp.Workbooks;
C#实现office文档转换为PDF或xps的一些方法第1张                        Type elType = Ewb.GetType();
C#实现office文档转换为PDF或xps的一些方法第1张                        object objelName = execlfile;
C#实现office文档转换为PDF或xps的一些方法第1张                        Excel.Workbook ebook = (Excel.Workbook)elType.InvokeMember("Open", System.Reflection.BindingFlags.InvokeMethod, null, Ewb, new Object[] { objelName, true, true });
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        object printFileName = execlfile + ".xps";
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        Object oMissing = System.Reflection.Missing.Value;
C#实现office文档转换为PDF或xps的一些方法第1张                        ebook.PrintOut(oMissing, oMissing, oMissing, oMissing, oMissing, true, oMissing, printFileName);
C#实现office文档转换为PDF或xps的一些方法第1张
C#实现office文档转换为PDF或xps的一些方法第1张                        eType.InvokeMember("Quit", System.Reflection.BindingFlags.InvokeMethod, null, eapp, null);
C#实现office文档转换为PDF或xps的一些方法第1张                }
,同样,如果系统安装了PDF虚拟打印机,如5D PDF之类的,我们也可以将其设置为默认打印机以达到转换为PDF格式的目的
我们可以将这些方法放在windows service里面,实现文档的后台转换。

本文出自 “Sean Li 技术成就梦想!” 博客,请务必保留此出处http://seanli888.blog.51cto.com/345958/112268

免责声明:文章转载自《C#实现office文档转换为PDF或xps的一些方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇设计模式之禅之设计模式-建造者模式鸢尾花种类预测--数据集下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

POI解析多excel多sheet文件(单文件百万级以下)生成指定文件入Hive

临下班前有个需求,有个同事有一份excel数据需要导入到hive中,到手后发现需要导入的excel文件有5个,且每个excel有60个sheet,每个sheet文件是顶行的,由于文件是xls格式的,单excel文件数据量大概在390万左右,且sheet表有的有标题,有的是空行,且有的sheet要解析有的不要。            直接用poi解析xls格...

批量横向打印Excel

使用VBA脚本写的,具体使用如下:在批量需要打印的Excel文档下面,新建一个文档,将代码粘贴VBA工程里,然后运行即可。 具体代码如下: Attribute VB_Name = "模块1" SubPiLiangPring() Attribute PiLiangPring.VB_ProcData.VB_Invoke_Func = "14" Dim curP...

由DataSet导出生成excel的几种方法

1、当dataset中包含了html等特殊字符用这个处理 public void CreateExcel2(DataSet ds) { //创建一个excel application Excel.Application xls_exp=null; int rowindex=1; int colindex=0; //创建一个workbook,一个works...

第07组(69) 需求分析报告

1.团队基本情况 1.1团队项目整体计划安排 项目分工表 工种 组员 任务 统筹 陈晟新 考察任务进度,负责人员调度,后端研究 美工 李佳乐 UI设计,原型设计,细化用户需求 测试 孙晴晴 测试方案制定,评测测试系统 服务器 吴洁颖 研究服务器方面的需求 网页 陈小楚,何文龙 网页的制作,交互的实现 算法 傅智鑫,王璐 酷转的...

SharePoint 2016 功能比较

SharePoint 2016中有很多功能。我们经常和客户谈论SharePoint安装时,我问他们是否计划安装SharePoint Server 2016 Standard或Enterprise。通常情况下,答案是“有什么区别?”下面我们一起看看功能比较表。它基本上与Microsoft在其网站或Excel电子表格中提供的信息相同,我整理一下易于其他人阅读。...

SQL sever删除全空值的行出现错误提示!

每次导入excel表到数据库到SQL里就会多若干行显示全是'NULL'的行,删除的时候出现如下提示"键列信息不足或不正确。更新影响到多行!" 解决办法:从您的描述中,可以得知您从Excel 中导入数据到SQL Server中。导入后的表不存在主键列,同时出现多行所有列全为Null的情况。在删除这部分行的时候,出现“键列信息不足或不正确。更新影响到多行”。如...