陪你听风

.NET MVC 中 Excel的读取操作

电脑版发表于:2019/11/29 16:36

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



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


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

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

  

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

  

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

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

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

  

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

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

   

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

  

public ActionResult Index()
        {
            ////读取excel文件
            ////方法2   -->利用插件和文件流
            string url = Server.MapPath("~/excel/students.xls");
            FileStream fileStream = new FileStream(url, FileMode.Open);
            //通过文件流打开excel表格
            HSSFWorkbook workbook = new HSSFWorkbook(fileStream);
            //读取某一张表
            HSSFSheet sheet = workbook.GetSheet("Sheet1") as HSSFSheet;
            for (int i = 0; i < sheet.LastRowNum; i++)
            {
                HSSFRow row = sheet.GetRow(i) as HSSFRow;
                string number = "";
                //判断值类型
                if (row.GetCell(0).CellType == NPOI.SS.UserModel.CellType.STRING)
                {
                    number = row.GetCell(0).StringCellValue;
                }
                if (row.GetCell(0).CellType == NPOI.SS.UserModel.CellType.NUMERIC)
                {
                    number = row.GetCell(0).NumericCellValue + "";
                }
                string name = row.GetCell(1).StringCellValue;
                Response.Write(number + ":" + name + "<br/>");
            }
            return View();
        }

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


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

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

  点击上传的效果如下:

   

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


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢