希望在明天

如果,你没有耐心等待成功的到来,那么,你将用一生的耐心去面对失败。

部分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, 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.
Tag标签: office,2007,xps,pdf

posted on 2008-04-24 22:30 蒜头 阅读(2758) 评论(7)  编辑 收藏 网摘 所属分类: Office

评论

#1楼 2008-04-25 00:21 镜涛      

恩,学习一下。要是有注释就更好了!   回复  引用  查看    

#2楼 2008-04-25 08:28 李战      

http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />   回复  引用  查看    

#3楼 2008-04-25 08:42 生鱼片      

学习   回复  引用  查看    

#4楼 2008-04-25 08:53 留恋星空      

学习   回复  引用  查看    

#5楼 2008-04-25 09:39 谁在说谎      

very good   回复  引用  查看    

#6楼 2008-04-25 09:51 Windie Chai(笑煞天)      

留个纪念.   回复  引用  查看    

#7楼 2008-04-25 19:51 airwolf2026      

FAV下.不错   回复  引用  查看    




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1168173




相关文章:

相关链接:
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

与我联系

搜索

 

常用链接

留言簿

我的标签

随笔分类

随笔档案

谢谢你的访问,请多指教!

积分与排名

最新评论

阅读排行榜

评论排行榜