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


相关推荐

  • C语言描述 动态规划 背包问题

    C语言描述 动态规划 背包问题动态规划作为不同于其他类型的问题,有着它自己的解题思路以及模型,以下将围绕模型以及解题思路两方面进行讲解。1.模型:有已知推到未知,是我们常用的解题思路,好比数独中如果我们有了1~8那么剩下的格子必然是9了。动态规划也是这样的思路,眼下我们有一堆货物和一个容量有限的背包,那么如何装才能利益最大化便是我们需要考虑的问题。也就是背包问题。仔细思考,不难发现,每个物品都只有0与1(0表示不装,1表示装入)两个状态,那么一串二进制数就可以表示物品的装配方案(如0101表示只带上第2、4件物品)由此必有2

    2022年7月26日
    5
  • 分析开源项目[通俗易懂]

    分析开源项目[通俗易懂]手把手教你分析开源项目不知道代码怎么来的?代码跑不起来?项目对自己有帮助,不会模块化分析?任何一个开源项目,都可以让自己得到提升!这里以EL-ADMIN为例https://el-admin.vip/1、观察开源项目后端代码:前端代码:2、开源项目下载可使用zip下载,或者Git观察:用了哪些技术(springboot,vue,redis,)是否有数据库(mysql)你的环境是否匹配(Java,Maven,npm,nodejs,)通过了,然后再想办法运行3、跑

    2022年6月11日
    42
  • PDB文件格式「建议收藏」

    PDB文件格式「建议收藏」PDBFiles:WhatEveryDeveloperMustKnowhttp://www.wintellect.com/CS/blogs/jrobbins/archive/2009/05/11/pdb-files-what-every-developer-must-know.aspxPDB文件:每个开发人员都必须知道的一什么是PDB文件大部分的开发人员应该…

    2022年6月2日
    29
  • Log4j.properties配置文件详解「建议收藏」

    Log4j.properties配置文件详解「建议收藏」Log4J的配置文件(ConfigurationFile)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1.配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger=[level],appenderName,appenderName1,…#配置日志信息输出目的地Appender及Appender选项log4j.a

    2022年9月30日
    5
  • js动画效果_js动画函数

    js动画效果_js动画函数一、setTimeoutVS.requestAnimationFrame传统js动画实现一般使用setTimeout/setInterval等定时方式执行一个动画更新操作,但这种方式在使用中存在一些问题。动画帧间隔interval问题大部分显示器的刷新频率是16.7ms,如果setTimeout的interval小于这个值,就会出现绘制的帧无法在显示器上展现的问题,好像被吞掉了一样。另

    2022年10月15日
    4
  • cacti监控一个web上的多个tomcat

    cacti监控一个web上的多个tomcat

    2021年8月31日
    52

发表回复

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

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