Word 文档转变成网页并显示

开发工具与关键技术:VS/MVC
作者:何桂朋
撰写时间:2019年4月20日

我认为在ASP.NET MVC中,要想将Word 文档转变成网页并显示到页面上,需要以下五步:
1、确定选中的是不是Word文档
2、将文件保存到指定的文件夹中
3、将word转换HTML
4、精简筛选
5、保存最终结果
一、确定选中的是是不是Word文档
假设上传文件的名为:批量导入模板.docx;
IE浏览器和其他浏览器捕捉的文件名不一样,IE浏览器捕捉的文件名是带有“绝对定位的路径”。针对IE浏览器上传的文件名做一些处理。

//主要处理IE浏览器上传的文件名
string[] str = FileName.Split('\\')
//获取最后的数据,获取到文件名称
FileName = str[str.Length - 1];
通过GetExtension() 返回指定的路径字符串的扩展名,以获取文件的扩展名。
然后判断文件类型是不是".doc||.docx"。

二、将文件保存到指定的文件夹中

//文件名称
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + FileName;
//检查目录是否存在,不存在就创建
if (!Directory.Exists(Server.MapPath("~/Document/Title/Temp/")))
{//创建目录/Document/Notice/
Directory.CreateDirectory(Server.MapPath("~/Document/Title/Temp/"));
}
string filePath = Path.Combine(Server.MapPath("~/Document/Title/Temp/"), fileName); //SaveAs 保存上载文件的内容
file.SaveAs(filePath);

文件重新命名是为了使其唯一,预防查找的时候出现名字相同
Path.Combine(),可以拼接两个参数的路径。
文件(file)通过SaveAs()保存到其参数路径中;

三、将word转换HTML

// html文件的文件名称
string htmlName =fileName.Replace(fileExtension, ".html");
//html文件的保存路径
string htmlPath = Path.Combine(Server.MapPath("~/Document/Title/Temp/"), htmlName);
Document document = newDocument(filePath);//将文件读取到document中
document.SaveToFile(htmlPath, FileFormat.Html);//将文件转化成HTML文档并保存

Document 可以将参数的内容读取出来。
SaveToFile将document转化成Html文档并在 htmlPath 路径中保存起来。

四、精简筛选
用正则表达式去掉 注释、\r回车 \n换行符、span标签和 、除去多余的样式

//ReadAllText读取文件内容,返回一个包含文件所有行的字符串 
string strhtml =System.IO.File.ReadAllText(htmlPath);
//替换 html中的 给p标签添加一个自定义属性,若有pre标签,则替换成p标签
strhtml = Regex.Replace(strhtml, "</pre>", "</p>");
strhtml = Regex.Replace(strhtml, "<p|<pre", "<preg=\"demo\""); 
//去掉 style后面的样式
strhtml = Regex.Replace(strhtml, "style=\".+?(?=\")\"", "");
//正则表达式获取所有的p标签
MatchCollection matchPList =
Regex.Matches(strhtml, "<preg=\"demo\"[\\w\\W\\r\\n]*?></p>");

五、保存最终结果

//保存最终结果
List<Dictionary<string, string>> listLast = newList<Dictionary<string, string>>();
//保存所有段落
//将符合段落内容格式的字符串保存在列表中
//抽取p标签中的文字图片内容
for (int i = 1; i < matchPList.Count; i++)
{
string strP = matchPList[i].Value;
//因为p标签中可能存在多个文字与图片,所以使用List保存 精简筛选
string c = getImages(strP);
Dictionary<string, string> dic = newDictionary<string, string>();
dic.Add(i.ToString(),c);
listLast.Add(dic);
}
string strOutHtml = "";
foreach (Dictionary<string, string> listitem in listLast) {
foreach (string item in listitem.Values) {
strOutHtml += item;
}
strOutHtml += "
";
}
//将抽取的结果构建成显示的html
msg.State = true;
msg.Text = strOutHtml;

到此就结束了。

    原文作者:长路漫漫兮,吾修远道
    原文地址: https://blog.csdn.net/weixin_44550157/article/details/89577401
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞