您现在的位置是:网站首页> 编程资料编程资料
Asp.Net在线预览Word文档的解决方案与思路详解_实用技巧_
2023-05-24
413人已围观
简介 Asp.Net在线预览Word文档的解决方案与思路详解_实用技巧_
前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈。
这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档。
首先想到的是用第三方的服务,例如WPS的开放平台。

刚看完文档,客户来了句,要一次性的哦,后续再付费的通通不要。

得嘞,换其他方案吧。
项目特点
Asp.Net不带Core,.NET Framework 4.0,部署在Windows平台上。
解决方案
大致思路:先将Word文档转换Html,再预览Html。
1、Word文档转Html
先引用Office的DLL,在COM里面,注意:电脑需要安装Office哦。


又注意:请在DLL属性里面将嵌入互操作类型改为False

转换过程一个方法搞定:
using Microsoft.Office.Interop.Word; public static string WordToHtml(string path) { string root = AppDomain.CurrentDomain.BaseDirectory; var htmlName = $"{Guid.NewGuid().ToString("N")}.html"; var htmlPath = root + $"Resource/Temporary/"; if (!Directory.Exists(htmlPath)) { Directory.CreateDirectory(htmlPath); } ApplicationClass word = new ApplicationClass(); Type wordType = word.GetType(); Documents docs = word.Documents; Type docsType = docs.GetType(); Document doc = (Document)docsType.InvokeMember("Open", BindingFlags.InvokeMethod, null, docs, new Object[] { (object)path, true, true }); Type docType = doc.GetType(); docType.InvokeMember("SaveAs", BindingFlags.InvokeMethod, null, doc, new object[] { (htmlPath + htmlName), WdSaveFormat.wdFormatFilteredHTML }); docType.InvokeMember("Close", BindingFlags.InvokeMethod, null, doc, null); wordType.InvokeMember("Quit", BindingFlags.InvokeMethod, null, word, null); return htmlName; }2、预览
上一步Word转Html的方法已经准备就绪,我们再准备这样一个Word文档。

简单写一下逻辑:


是不是特别简单,我们再看看成品效果。


这种方案局限性比较大,部署平台必须安装Office,刚好客户能满足。
到此这篇关于Asp.Net在线预览Word文档的解决方案与思路的文章就介绍到这了,更多相关Asp.Net在线预览Word文档内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
相关内容
- 为Visual Studio2019添加Git组件_实用技巧_
- 关于Metalama使用Fabric操作项目或命名空间的问题_实用技巧_
- .NET Core API之格式化输出对象OutputFormatter_实用技巧_
- 树莓派ASP.NET环境配置过程详解_实用技巧_
- .NET Core企业微信网页授权登录的实现_实用技巧_
- WPF使用VisualTreeHelper进行命中测试_实用技巧_
- WPF数据驱动修改绑定_实用技巧_
- 详解.Net中字符串不变性与相等判断的特殊场景_实用技巧_
- .Net行为型设计模式之策略模式(Stragety)_基础应用_
- .Net行为型设计模式之状态模式(State)_基础应用_
