部分Office 2007文件格式转换为xps和pdf代码整理
转换功能是通过调用安装了转换XPS和PDF的AddIn的Office2007对象模型完成的. 代码支持Office 2007支持的一切文件格式:
 
| Office 2007组件 | 扩展名 | 
| Word | DOC, DOCX, DOCM, DOTX, DOTM, DOT, TXT, RTP, RTF | 
| Excel | XLS, XLSX, XLSM, XML | 
| PowerPoint | PPT, PPTX, PPTM, POTX, PPSX, PPSM, POTM | 
添加对三个组件的引用:



这里使用一个枚举类型来来决定生成文件的类型,包括:



其实可以使用个方法来实现这个功能,这里Word和Excel我使用了ExportAsFixedFormat,PowerPoint使用了SaveAs,对于Word和PowerPoint效果是一样的。只是SaveAs支持的格式更多, 但我发现似乎Excel不支持SaveAs.

Word转换代码:
 private bool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat)
        private bool Convert(string sourcePath, string targetPath, Word.WdExportFormat exportFormat) {
        { bool result;
            bool result; object paramMissing = Type.Missing;
            object paramMissing = Type.Missing; Word.ApplicationClass wordApplication = new Word.ApplicationClass();
            Word.ApplicationClass wordApplication = new Word.ApplicationClass(); Word.Document wordDocument = null;
            Word.Document wordDocument = null; try
            try {
            { object paramSourceDocPath = sourcePath;
                object paramSourceDocPath = sourcePath; string paramExportFilePath = targetPath;
                string paramExportFilePath = targetPath;
 Word.WdExportFormat paramExportFormat = exportFormat;
                Word.WdExportFormat paramExportFormat = exportFormat; bool paramOpenAfterExport = false;
                bool paramOpenAfterExport = false; Word.WdExportOptimizeFor paramExportOptimizeFor =
                Word.WdExportOptimizeFor paramExportOptimizeFor = Word.WdExportOptimizeFor.wdExportOptimizeForPrint;
                    Word.WdExportOptimizeFor.wdExportOptimizeForPrint; Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument;
                Word.WdExportRange paramExportRange = Word.WdExportRange.wdExportAllDocument; int paramStartPage = 0;
                int paramStartPage = 0; int paramEndPage = 0;
                int paramEndPage = 0; Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent;
                Word.WdExportItem paramExportItem = Word.WdExportItem.wdExportDocumentContent; bool paramIncludeDocProps = true;
                bool paramIncludeDocProps = true; bool paramKeepIRM = true;
                bool paramKeepIRM = true; Word.WdExportCreateBookmarks paramCreateBookmarks =
                Word.WdExportCreateBookmarks paramCreateBookmarks = Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks;
                    Word.WdExportCreateBookmarks.wdExportCreateWordBookmarks; bool paramDocStructureTags = true;
                bool paramDocStructureTags = true; bool paramBitmapMissingFonts = true;
                bool paramBitmapMissingFonts = true; bool paramUseISO19005_1 = false;
                bool paramUseISO19005_1 = false;
 wordDocument = wordApplication.Documents.Open(
                wordDocument = wordApplication.Documents.Open( ref paramSourceDocPath, ref paramMissing, ref paramMissing,
                    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, 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)
                if (wordDocument != null) wordDocument.ExportAsFixedFormat(paramExportFilePath,
                    wordDocument.ExportAsFixedFormat(paramExportFilePath, paramExportFormat, paramOpenAfterExport,
                        paramExportFormat, paramOpenAfterExport, paramExportOptimizeFor, paramExportRange, paramStartPage,
                        paramExportOptimizeFor, paramExportRange, paramStartPage, paramEndPage, paramExportItem, paramIncludeDocProps,
                        paramEndPage, paramExportItem, paramIncludeDocProps, paramKeepIRM, paramCreateBookmarks, paramDocStructureTags,
                        paramKeepIRM, paramCreateBookmarks, paramDocStructureTags, paramBitmapMissingFonts, paramUseISO19005_1,
                        paramBitmapMissingFonts, paramUseISO19005_1, ref paramMissing);
                        ref paramMissing); result = true;
                result = true; }
            } finally
            finally {
            { if (wordDocument != null)
                if (wordDocument != null) {
                { wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing);
                    wordDocument.Close(ref paramMissing, ref paramMissing, ref paramMissing); wordDocument = null;
                    wordDocument = null; }
                } if (wordApplication != null)
                if (wordApplication != null) {
                { wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing);
                    wordApplication.Quit(ref paramMissing, ref paramMissing, ref paramMissing); wordApplication = null;
                    wordApplication = null; }
                } GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); }
            } return result;
            return result; }
        }Excel转换代码:
 private bool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType)
private bool Convert(string sourcePath, string targetPath, XlFixedFormatType targetType) {
        { bool result;
            bool result; object missing = Type.Missing;
            object missing = Type.Missing; ApplicationClass application = null;
            ApplicationClass application = null; Workbook workBook = null;
            Workbook workBook = null; try
            try {
            { application = new ApplicationClass();
                application = new ApplicationClass(); object target = targetPath;
                object target = targetPath; object type = targetType;
                object type = targetType; workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing, missing, missing, missing, missing, 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);
                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing); result = true;
                result = true; }
            } catch
            catch {
            { result = false;
                result = false; }
            } finally
            finally {
            { if (workBook != null)
                if (workBook != null) {
                { workBook.Close(true, missing, missing);
                    workBook.Close(true, missing, missing); workBook = null;
                    workBook = null; }
                } if (application != null)
                if (application != null) {
                { application.Quit();
                    application.Quit(); application = null;
                    application = null; }
                } GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); }
            } return result;
            return result; }
        }PowerPoint转换代码:
 private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType)
       private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType) {
        { bool result;
            bool result; object missing = Type.Missing;
            object missing = Type.Missing; ApplicationClass application = null;
            ApplicationClass application = null; Presentation persentation = null;
            Presentation persentation = null; try
            try {
            { application = new ApplicationClass();
                application = new ApplicationClass(); persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
                persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse); persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
                persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
 result = true;
                result = true; }
            } catch
            catch {
            { result = false;
                result = false; }
            } finally
            finally {
            { if (persentation != null)
                if (persentation != null) {
                { persentation.Close();
                    persentation.Close(); persentation = null;
                    persentation = null; }
                } if (application != null)
                if (application != null) {
                { application.Quit();
                    application.Quit(); application = null;
                    application = null; }
                } GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); GC.Collect();
                GC.Collect(); GC.WaitForPendingFinalizers();
                GC.WaitForPendingFinalizers(); }
            } return result;
            return result; }
        }感谢同事Hong的协助,把这部分功能实现,现在share给大家,希望为需要的朋友节省时间.
另外浏览xps文件有一个不错的小工具XPS Viewer EP.
 
                    
                 
        
 
             
                
            
         
 浙公网安备 33010602011771号
浙公网安备 33010602011771号