这段时间一直在研究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转换方法
privateboolConvert(
stringsourcePath,
stringtargetPath,
Word.WdExportFormat exportFormat)
{
boolresult;
objectparamMissing = Type.Missing;
Word.ApplicationClass wordApplication =
newWord.ApplicationClass();
Word.Document wordDocument =
null;
try{
objectparamSourceDocPath = sourcePath;
stringparamExportFilePath = targetPath;
Word.WdExportFormat paramExportFormat = exportFormat;
boolparamOpenAfterExport =
false;
Word.WdExportOptimizeFor paramExportOptimizeFor =
Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument;
intparamStartPage = 0;
intparamEndPage = 0;
Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent;
boolparamIncludeDocProps =
true;
boolparamKeepIRM =
true;
Word.WdExportCreateBookmarks paramCreateBookmarks =
Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks;
boolparamDocStructureTags =
true;
boolparamBitmapMissingFonts =
true;
boolparamUseISO19005_1 =
false;
wordDocument = wordApplication.Documents.Open(
refparamSourceDocPath,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing,
refparamMissing);
if(wordDocument !=
null)
wordDocument.ExportAsFixedFormat(paramExportFilePath,
paramExportFormat, paramOpenAfterExport,
paramExportOptimizeFor, paramExportRange, paramStartPage,
paramEndPage, paramExportItem, paramIncludeDocProps,
paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
paramBitmapMissingFonts, paramUseISO19005_1,
refparamMissing);
result =
true;
}
finally{
if(wordDocument !=
null)
{
wordDocument.Close(
refparamMissing,
refparamMissing,
refparamMissing);
wordDocument =
null;
}
if(wordApplication !=
null)
{
wordApplication.Quit(
refparamMissing,
refparamMissing,
refparamMissing);
wordApplication =
null;
}
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
}
returnresult;
}
Excel转换方法
privateboolConvert(
stringsourcePath,
stringtargetPath,
XlFixedFormatType targetType)
{
boolresult;
objectmissing = Type.Missing;
ApplicationClass application =
null;
Workbook workBook =
null;
try{
application =
newApplicationClass();
objecttarget = targetPath;
objecttype = 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();
}
returnresult;
}
PowerPoint转换方法
privateboolConvert(
stringsourcePath,
stringtargetPath,
PpSaveAsFileType targetFileType)
{
boolresult;
objectmissing = Type.Missing;
ApplicationClass application =
null;
Presentation persentation =
null;
try{
application =
newApplicationClass();
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();
}
returnresult;
}
如果是word文档或者Excel文档想要转换xps格式,我们还可以有一种方法,那就是利用xps虚拟打印机实现。
安装了.NetFrameWork3.5之后,默认会在系统中安装XPS虚拟打印机,我们将其设置为默认打印机。
Microsoft XPS Document Writer
word文档打印为xps
publicvoidPrintWord(
stringwordfile)
{
oWord.ApplicationClass word =
newoWord.ApplicationClass();
Type wordType = word.GetType();
//打开WORD文档oWord.Documents docs = word.Documents;
Type docsType = docs.GetType();
objectobjDocName = wordfile;
oWord.Document doc = (oWord.Document)docsType.InvokeMember(
"Open", System.Reflection.BindingFlags.InvokeMethod,
null,
docs,
newObject[] { objDocName,
true,
true});
//打印输出到指定文件//可以使用 doc.PrintOut();方法,次方法调用中的参数设置较繁琐,建议使用 Type.InvokeMember 来调用时可以不用将PrintOut的参数设置全,只设置4个主要参数Type docType = doc.GetType();
objectprintFileName = wordfile +
".xps";
docType.InvokeMember(
"PrintOut", System.Reflection.BindingFlags.InvokeMethod,
null, doc,
newobject[]
{
false,
false, oWord.WdPrintOutRange.wdPrintAllDocument, printFileName });
//退出WORDwordType.InvokeMember(
"Quit", System.Reflection.BindingFlags.InvokeMethod,
null, word,
null);
}
Excel利用虚拟打印机转换为xps
publicvoidPrintExcel(
stringexeclfile)
{
Excel.ApplicationClass eapp =
newExcel.ApplicationClass();
Type eType = eapp.GetType();
Excel.Workbooks Ewb = eapp.Workbooks;
Type elType = Ewb.GetType();
objectobjelName = execlfile;
Excel.Workbook ebook = (Excel.Workbook)elType.InvokeMember(
"Open", System.Reflection.BindingFlags.InvokeMethod,
null,
Ewb,
newObject[] { objelName,
true,
true});
objectprintFileName = 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里面,实现文档的后台转换。
本文出自 “Sean Li 技术成就梦想!” 博客,请务必保留此出处http://seanli888.blog.51cto.com/345958/112268
分享到:
相关推荐
总结来说,使用C#将Office文档转换为XPS,可以通过Word Automation(需安装Office)、第三方库或结合PDF转换实现。每种方法都有其优缺点,具体选择应根据项目需求和资源限制来确定。在实际开发中,确保测试在各种...
本文将详细探讨如何使用.NET Remoting服务将Word文档转换为PDF或XPS格式。 首先,让我们了解.NET Remoting。它是.NET框架的一个特性,允许不同应用程序域(AppDomain)之间的对象通信,即使这些对象位于不同的进程...
"Office Convert To Pdf/XPS" 是一款工具,主要...通过"Office Convert PDF/XPS"这样的工具,用户可以方便地将日常工作中使用的Office文档转化为更便于分享和存档的PDF或XPS格式,从而提高协作效率和文件管理的便利性。
总之,无论是通过WPS Office还是Adobe Acrobat,将XPS文件转换为PDF都能帮助你更好地管理和共享文档,确保它们在不同平台上的一致性。同时,了解不同转换工具的特点和注意事项,能帮助你做出更适合自己的选择。
它的主要功能是帮助用户将Word文档、Excel表格、PowerPoint演示文稿等Office格式的文件转换为PDF(Portable Document Format)或XPS(XML Paper Specification)格式。这两种格式在跨平台分享和打印时具有良好的一致...
例如,你可以使用Aspose.Words将Word文档转换为PDF,HTML,EPUB,XPS或其他文本格式。以下是一个简单的C#代码示例,演示如何使用Aspose.Words将Word文档转换为PDF: ```csharp using Aspose.Words; using Aspose....
本项目"批量word转pdf源码"提供了一种方法,利用C#编程语言,结合Microsoft Office Interop库,实现了在Windows环境下批量将Word文档转换为PDF格式。下面我们将详细探讨这个项目的实现原理、关键知识点以及多线程...
通过Office COM组件将Office文档转换为XPS格式后,可以使用WPF中的DocumentViewer控件来展示XPS文档。DocumentViewer控件是WPF提供的用于查看文档的控件,它可以展示多种文档格式,如PDF、XPS等。 5. 在WinForm中...
对文档的操作包括打开,创建,修改,转换,打印,浏览 Word、Excel、PowerPoint® 和 PDF 文档,以及将数据从数据源导出为常用的文档格式,例如:Word,Excel,RTF,Access,PowerPoint,PDF,XPS,HTML,XML,Text...
标题“SaveAsPDFandXPS”以及描述中的关键词暗示了我们正在讨论的是将Word文档转换为PDF或XPS格式的工具和技术。这两种格式在不同场景下各有优势,PDF(Portable Document Format)通常用于确保文件在不同设备上的...
对文档的操作包括打开,创建,修改,转换,打印,浏览 Word、Excel、PowerPoint 和 PDF 文档,以及将数据从数据源导出为常用的文档格式,例如:Word,Excel,RTF,Access,PowerPoint,PDF,XPS,HTML,XML,Text,...
对文档的操作包括打开,创建,修改,转换,打印,浏览 Word、Excel、PowerPoint® 和 PDF 文档,以及将数据从数据源导出为常用的文档格式,例如:Word,Excel,RTF,Access,PowerPoint,PDF,XPS,HTML,XML,Text...
本文将详细解析如何解决在C#环境下使用`ExportAsFixedFormat`方法将Excel(xlsx/xls)文件转换为PDF或XPS时遇到的“值不在预期范围内”异常,并介绍“SaveAsPDFandXPS”的使用方法。 首先,让我们理解问题的根源。`...
在介绍如何使用C#编程语言和Aspose.Words.dll库将Word文档转换为PDF格式之前,让我们先梳理一下使用传统方法转换文档时遇到的一些问题。传统上,许多开发者倾向于使用Office 2007及更高版本中自带的组件来实现Word到...
3. **C#编程环境下Excel转PDF的方法** #### 1. Excel与PDF的基本概念 - **Excel**: Microsoft Office 套件中的电子表格应用程序,广泛用于数据处理、统计分析等领域。 - **PDF (Portable Document Format)**: 一种...
特别值得一提的是,Aspose.Words在文档转换方面表现出色,可以将Word文档转换为PDF、HTML、XPS等多种格式,同时也支持从这些格式导入到Word文档。在描述中提到的"txt转PDF"和"PPT转PDF"功能,很大程度上依赖于Aspose...
它可以将Word文档转换为PDF、HTML、XPS、图像文件等格式,也可以从这些格式导入数据到Word文档中。这对于需要在不同平台或设备上保持一致显示的项目特别有用,例如在Web应用中提供PDF下载或者在移动设备上查看Word...
3. 文档转换:将Word文档转换为其他格式,如PDF、HTML、XPS、EPUB等,以满足不同平台和设备的需求。 4. 文档合并:将多个文档合并为一个,方便管理和分发。 5. 文档比较:检测并突出显示两个文档之间的差异,有助...