Asp.Net在线预览Word文档的解决方案与思路详解

 更新时间:2022年04月26日 08:31:20   作者:畅饮无绪  
这篇文章主要介绍了Asp.Net在线预览Word文档的解决方案与思路,大致思路是先将Word文档转换Html,再预览Html,需要注意电脑安装Office,需要的朋友可以参考下

前几天有个老项目找到我,有多老呢?比我工作年限都长,见到这个项目我还得叫一声前辈。

这个项目目前使用非常稳定,十多年了没怎么更新过,现在客户想加一个小功能:在线预览Word文档

首先想到的是用第三方的服务,例如WPS的开放平台。

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

得嘞,换其他方案吧。

项目特点

Asp.Net不带Core.NET Framework 4.0,部署在Windows平台上。

解决方案

大致思路:先将Word文档转换Html,再预览Html

1、Word文档转Html

先引用OfficeDLL,在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、预览

上一步WordHtml的方法已经准备就绪,我们再准备这样一个Word文档。

简单写一下逻辑:

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

这种方案局限性比较大,部署平台必须安装Office,刚好客户能满足。

到此这篇关于Asp.Net在线预览Word文档的解决方案与思路的文章就介绍到这了,更多相关Asp.Net在线预览Word文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • asp.net自动更新组件分享

    asp.net自动更新组件分享

    前两天在博客上发布了一篇英文的自动更新组件文章Release a AutoUpdater tool,那么在这篇文章中,我们也对其功能进行一些简单说明,这个组件非常简单,所以大家可以下载进行一些改进。
    2010-10-10
  • 获取DataRow[]的值示例

    获取DataRow[]的值示例

    这篇文章主要介绍了如何获取DataRow[]的值,需要的朋友可以参考下
    2014-04-04
  • 浅析.net策略模式

    浅析.net策略模式

    这篇文章主要介绍了浅析.net策略模式,需要的朋友可以参考下
    2014-12-12
  • Asp.net FileUpload+Image制作头像效果示例代码

    Asp.net FileUpload+Image制作头像效果示例代码

    个人信息中通常需要自己的头像或者照片,今天主要介绍一下使用FileUpload+img控件上传照片,感兴趣的朋友可以参考下
    2013-08-08
  • VS2008无法直接查看STL值的解决方法

    VS2008无法直接查看STL值的解决方法

    这篇文章主要为大家详细介绍了VS2008无法直接查看STL值的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • ASP.NET Core MVC中Form Tag Helpers用法介绍

    ASP.NET Core MVC中Form Tag Helpers用法介绍

    这篇文章介绍了ASP.NET Core MVC中Form Tag Helpers的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • asp.net 表单验证新思路

    asp.net 表单验证新思路

    产生环境:我们编程时,常常会碰到很多表单,有的表单,项目超多,我做过最长的有80多项,眼睛真的是看得发痛。于是想出这样一个偷懒的办法。
    2010-02-02
  • asp.NET开发中正则表达式中BUG分析

    asp.NET开发中正则表达式中BUG分析

    又发现了一个 .net的bug!最近在使用正则表达式的时候发现:在忽略大小写的时候,匹配值从 0xff 到 0xffff 之间的所有字符,正则表达式竟然也能匹配两个 ASCII 字符:i(code: 0x69) 和 I(code: 0x49);但是仍然不能匹配其他的 ASCII 字母和数字。
    2008-10-10
  • Queryable.Union 方法实现json格式的字符串合并的具体实例

    Queryable.Union 方法实现json格式的字符串合并的具体实例

    这篇文章介绍了Queryable.Union 方法实现json格式的字符串合并的具体实例,有需要的朋友可以参考一下
    2013-10-10
  • .net数据库连接池配置技巧(默认值)

    .net数据库连接池配置技巧(默认值)

    ado.net 本就有连接功能,所有.net开法基本不用去考虑连接问题,怪不得.net的连接池资料网上找不到。.net连接池只要在连接字符串里配制就可以了
    2008-12-12

最新评论