将文件信息导入到页面,文件从何来,看下图:
这里使用一个类型为file(文件)的input标签来进行选取文件,且设置accept的文件扩展名为“.doc,.docx”。一个action为“upLoadWord”的表单来提交文件。
因为功能表象是由一个导入按钮实现,表单没必要展示在页面上,所以放入了一个隐藏的div中。
那么该如何使用表单呢,我们在按钮的点击事件中放入了input标签的的点击触发事件,使得点击了按钮就弹出文件选择窗口。而表单提交就由input表签的“onchange”的改变事件的方法实现。在方法中使用的是“jquery.form” 插件中的表单提交方法“ajaxSubmit”将文件提交到action指定的控制器成员。
在控制器成员upLoadWord中我们使用HttpPostedFileBase类创建变量 file作为参数接受文件。
- 将file文件转化为html类型文件
采用的方法是引用E-iceblue公司开发的专业的Word .NET类库中的Spire.Doc,借助其中的Document类进行转换。
- 在进行转化前的准备工作
- 自定义文件名(防止重复),创建文件夹路径。
- 拼接路径(文件夹路径+自定义文件名),保存file文件——file.SaveAs(filePath)。
- 文件扩展名改为“.html”,拼接路径htmlPath(放置html文件的路径)。
- 进行转化
(1)先将文件读取到document 中,Documentdocument=newDocument(filePath),filePath为原始文件储存路径。
(2)再将文件转化为html格式并保存到指定的路径下
document.SaveToFile(htmlPath, FileFormat.Html)。htmlPath为html文件的储存路径。
- 获取html文件文本信息
- 处理html标签
- ReadAllText读取文件中所有的字符串(html标签)
- 去除标签中无用的style样式,
- 处理html标签
string strHtml = System.IO.File.ReadAllText(htmlPath);
-
-
- 将文本标签都转化为带自定义属性的p标签(方便正则匹配),
-
strHtml = Regex.Replace(strHtml, "<p|<pre", "<p reg=\"demo\"");
strHtml = Regex.Replace(strHtml, "</pre>", "</p>");
-
-
- 匹配出所有的p标签放入正则匹配结果集合,
-
MatchCollection matchesPList = Regex.Matches(strHtml, "<p reg=\"demo\"[\\w\\W\r\n]*?</p>");
-
- 获取P标签中的文本与图片并存放
- 声明键值对集合列表,List<Dictionary<string, string>> listResult = new List<Dictionary<string, string>>();
- 获取P标签中的文本与图片并存放
for循环p标签集合。For循环中调用提取p标签内容方法,p标签内容与for循环索引转化string类型成键值对放入键值对集合中,键值对集合放入实现声明的简直对集合列表中。
-
-
- 提取p标签内容方法:判断有无img标签,有则获取img标签输出,无则去掉span标签与p标签输出。
-
- 输出数据到页面
- foreach键值对集合列表,foreach再foreach键值对集合。内层foreach取键值对集合中值相加。外层foreach取相加值加换行符再相加。最后输出。
额,写(xia)的(ji)很(ba)差(xie)。