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年8月12日 下午10:00
下一篇 2021年8月13日 上午8:00


相关推荐

  • fulltext mysql_MySQL 全文检索方案 – FULLTEXT 索引

    fulltext mysql_MySQL 全文检索方案 – FULLTEXT 索引尽量不要使用 Like 由于 MySQLLIKE text 是无法使用索引的 Like 能用上索引的唯一可能 LIKE text 所以实际使用中 LIKE 毫无实用价值 mysql5 7 6 之后支持了中日韩文的全文检索查看了本机的 mysql 版本 mysqldversio 7 18 0ubuntu0 16 10 1forLinuxonx

    2026年3月16日
    1
  • 微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比

    微服务:注册中心ZooKeeper、Eureka、Consul 、Nacos对比前言服务注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的。更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。CAP理论…

    2022年6月4日
    34
  • pycharm改字体的大小_pycharm设置字体颜色

    pycharm改字体的大小_pycharm设置字体颜色①代码块的字体大小设置点击左上角file然后选择settings下一步双击打开点击Font②run窗口的字体大小与颜色设置run窗口颜色设置

    2022年8月25日
    10
  • 深圳外包公司名单

    深圳外包公司名单深圳外包公司名单

    2022年5月31日
    104
  • typescript 函数_MID函数

    typescript 函数_MID函数函数函数是JavaScript应用程序的基础,它帮助你实现抽象层,模拟类,信息隐藏和模块。在TypeScript里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。Type

    2022年8月7日
    7
  • mysql 基础教程 很全

    mysql 基础教程 很全一 数据库操作 1 创建数据库 createdataba 数据库名 createdataba 2 选择数据库 use 数据库名 userunoob 3 删除数据库 dropdatabase 数据库名 dropdatabase 二 数值类型 三 数据表 1 创建数据表 CREATETABL

    2026年3月20日
    2

发表回复

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

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