前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Office系列在线预览

Office系列在线预览

作者头像
全栈程序员站长
发布2021-08-13 09:58:55
1.1K0
发布2021-08-13 09:58:55
举报
文章被收录于专栏:全栈程序员必看

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

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

Office系列在线预览
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.cn/110575.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档