最近客户有个需求,需要在线预览PPT、Excel、Word,开始打算用第三方组建去读取 office系列,然后生成html,这样的话样式相当于丢了,只剩下数据,而且第三方组件对office版本支持不够完善,最关键的是还是样式丢了!
最后决定,用户在上传的过程中调用office API里面的saveAs,自动生成了静态html,预览的时候就直接访问的该html页面。
[a].WordToHtml
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
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,所以我们继续寻找解决方案······
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110575.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...