日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

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

發布時間:2023/12/2 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MVC架构下,使用NPOI读取.DOCX文档中表格的内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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文档中表格的内容的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。