我是靠谱客的博主 冷静猫咪,最近开发中收集的这篇文章主要介绍部分Office 2007文件格式转换为xps和pdf代码整理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转自:http://www.cnblogs.com/epjnpe/archive/2008/04/24/1168173.html

 

转换功能是通过调用安装了转换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, truefalse, 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;
        }

感谢同事Hong的协助,把这部分功能实现,现在share给大家,希望为需要的朋友节省时间.
另外浏览xps文件有一个不错的小工具XPS Viewer EP.

最后

以上就是冷静猫咪为你收集整理的部分Office 2007文件格式转换为xps和pdf代码整理的全部内容,希望文章能够帮你解决部分Office 2007文件格式转换为xps和pdf代码整理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部