1、使用NPOI,可以在没有安装office的设备上读wiod、office。
2、本文只能读取.docx后缀的文档。
3、MVC架构中,上传文件只能使用form表单提交,转到控制器后要依次实现文件上传、打开文件、读取文件内容。
4、当读取文档中的表格时,逐行、逐单元格读取。

XCHTML:

<form id="form1" method="post" action="@Url.Action("Add","MeetRecord")" enctype="multipart/form-data"><input type="file" name="files" id="files" οnchange="ReadeWordTable(this)" /><input type="submit" value="提交" />
</form>

● Url.Action("Add","MeetRecord")表单提交到MeetRecordControl控制器里面的Add方法。
● type为file的input框里面一定要有name属性,后台在接受文件时,是通过这个name字段接收的,如果不定义name属性,或者name的值与控制器中接收的参数名不一致,会出现问题。
● 因为使用form表单提交,后台只能返回一个页面,因此我在type为file的input框里添加了一个onchange事件,用来验证所选择的文件,是否符合要求。

● 下面的方法就是用来验证文件是否符合要求。

<script>
function ReadeWordTable(target) {
var isIE = /msie/i.test(navigator.userAgent) && !window.opera; var fileSize = 0;var filetypes = [".docx"];var filepath = target.value;var filemaxsize = 1024 * 2;//2Mif (filepath) {var isnext = false;var fileend = filepath.substring(filepath.lastIndexOf("."));if (filetypes[0] == fileend) {isnext = true;}if (!isnext) {alert("只能上传.docx类型文件!");target.value = "";return false;}} else {return false;}if (isIE && !target.files) {var filePath = target.value;var fileSystem = new ActiveXObject("Scripting.FileSystemObject");if (!fileSystem.FileExists(filePath)) {alert("附件不存在,请重新输入!");return false;}var file = fileSystem.GetFile(filePath);fileSize = file.Size;} else {fileSize = target.files[0].size;}var size = fileSize / 1024;if (size > filemaxsize) {alert("附件大小不能大于" + filemaxsize / 1024 + "M!");target.value = "";return false;}if (size <= 0) {alert("附件大小不能为0M!");target.value = "";return false;}}
</script>
c#后台实现:
using System;
using System.Data;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Mvc;
using NPOI.XWPF.UserModel;[HttpPost]public ActionResult Add(HttpPostedFileWrapper files){HttpServerUtility server = System.Web.HttpContext.Current.Server;string save_Path = server.MapPath("..\\Word\\");string fileName = files.FileName;files.SaveAs(save_Path + fileName);ViewBag.fileName = ReadWordText(fileName);return View();}读取文档里面的表格public string ReadWordText(string fileName){string filePath = "..\\Word\\" + fileName;HttpServerUtility server = System.Web.HttpContext.Current.Server;string endPath = server.MapPath(filePath);string fileText = string.Empty;StringBuilder sbFileText = new StringBuilder();#region 打开文档XWPFDocument document = null;using (FileStream file = new FileStream(endPath, FileMode.Open)) {document = new XWPFDocument(file);}#endregion#region 表格foreach (XWPFTable table in document.Tables){foreach(XWPFTableRow row in table.Rows){foreach (XWPFTableCell cell in row.GetTableCells()){sbFileText.Append(cell.GetText()+"|");}}}#endregionreturn sbFileText.ToString();}
  • 在后台接收文件时,一定要添加[HttpPost],否则会报错。
  • 在Add方法中类型要ActionResult ,传的参数类型应该为HttpPostedFileWrapper 文件名应该与type为file的input的name属性值相同。
  • 因为我需要获得文档表格里面的内容,在页面上显示出来,为了方便在前台读取每个表格里面的内容,用‘|’字符将表格里面的内容相互分割开。
  • 在页面上使用Razor,进行接受,在对其进行处理,代码如下所示:
            string fileName = ViewBag.fileName;string[] FileNameArr = null;if (fileName != "" && fileName != null){FileNameArr = fileName.Split('|');}

MVC架构下,使用NPOI读取.DOCX文档中表格的内容相关推荐

  1. Free Spire.Doc组件C# 读取Word文档中的文本内容

    C# 读取Word文档中的文本内容 这篇文章将介绍如何使用C#和Free Spire.Doc组件读取Word文档中的文本内容.Free Spire.Doc提供了两种方法来读取Word文档中的内容,一种 ...

  2. C# 读取Word文档中的文本内容

    C# 读取Word文档中的文本内容 这篇文章将介绍如何使用C#和Free Spire.Doc组件读取Word文档中的文本内容.Free Spire.Doc提供了两种方法来读取Word文档中的内容,一种 ...

  3. Java 读取Word文档中的文本内容

    这篇文章将介绍如何使用Free Spire.Doc for Java组件在Java应用程序中读取Word文档的文本内容.Free Spire.Doc for Java提供了两种方法来读取Word文档中 ...

  4. Python使用标准库zipfile+re提取docx文档中超链接文本和链接地址

    推荐教材: <Python程序设计实用教程>,ISBN:978-7-5635-6065-3,董付国,北京邮电大学出版社 教材封面: 全国各地新华书店有售 京东购买链接: 配套资源:教学大纲 ...

  5. html5多个图片位置_Python使用标准库zipfile提取docx文档中所有图片

    清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔哩 ...

  6. Python使用标准库zipfile提取docx文档中所有图片

    清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...

  7. python实现:读取PDF文件中的英文单词,并将前二十个高频词储存到一个docx文档中

    总体思路如下: 1.读取PDF文件,将其中的英文单词提取出来 2.获得每个英文单词的词频,通过字典将英文单词及其词频配对 3.将英文单词按照词频由大到小排序 4.创建并写入docx文档 首先打开PDF ...

  8. Python读取docx文档的内容

    Python读取docx文档的内容 下载好解析docx文档的包,Python-docx是专门针对于word文档的一个模块. doc.paragraphs 段落集合 doc.tables 表格集合 do ...

  9. python生成word文档的表格_2018-10-04 [日常]用Python读取word文档中的表格并比较

    演示如下. 两个简单的word文档, 各有一个表格: 读取文档中的表格到列表(为演示只对单列表格操作): import docx def 取表格(文件名): 文件 = docx.Document(文件 ...

  10. python合并word表格单元格_Python实战009:读取Word文档中的表格数据及表格合并问题解决...

    同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护.由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大.人工核对整理既费时又费力 ...

最新文章

  1. 【Ubuntu】apt-get命令小结
  2. tftp怎么给服务器传文件,TFTP文件传输工具使用
  3. 调查:中国CIO在亚太拥最大战略影响力
  4. Matlab高光谱样本相关性分析
  5. centos7重新加载服务的命令_CentOS7 从查看、启动、停止服务说起systemctl
  6. WebForm-博客园-1.0-账户模块(Passport)-登录与注册
  7. 【华为云技术分享】盘点物联网常用开发板
  8. final/finalize/finally的区别
  9. 基于sigmoid的文本多标签分类模型代码实现
  10. 20200421:周赛练习题(leetcode148周周赛上)
  11. linux服务器安装字体,删除字体,详细步骤
  12. linux中pingpong测试程序的解读
  13. 新浪邮箱开通imap服务器,新浪帮助-常见问题
  14. 修改系统默认 alert 弹框样式
  15. 生物素-磺酸-NHS 酯,119616-38-5,Biotin-Sulfo-NHS ester
  16. 只鳞片爪聊红楼——《红楼梦》读后感笔记3200字
  17. VMware虚拟机挂载宿主机共享目录
  18. Linux下各种压缩文件的解压方法
  19. 【Java】枚举类型
  20. uniapp vue页面嵌套webview组件 ,自定义webview大小

热门文章

  1. Exescope等打开DLL,导出函数名称混乱的问题
  2. JAVA学习笔记 || 使用Point 类的注意事项
  3. 百度文库 复制文本 下载文档
  4. 访问网址(使用CDN)时 智能DNS调度 与 用户定位调度(根据IP定位)
  5. 大数据就业前景:大数据分析师是青春饭吗?
  6. 第二个Arduino小车 两轮自平衡
  7. !peb和PEB结构
  8. Python 搜狗词库的批量下载
  9. 2016年国家公务员考试公告
  10. 毕业设计 嵌入式超声波雷达可视化系统