zoukankan      html  css  js  c++  java
  • c#实现word,excel转pdf代码及部分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)
            {
                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转换代码:

     private bool Convert(string sourcePath, string targetPath, PpSaveAsFileType targetFileType)
            {
                bool result;
                object missing = Type.Missing;
                ApplicationClass application = null;
                Presentation persentation = null;
                try
                {
                    application = new ApplicationClass();
                    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();
                }
                return result;
            }
  • 相关阅读:
    拓端tecdat|R语言计量经济学与有时间序列模式的机器学习预测
    拓端tecdat|在R语言中建立隐马尔可夫HMM模型
    拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
    拓端tecdat|R语言最大流最小割定理和最短路径算法分析交通网络流量拥堵问题
    拓端tecdat|R语言时间序列:ARIMA / GARCH模型的交易策略在外汇市场预测应用
    拓端tecdat|R语言中的隐马尔可夫HMM模型实例
    拓端tecdat|matlab对国内生产总值(GDP)建立马尔可夫链模型并可视化
    拓端tecdat|R语言基于Garch波动率预测的区制转移交易策略
    拓端tecdat|t-GARCH 模型的贝叶斯推断理论
    LocalDateTime与Date相互转换
  • 原文地址:https://www.cnblogs.com/hfzsjz/p/3161229.html
Copyright © 2011-2022 走看看