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


相关推荐

  • DTU连接自建MQTT服务器

    DTU连接自建MQTT服务器DTU连接自建MQTT服务器DTU串口助手连接电脑,图片中485端口被变送器占用,飞线用来测试配置参数如图:重启DTU网络连接正常。启动java服务端启动连接成功发送透传测试数据查看串口助手:收到透传数据DTU发送透传数据查看Java服务端收到透传数据…

    2022年5月28日
    65
  • ubuntu 打包软件依赖包_ubuntu包管理工具

    ubuntu 打包软件依赖包_ubuntu包管理工具#!/bin/shexe=“程序名称”des=”./”#相对路径deplist=$(ldd$exe|awk‘{if(match($3,”/”)){printf(“%s”),$3}}’)cp$deplist$deschmod+x打包.sh

    2025年7月12日
    3
  • 什么叫小字辈_小字辈老电影观后感

    什么叫小字辈_小字辈老电影观后感原题链接本题给定一个庞大家族的家谱,要请你给出最小一辈的名单。输入格式:输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号。随后第二行给出 N 个编号,其中第 i 个编号对应第 i 位成员的父/母。家谱中辈分最高的老祖宗对应的父/母编号为 -1。一行中的数字间以空格分隔。输出格式:首先输出最小的辈分(老祖宗的辈分为 1,以下逐级递增)。然后在第二行按递增顺序输出辈分最小的成员的编号。编号间以一个空格分隔,行首尾不得有多余空格。

    2022年8月8日
    6
  • JAVA中运算符的详讲

    JAVA中运算符的详讲

    2021年9月29日
    33
  • 基于qt的简单小游戏_中国象棋单机版2,0

    基于qt的简单小游戏_中国象棋单机版2,0最近对Qt这个跨平台C++图形应用程序框架很感兴趣,闲暇时间多学了一下,收获很多,也踩了不少坑,在这里记录一下,分享心得。Qt的安装安装Qt并不麻烦,就是网速有点慢。推荐使用国内镜像代理下载。首先进入Qt官网,在TryQt处点击DownloadQt,填完基本信息后,点击提交就可以下载Qt下载器了。当然,你也可以直接去国内镜像站上下载Qt下载器。打开Qt下载器,注册Qt账户,并登录,同意协议。若要使用国内镜像代理,点击左下角的配置图标。然后从百度上选择

    2022年8月29日
    2
  • switch 中 break 和 continue 的区别[通俗易懂]

    switch 中 break 和 continue 的区别[通俗易懂]1、break用来退出switch,continue本身是不能用在switch里的,他必须结合循环来用,表示跳过本次循环2、switch的case语句最后如果没有加break/continue,则程序会一直往后执行,可以借鉴goto跳转到位置,其实switch本身可以看作某种形式的跳转,而C语言中本身是不执行:的那条语句的,例如,如果程序中出现一条语句wtch…

    2022年6月2日
    91

发表回复

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

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