Office系列在线预览

Office系列在线预览

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

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

Office系列在线预览

[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,所以我们继续寻找解决方案······

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110575.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 电信光纤友华PT921G,烽火HG220光猫激活成功教程关闭自带路由改桥接拨号教程[通俗易懂]

    电信光纤友华PT921G,烽火HG220光猫激活成功教程关闭自带路由改桥接拨号教程[通俗易懂]电信光纤友华PT921G光猫激活成功教程关闭自带路由改桥接拨号教程电信光猫质量烂就算了,最受不了它自带的路由还做了手脚,导致VPN用不了。不让看AV就算了,打个外服游戏总可以吧?不知道为啥,网上关于光猫改桥接的教程基本没有,搜出来的也说得很不清楚,是和谐了还是什么原因不得而知。本人也是自己自己试出来的,其实修改难度并不大,只不过那个界面搞的特奇葩特不友好罢了。废话不多说,步骤如下:

    2022年6月24日
    97
  • 面试之SpringMVC

    面试之SpringMVC面试之SpringMVC

    2022年4月23日
    42
  • webstorm2021.4激活码_通用破解码

    webstorm2021.4激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    131
  • 如何设置eclipse代码自动补全「建议收藏」

    如何设置eclipse代码自动补全「建议收藏」打开Eclipse->Window->Perferences找到Java下的 Editor下的 ContentAssist, 右边出现的选项中,有一个AutoactivationtriggersforJava:可以看到在默认情况下只有一个".“存在。表示:只有输入”."之后才会有代码提示在AutoactivationtriggersforJ…

    2022年5月6日
    44
  • Java String 如何加双引号

    Java String 如何加双引号Java String 如何加双引号

    2022年4月23日
    50
  • aop 实现原理_简述aop的原理

    aop 实现原理_简述aop的原理概述:最近在开发中遇到了一个刚好可以用AOP实现的例子,就顺便研究了AOP的实现原理,把学习到的东西进行一个总结。文章中用到的编程语言为kotlin,需要的可以在IDEA中直接转为java。这篇文章将会按照如下目录展开:AOP简介 代码中实现举例 AOP实现原理 部分源码解析1.AOP简介相信大家或多或少的了解过AOP,都知道它是面向切面编程,在网上搜索可以找到很多的解释。…

    2022年9月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号