天天看點

常用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

添加對三個元件的引用:

常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理

這裡使用一個枚舉類型來來決定生成檔案的類型,包括:

常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理

其實可以使用個方法來實作這個功能,這裡Word和Excel我使用了ExportAsFixedFormat,PowerPoint使用了SaveAs,對于Word和PowerPoint效果是一樣的。隻是SaveAs支援的格式更多, 但我發現似乎Excel不支援SaveAs.

常用Office 2007檔案格式轉換為xps和pdf代碼整理

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轉換代碼:
           
常用Office 2007檔案格式轉換為xps和pdf代碼整理
private   bool  Convert( string  sourcePath,  string  targetPath, XlFixedFormatType targetType)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            bool result;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            object missing = Type.Missing;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            ApplicationClass application = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            Workbook workBook = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            try
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                application = new ApplicationClass();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                object target = targetPath;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                object type = targetType;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                workBook = application.Workbooks.Open(sourcePath, missing, missing, missing, missing, missing,
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    missing, missing, missing, missing, missing, missing, missing, missing, missing);
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                workBook.ExportAsFixedFormat(targetType, target, XlFixedFormatQuality.xlQualityStandard, true, false, missing, missing, missing, missing);
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                result = true;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            catch
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                result = false;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            finally
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                if (workBook != null)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    workBook.Close(true, missing, missing);
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    workBook = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                if (application != null)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    application.Quit();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    application = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.Collect();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.WaitForPendingFinalizers();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.Collect();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.WaitForPendingFinalizers();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            return result;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
        } PowerPoint轉換代碼:
常用Office 2007檔案格式轉換為xps和pdf代碼整理
        private   bool  Convert( string  sourcePath,  string  targetPath, PpSaveAsFileType targetFileType)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            bool result;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            object missing = Type.Missing;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            ApplicationClass application = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            Presentation persentation = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            try
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                application = new ApplicationClass();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                persentation = application.Presentations.Open(sourcePath, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                persentation.SaveAs(targetPath, targetFileType, Microsoft.Office.Core.MsoTriState.msoTrue);
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                result = true;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            catch
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                result = false;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            finally
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                if (persentation != null)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    persentation.Close();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    persentation = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                if (application != null)
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
常用Office 2007檔案格式轉換為xps和pdf代碼整理
{
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    application.Quit();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                    application = null;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.Collect();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.WaitForPendingFinalizers();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.Collect();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
                GC.WaitForPendingFinalizers();
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            }
常用Office 2007檔案格式轉換為xps和pdf代碼整理
            return result;
常用Office 2007檔案格式轉換為xps和pdf代碼整理
        }

感謝同僚Hong的協助,把這部分功能實作,現在share給大家,希望為需要的朋友節省時間.

另外浏覽xps檔案有一個不錯的小工具XPS Viewer EP.

繼續閱讀