C# .NET 使用NPOI导入Execl

一、前端页面

页面采用   与form表单提交的方式上传文件

二、后台接收

NUGET引用 NPOI

//控制器文件引用

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;

        /// 
        /// 批量上传联系人
        /// 
        /// 
        [System.Web.Http.HttpPost]
        public ActionResult Upload()
        {
            //上传文件
            var files = Request.Files;
            if (files != null && files.Count > 0)
            {
                var file = files[0];
                try
                {
                    var strPath = @"~/SysFiles/" + DateTime.Now.ToString("yyyyMMdd");
                    if (!Directory.Exists(strPath))
                    {
                        //需要注意的是,需要对这个物理路径有足够的权限,否则会报错 
                        DirectoryInfo di = Directory.CreateDirectory(strPath);
                    }
                    var thisFileName = Guid.NewGuid().ToString().Replace("-", "") + "." + file.FileName.Split('.').LastOrDefault();
                    var thisFilePath = Server.MapPath(strPath) + thisFileName;
                    file.SaveAs(thisFilePath);
                    using (var fileStream = System.IO.File.Open(thisFilePath, FileMode.Open))
                    {
                        //把xls文件中的数据写入wk中,根据不同的文件格式实例化不同的对象去操作文件
                        IWorkbook wk;
                        string filePathChoice = thisFileName.Substring(thisFileName.LastIndexOf('.') + 1);
                        if (filePathChoice.Equals("xlsx"))
                        {
                            wk = new XSSFWorkbook(fileStream);
                        }
                        else
                        {
                            wk = new HSSFWorkbook(fileStream);
                        }

                        var sheet = wk.GetSheetAt(0); //读取当前表数据,直接去第一个Sheet
                                                      //判断是否有除去标题行的一行数据
                        if (sheet.LastRowNum < 1)
                        {
                           var result="无数据";
                            return Json(result, JsonRequestBehavior.AllowGet);
                        }
                        // 去掉第一行
                        for (var j = 1; j <= sheet.LastRowNum; j++) //LastRowNum 是当前表的总行数
                        {
                            var row = sheet.GetRow(j); //读取当前行数据
                            if (row != null)
                            {
                                for (var k = 0; k <= row.LastCellNum; k++) //LastCellNum 是当前行的总列数
                                {
                                    var cell = row.GetCell(k); //当前表格
                                   
                                }
                              
                            }
                           
                        }
                       
                    }
                 return Json("OK", JsonRequestBehavior.AllowGet);
                }
                catch (Exception ex)
                {
                    var result= ex.Message.ToString();
                    return Json(result, JsonRequestBehavior.AllowGet);
                }
            }
            else
            {
              var  result = "无数据";
              return Json(result, JsonRequestBehavior.AllowGet);
            }
            return Json(result, JsonRequestBehavior.AllowGet);
        }

三、对导入文件夹做权限控制

找到存储文件的文件夹,右键属性-->安全-->编辑-->添加-->高级-->立即查找-->

多选添加

C# .NET 使用NPOI导入Execl_第1张图片

C# .NET 使用NPOI导入Execl_第2张图片

给予完全控制权限

最后用管理员权限运行VS就可以啦~

 

 

 

你可能感兴趣的:(.NET,NPOI)