好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Office系列在线预览

Office系列在线预览

最近客户有个需求,需要在线预览PPT、Excel、Word,开始打算用第三方组建去读取 office系列,然后生成html,这样的话样式相当于丢了,只剩下数据,而且第三方组件对office版本支持不够完善,最关键的是还是样式丢了!

最后决定,用户在上传的过程中调用office API里面的saveAs,自动生成了静态html,预览的时候就直接访问的该html页面。

[a].WordToHtml

 1     public   static   string  WordToHtml( string  path,  string  savePath,  string  wordFileName)
 2           {
 3  
 4                // 在此处放置用户代码以初始化页面
 5               Microsoft.Office.Interop.Word.Application word  =   new  Word.Application();
 6  
 7               Type wordType  =  word.GetType();
 8  
 9               Word.Documents docs  =  word.Documents;
10  
11                // 打开文件
12               Type docsType  =  docs.GetType();
13               Word.Document doc  =  (Word.Document)docsType.InvokeMember( " Open " , System.Reflection.BindingFlags.InvokeMethod,  null , docs,  new  Object[] { path,  true ,  true  });
14  
15                // 转换格式,另存为
16               Type docType  =  doc.GetType();
17  
18                string  wordSaveFileName  =  savePath;
19  
20                string  strSaveFileName  =  savePath + wordFileName  +   " .html " ;
21  
22                object  saveFileName  =  ( object )strSaveFileName;
23  
24               docType.InvokeMember( " SaveAs " , System.Reflection.BindingFlags.InvokeMethod,  null , doc,  new   object [] { saveFileName, Word.WdSaveFormat.wdFormatFilteredHTML });
25  
26               docType.InvokeMember( " Close " , System.Reflection.BindingFlags.InvokeMethod,  null , doc,  null );
27  
28                // 退出 Word
29               wordType.InvokeMember( " Quit " , System.Reflection.BindingFlags.InvokeMethod,  null , word,  null );
30  
31                return  saveFileName.ToString();
32           }

[b].ExcelToHtml

 1     public   static   void  ExcelToHtml( string  path, string  savePath,  string  wordFileName)
 2           {
 3                string  str  =   string .Empty;
 4               Microsoft.Office.Interop.Excel.Application repExcel  =   new  Microsoft.Office.Interop.Excel.Application();
 5               Microsoft.Office.Interop.Excel.Workbook workbook  =   null ;
 6               Microsoft.Office.Interop.Excel.Worksheet worksheet  =   null ;
 7               workbook  =  repExcel.Application.Workbooks.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 8               worksheet  =  (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[ 1 ];
 9                object  htmlFile  = savePath + wordFileName +   " .html " ;
10                object  ofmt  =  Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml;
11               workbook.SaveAs(htmlFile, ofmt, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
12                object  osave  =   false ;
13               workbook.Close(osave, Type.Missing, Type.Missing);
14               repExcel.Quit();
15              
16           }

[c].PPTToHtml

  public   static    void  PPTToHtml( string  path,  string  savePath,  string  wordFileName)
        {
            Microsoft.Office.Interop.PowerPoint.Application ppApp  =   new  Microsoft.Office.Interop.PowerPoint.Application();
             string  strSourceFile  =  path;
             string  strDestinationFile  =  savePath + wordFileName + " .html " ;
            Microsoft.Office.Interop.PowerPoint.Presentation prsPres  =  ppApp.Presentations.Open(strSourceFile, MsoTriState.msoTrue, MsoTriState.msoFalse, MsoTriState.msoFalse);
            prsPres.SaveAs(strDestinationFile, Microsoft.Office.Interop.PowerPoint.PpSaveAsFileType.ppSaveAsHTML, MsoTriState.msoTrue);
            prsPres.Close();
            ppApp.Quit();

        }

当完成该功能的时候,上帝那边传来噩耗,他们表示不愿意在服务器上安装office,所以我们继续寻找解决方案······

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Office系列在线预览的详细内容...

  阅读:32次