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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 开启生产效率新时代

    开启生产效率新时代

    2021年5月25日
    113
  • golang 2022.01.13激活码【2022.01最新】2022.03.06

    (golang 2022.01.13激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年4月2日
    232
  • 手机最强 Python 编程神器,在手机上运行 Python 不再是梦[通俗易懂]

    手机最强 Python 编程神器,在手机上运行 Python 不再是梦[通俗易懂]手机编程软件有很多,大部分都很难使用,操作不灵活,甚至不能安装第三方库。尝试安装了很多Python移动编程软件,发现了很多问题,不是编码效率低就是各种bug。今天,来自一位python编程小哥指导,向大家推荐两款精心挑选的手机编程软件,它们也是非常成熟的手机编程工具。QPythonOHQpython是一个轻量级的、成熟的python编程工具。它配有终端和简单的代码编辑器。它支持安装第三方库。目前,它支持Python3.6.6,这还不算太老。代码编辑区域代码比其他手机编程软件更灵活,底

    2022年8月12日
    6
  • 我的世界怎么设置传送点指令_我的世界手机版领地指令

    我的世界怎么设置传送点指令_我的世界手机版领地指令今天小编为玩家们带来了我的世界服务器领地指令_我的世界地皮指令大全,希望对玩家们有所帮助,还不了解的玩家快来看看吧。圈地指令用木棍(各个服务器不一样,绝大部分默认是木锄)左击一个点,右击一个点(两点内为你想圈的长宽高,对角,一个高点,一个低点。)然后输查询大小,在输入创建领地。查询区域大小/resselectsize创建领地/rescreate名字移除领地/resremove名字领地转赠/resg…

    2025年11月27日
    4
  • JAX-WS手动配置实例

    JAX-WS手动配置实例随着近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术。Java的Webservice技术更是层出不穷,比较流行的有:  Axis2,SpringWS以及Jaxws。   本人在日常工作和以往工程中,在使用了上述这些Webservice后进行了总结,比较,最终觉得jaxws是目前最标准,需要额外第三方插件

    2022年7月15日
    15
  • 列式数据库概述_列式数据库多张表

    列式数据库概述_列式数据库多张表阐述列式数据库的基本定义,现状,以及一些开源数据库的性能比较。

    2025年5月23日
    5

发表回复

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

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