tnblog
首页
视频
资源
登录

.NET MVC 中 Excel的读取操作

6581人阅读 2019/11/29 16:36 总访问:423735 评论:0 收藏:0 手机
分类: .NET MVC

经常看到新闻说熬夜可能会猝死,真是吓死我了,以后再也不看新闻了。个如你一般的人



今天我们分享的文章是关于mvc框架中对Excel表格的读取操作,它有两种方法:


方法1-->微软自带的方法

 第一:我们需要导入命名空间,如下图:

  

第二:我们就可以读取自己创建目录下的Excel文件了,代码如下:

  

  1. public ActionResult Index()
  2.         {
  3.             //读取excel文件内容
  4.             //方法1:微软自带的方法
  5.             string url = Server.MapPath("~/excel/students.xls");
  6.             string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\";Data Source=" + url;
  7.                                                  
  8.             using (OleDbConnection conn = new OleDbConnection(connstr))
  9.             {
  10.                 conn.Open();
  11.                 using (OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", conn))
  12.                 {
  13.                     OleDbDataReader reader = command.ExecuteReader();
  14.                     while(reader.Read())
  15.                     {
  16.                         //列   注意:excel表里每列数据的类型要一致
  17.                         object number = reader[0];
  18.                         object username = reader[1];
  19.                         Response.Write(number + ":" + username + "<br/>");
  20.                     }
  21.                 }
  22.             }
  23.             Response.End();
  24.             return View();
  25.         }

  注释:我们定义自己文件路径-->定义连接的字符串connstr-->接下来就像操作数据库连接,获取数据原理一致了.

  注意:我们在查询表时,当前excel表内的表名(Sheet1),需要用[]括起,末尾还需要$结尾.这是微软查询的格式.

  

方法2-->利用插件和文件流进行读取操作

   第一:我们先在程序的引用出导入插件NPOI.dll,然后导入命名空间,如下图

   

第二:通过文件流打开路径下的excel文件,进行读取,代码如下:

  

  1. public ActionResult Index()
  2.         {
  3.             ////读取excel文件
  4.             ////方法2   -->利用插件和文件流
  5.             string url = Server.MapPath("~/excel/students.xls");
  6.             FileStream fileStream = new FileStream(url, FileMode.Open);
  7.             //通过文件流打开excel表格
  8.             HSSFWorkbook workbook = new HSSFWorkbook(fileStream);
  9.             //读取某一张表
  10.             HSSFSheet sheet = workbook.GetSheet("Sheet1"as HSSFSheet;
  11.             for (int i = 0; i < sheet.LastRowNum; i++)
  12.             {
  13.                 HSSFRow row = sheet.GetRow(i) as HSSFRow;
  14.                 string number = "";
  15.                 //判断值类型
  16.                 if (row.GetCell(0).CellType == NPOI.SS.UserModel.CellType.STRING)
  17.                 {
  18.                     number = row.GetCell(0).StringCellValue;
  19.                 }
  20.                 if (row.GetCell(0).CellType == NPOI.SS.UserModel.CellType.NUMERIC)
  21.                 {
  22.                     number = row.GetCell(0).NumericCellValue + "";
  23.                 }
  24.                 string name = row.GetCell(1).StringCellValue;
  25.                 Response.Write(number + ":" + name + "<br/>");
  26.             }
  27.             return View();
  28.         }

注释:我们表格里的每一行数据的类型可能不一致,所以就需要判断一下,否则它会报类型不一致的错误.


  前台我们用表单提交,访问地址,进行操作,代码如下:

  1. <form method="post" action="~/npoi/read" enctype="multipart/form-data" style="width:300px;">
  2.     <input type="file" name="username" />
  3.     <input type="submit" value="上传导入" />
  4. </form>

  点击上传的效果如下:

   

好啦,今天的分享到这里了,希望此文章对你有帮助,同时也希望我们有一个记录知识点的好习惯.


评价
你之所以觉得时间一年比一年过得快,是因为时间对你一年比一年重要。
排名
13
文章
64
粉丝
20
评论
30
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术