天天看点

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

继续阅读