zoukankan      html  css  js  c++  java
  • 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, truetrue });
    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,所以我们继续寻找解决方案······

  • 相关阅读:
    《网络》:关于计算机网络的必备常识【无序】(不定时更新)
    《网络》:设置三个密码:通过console口连接设备,进入特权模式,登录Telnet
    《网络》:交换机基本配置命令
    启动eclipse时出现“Failed to load the JNI shared library jvm.dll”错误及解决
    java之servlet小记
    Nokia大事录
    Android之HandlerThread
    Android进程间的通信之AIDL
    Android进程间的通信之Messenger
    Loaders
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2134000.html
Copyright © 2011-2022 走看看