博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Office系列在线预览
阅读量:6671 次
发布时间:2019-06-25

本文共 3180 字,大约阅读时间需要 10 分钟。

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

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

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

出处:

转载地址:http://cnoxo.baihongyu.com/

你可能感兴趣的文章
NLP自然语言处理相关技术说明及样例(附源码)
查看>>
逻辑符的运算优先级
查看>>
Vuet.js规则详解,它是你不知道的强大功能?
查看>>
安卓UI - 收藏集 - 掘金
查看>>
我为什么要升级到Ionic3
查看>>
Elixir: 函数装饰器
查看>>
Java并发编程之volatile关键字解析
查看>>
309. Best Time to Buy and Sell Stock with Cooldown
查看>>
vue2练习五个小例子笔记_byKL
查看>>
跨进程通信,到底用长连接还是短连接
查看>>
一地鸡毛 OR 绝地反击,2019年区块链发展指南
查看>>
举重若轻的人人车移动端数据平台
查看>>
专访《Haskell函数式编程入门》作者张淞:浅谈Haskell的优点与启发
查看>>
Git 2.7: 一个新的带来许多新特性和性能提升的主要版本
查看>>
jDays 2016综合报道
查看>>
大规模学习该如何权衡得失?解读NeurIPS 2018时间检验奖获奖论文
查看>>
解读2015之Spark篇:新生态系统的形成
查看>>
Node和JS基金会宣布合并为 OpenJS 基金会
查看>>
编转码、CDN和AI是如何撑起短视频数百亿市场规模的
查看>>
取代Python多进程!伯克利开源分布式框架Ray
查看>>