C# .NET 使用NPOI导入Execl

一、前端页面

页面采用 <input  type="file" >  与form表单提交的方式上传文件

<div class="modal fade text-left" id="importModal" tabindex="-1" role="dialog" aria-labelledby="basicModalLabel1" aria-hidden="true" style="display: none;">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="modaltitle">导入员工</h4>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
            </div>
            <div class="modal-body">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <div class="row">
                            <form id="formUpload" enctype="multipart/form-data" action="Upload" method="post">
                                <div class="col-xs-6" style="margin-left:15px;">
                                    <input id="boxFile" type="file" name="uploadFile" class="form-control" />
                                </div>
                                <div class="col-xs-3">
                                    <input type="text" id="tboxName" name="tboxName" hidden="hidden" />
                                    <button id="btnSubmit" class="btn btn-default btn-sm">立即上传</button>
                                </div>
                            </form>
                            <div class="col-xs-3">
                                <p class="text-right" style="margin: 0;">
                                    <a class="btn btn-default btn-sm" href="~/SysFiles/upload-template.xls">
                                        <i class="glyphicon  glyphicon glyphicon-arrow-down"></i> 下载 Excel 模板
                                    </a>
                                </p>
                            </div>
                        </div>

                    </div>
                    <div class="panel-body">
                        <div class="alert alert-info">
                            <p>使用方法</p>
                            <ol>
                                <li>
                                    下载 Excel 模板,按照模板格式填入账户信息
                                </li>
                                <li> 上传编辑填充模板文件的 Excel </li>
                            </ol>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

二、后台接收

NUGET引用 NPOI

//控制器文件引用

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

        /// <summary>
        /// 批量上传联系人
        /// </summary>
        /// <returns></returns>
        [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);
        }

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

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

多选添加

给予完全控制权限

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

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值