详情请看地址:http://www.codeproject.com/Tips/592957/Converting-Document-Word-Excel
using System;
using System.Diagnostics;
using Microsoft.Office.Core;
using Microsoft.Office.Interop.Word;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Visio = Microsoft.Office.Interop.Visio;
using System.Reflection;
using System.Runtime.InteropServices;
using System.IO;namespace DocumentConverter
{public class ConvDoc2PdfWithMsOffice{/// /// Convert MSOffice file to PDF by calling required method/// /// MSOffice file path/// Target PDF path/// MSOffice file type/// error code : 0(sucess)/ -1 or errorcode (unknown error or failure)public short convert(String sourcePath, String targetPath, ContentType sourceType){Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Started ");short convDoc2PdfWithMsOfficeResult = 0;if (sourceType == ContentType.DOC || sourceType == ContentType.DOCX || sourceType == ContentType.TXT || sourceType == ContentType.RTF || sourceType == ContentType.XML){convDoc2PdfWithMsOfficeResult = word2Pdf((Object)sourcePath, (Object)targetPath);}else if (sourceType == ContentType.XLS || sourceType == ContentType.XLSX || sourceType == ContentType.CSV){convDoc2PdfWithMsOfficeResult = excel2Pdf(sourcePath, targetPath);}else if (sourceType == ContentType.PPT || sourceType == ContentType.PPTX){convDoc2PdfWithMsOfficeResult = powerPoint2Pdf((Object)sourcePath, (Object)targetPath);}else if (sourceType == ContentType.VSD || sourceType == ContentType.VDX){convDoc2PdfWithMsOfficeResult = visio2Pdf(sourcePath, targetPath);}else convDoc2PdfWithMsOfficeResult = -1;Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Ended ");return convDoc2PdfWithMsOfficeResult;}/// /// Convert Word file to PDF by calling required method/// /// file path/// Target PDF path/// error code : 0(sucess)/ -1 or errorcode (unknown error or failure)public short word2Pdf(object originalDocPath, object pdfPath){Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Started ");short convertWord2PdfResult = -1;Microsoft.Office.Interop.Word.Application msWordDoc = null;Microsoft.Office.Interop.Word.Document doc = null;// C# doesn't have optional arguments so we'll need a dummy value object oMissing = System.Reflection.Missing.Value;try{//start MS word applicationmsWordDoc = new Microsoft.Office.Interop.Word.Application{Visible = false,ScreenUpdating = false};//Open Documentdoc = msWordDoc.Documents.Open(ref originalDocPath, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing);if (doc != null){doc.Activate();// save Document as PDFobject fileFormat = WdSaveFormat.wdFormatPDF;doc.SaveAs(ref pdfPath,ref fileFormat, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing,ref oMissing, ref oMissing, ref oMissing, ref oMissing);convertWord2PdfResult = 0;}else{Console.WriteLine("Error occured for conversion of office Word to PDF");convertWord2PdfResult = 504;}}catch (Exception exWord2Pdf){Console.WriteLine("Error occured for conversion of office Word to PDF, Exception: ", exWord2Pdf);convertWord2PdfResult = 504;}finally{// Close and release the Document object.if (doc != null){object saveChanges = WdSaveOptions.wdDoNotSaveChanges;doc.Close(ref saveChanges, ref oMissing, ref oMissing);Util.releaseObject(doc);}// Quit Word and release the ApplicationClass object.((_Application)msWordDoc).Quit(ref oMissing, ref oMissing, ref oMissing);Util.releaseObject(msWordDoc);msWordDoc = null;}Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Ended ");return convertWord2PdfResult;}/// /// Convert excel file to PDF by calling required method/// /// file path/// Target PDF path/// error code : 0(sucess)/ -1 or errorcode (unknown error or failure)public short excel2Pdf(string originalXlsPath, string pdfPath){Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Started ");short convertExcel2PdfResult = -1;// Create COM ObjectsMicrosoft.Office.Interop.Excel.Application excelApplication = null;Microsoft.Office.Interop.Excel.Workbook excelWorkbook = null;object unknownType = Type.Missing;// Create new instance of Exceltry{//open excel applicationexcelApplication = new Microsoft.Office.Interop.Excel.Application{ScreenUpdating = false,DisplayAlerts = false};//open excel sheetif (excelApplication != null)excelWorkbook = excelApplication.Workbooks.Open(originalXlsPath, unknownType, unknownType,unknownType, unknownType, unknownType,unknownType, unknownType, unknownType,unknownType, unknownType, unknownType,unknownType, unknownType, unknownType);if (excelWorkbook != null){// Call Excel's native export function (valid in Office 2007 and Office 2010, AFAIK)
excelWorkbook.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF,pdfPath,unknownType, unknownType, unknownType, unknownType, unknownType,unknownType, unknownType);convertExcel2PdfResult = 0;}else{Console.WriteLine("Error occured for conversion of office excel to PDF ");convertExcel2PdfResult = 504;}}catch (Exception exExcel2Pdf){Console.WriteLine("Error occured for conversion of office excel to PDF, Exception: ", exExcel2Pdf);convertExcel2PdfResult = 504;}finally{// Close the workbook, quit the Excel, and clean up regardless of the results...if (excelWorkbook != null)excelWorkbook.Close(unknownType, unknownType, unknownType);if (excelApplication != null) excelApplication.Quit();Util.releaseObject(excelWorkbook);Util.releaseObject(excelApplication);}Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Ended ");return convertExcel2PdfResult;}/// /// Convert powerPoint file to PDF by calling required method/// /// file path/// Target PDF path/// error code : 0(sucess)/ -1 or errorcode (unknown error or failure)public short powerPoint2Pdf(object originalPptPath, object pdfPath){Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Started ");short convertPowerPoint2PdfResult = -1;PowerPoint.Application pptApplication = null;PowerPoint.Presentation pptPresentation = null;object unknownType = Type.Missing;try{//start power point pptApplication = new PowerPoint.Application();//open powerpoint documentpptPresentation = pptApplication.Presentations.Open((string)originalPptPath,Microsoft.Office.Core.MsoTriState.msoTrue,Microsoft.Office.Core.MsoTriState.msoTrue,Microsoft.Office.Core.MsoTriState.msoFalse);//export PDF from PPTif (pptPresentation != null){pptPresentation.ExportAsFixedFormat((string)pdfPath,PowerPoint.PpFixedFormatType.ppFixedFormatTypePDF,PowerPoint.PpFixedFormatIntent.ppFixedFormatIntentPrint,MsoTriState.msoFalse,PowerPoint.PpPrintHandoutOrder.ppPrintHandoutVerticalFirst,PowerPoint.PpPrintOutputType.ppPrintOutputSlides,MsoTriState.msoFalse, null,PowerPoint.PpPrintRangeType.ppPrintAll, string.Empty,true, true, true, true, false, unknownType);convertPowerPoint2PdfResult = 0;}else{Console.WriteLine("Error occured for conversion of office PowerPoint to PDF");convertPowerPoint2PdfResult = 504;}}catch (Exception exPowerPoint2Pdf){Console.WriteLine("Error occured for conversion of office PowerPoint to PDF, Exception: ", exPowerPoint2Pdf);convertPowerPoint2PdfResult = 504;}finally{// Close and release the Document object.if (pptPresentation != null){pptPresentation.Close();Util.releaseObject(pptPresentation);pptPresentation = null;}// Quit Word and release the ApplicationClass object.
pptApplication.Quit();Util.releaseObject(pptApplication);pptApplication = null;}Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Ended ");return convertPowerPoint2PdfResult;}/// /// Convert visio file to PDF by calling required method/// /// file path/// Target PDF path/// error code : 0(sucess)/ -1 or errorcode (unknown error or failure)public short visio2Pdf(string originalVsdPath, string pdfPath){Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Started ");short convertVisio2PdfResult = -1;Microsoft.Office.Interop.Visio.ApplicationClass msVisioDoc = null;Visio.Document vsdDoc = null;try{//start applicationmsVisioDoc = new Visio.ApplicationClass { Visible = false };//open visio documentvsdDoc = msVisioDoc.Documents.Open(originalVsdPath);if (vsdDoc != null){//convert visio to PDF
vsdDoc.ExportAsFixedFormat(Visio.VisFixedFormatTypes.visFixedFormatPDF, pdfPath,Visio.VisDocExIntent.visDocExIntentScreen,Visio.VisPrintOutRange.visPrintAll,1, vsdDoc.Pages.Count, false, true, true, true, true,System.Reflection.Missing.Value);convertVisio2PdfResult = 0;}}catch (Exception exVisio2Pdf){Console.WriteLine("Error occured for conversion of office Visio to PDF, Exception: ", exVisio2Pdf);convertVisio2PdfResult = 504;}finally{// Close and release the Document object.if (vsdDoc != null){vsdDoc.Close();Util.releaseObject(vsdDoc);}// Quit Word and release the ApplicationClass object.
msVisioDoc.Quit();Util.releaseObject(msVisioDoc);}Console.WriteLine("Class: " + GetType() + " Method: " + MethodBase.GetCurrentMethod().Name + " Ended ");return convertVisio2PdfResult;}}
}
源码下载:http://pan.baidu.com/share/link?shareid=2259872815&uk=3289148388