zoukankan      html  css  js  c++  java
  • .net core ajax使用EPPlus上传excle导入总结

    前端

    <form class="layui-form" id="div_imp" style="display:none;">
                <div class="layui-row">
                    <div class="layui-col-xs11">
                        <div class="layui-form-item">
                        </div>
                    </div>
                </div>
                <div class="layui-row">
                    <div class="layui-col-xs11">
                        <div class="layui-form-item">
                            <label for="Goodsno" class="layui-form-label">
                                <span>附件</span>
                            </label>
                            <div class="layui-input-block">
                                <input type="file" name="goodsfile" id="goodsfile" class="layui-input" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
                            </div>
                        </div>
                    </div>
                    <div class="layui-col-xs11">
                        <div class="layui-form-item">
                            <label for="Goodsno" class="layui-form-label">
                                <span></span>
                            </label>
                            <div class="layui-input-block">
                                <span class="we-red"><a href="~/import/商品导入模板.xlsx">点我下载最新模板</a></span>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="layui-row">
                    <div class="layui-form-item">
                        <label for="L_repass" class="layui-form-label">
                        </label>
                        <button class="layui-btn" lay-filter="import" lay-submit="" onclick="import_submit()">导入</button>
                    </div>
                </div>
            </form>
    <javascript>
    function import_submit() {
                var file;
                $('#import').attr('disabled', true);//.find('i').removeClass('layui-hide');
                var fordata = new FormData(); 
                fordata.append("file", $('#goodsfile')[0].files[0]); //传给后台的file的key值是可以自己定义的
                $.ajax({
                    url: "/Goods/Import",
                    type: "POST",
                    data: fordata,
                    cache: false,
                    processData: false,
                    contentType: false,
                    success: function (res) {
                        if (res.code == 0) {
                            parent.layer.close(index);
                            parent.layer.msg('导入成功', { time: 3000 });
                            parent.table.reload("test", { where: { "key": $("#goodsname").val() } });
                        } else {
                            layer.msg("导入失败 " + res.msg, { time: 3000 });
                            $('#add').attr('disabled', false).find('i').removeClass('layui-hide');
                        }
                    },
                    error: function (e) {
                        $('#add').attr('disabled', false).find('i').removeClass('layui-hide');
                        layer.msg("导入失败 " + res.msg, { time: 3000 });
                    }
                });
            }
        </script>

    后端

    [HttpPost]
            public IActionResult Import([FromForm(Name = "file")]IFormFile excelfile)
            {
                HandleResult<string> result = new HandleResult<string>{ Code=(int)StatusCodeEnum.ERROR_SYSTEM, success=false, Msg=StatusCodeEnum.ERROR_SYSTEM.ToDescription() };
                string sWebRootFolder = _hostingEnvironment.WebRootPath+ @"import_tmp";
                string sFileName = $"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}-{Guid.NewGuid()}.xlsx";
                FileInfo file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
                if (file.Exists)
                {
                    file.Delete();
                    file = new FileInfo(Path.Combine(sWebRootFolder, sFileName));
                }
                try
                {
                    using (FileStream fs = new FileStream(file.ToString(), FileMode.Create))
                    {
                        excelfile.CopyTo(fs);
                        fs.Flush();
                    }
                    using (ExcelPackage package = new ExcelPackage(file))
                    {
                        ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
                        int rowCount = worksheet.Dimension.Rows;
                        int ColCount = worksheet.Dimension.Columns;
                        var goods = new List<pub_goods>();
                        if (file.Exists)
                        {
                            file.Delete();
                        }
                        for (int row =2; row <= rowCount; row++)
                        {
                            
                                pub_goods pub_Goods = new pub_goods();
                                pub_Goods.GoodsID = Guid.NewGuid().ToString();
                                pub_Goods.CompanyID = Application.WebContext.CompanyID;
                                pub_Goods.State = "1";
                                pub_Goods.Createtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                pub_Goods.Is_del = "0";
                                pub_Goods.Goodsno = worksheet.Cells[row, 1].Value == null ? "" : worksheet.Cells[row,1].Value.ToString();
                                pub_Goods.Goodsname = worksheet.Cells[row,2].Value == null ? "" : worksheet.Cells[row, 2].Value.ToString();
                                pub_Goods.Goodstype = worksheet.Cells[row, 3].Value == null ? "" : worksheet.Cells[row, 3].Value.ToString();
                                pub_Goods.Unit = worksheet.Cells[row, 4].Value == null ? "" : worksheet.Cells[row, 4].Value.ToString();
                                pub_Goods.Goodscode = worksheet.Cells[row, 5].Value == null ? "" : worksheet.Cells[row, 5].Value.ToString();
                                pub_Goods.Approval = worksheet.Cells[row, 6].Value == null ? "" : worksheet.Cells[row, 6].Value.ToString();
                                pub_Goods.Factory = worksheet.Cells[row, 7].Value == null ? "" : worksheet.Cells[row, 7].Value.ToString();
                                pub_Goods.dosage = worksheet.Cells[row, 8].Value==null?"": worksheet.Cells[row, 8].Value.ToString();
                                goods.Add(pub_Goods);
                           
                        }
                        
                        result =_goodsService.AddListAsync(goods).Result;
                    }
                }
                catch (Exception ex)
                {
                    Logger.Default.ProcessError((int)StatusCodeEnum.ERROR_SYSTEM, ex.Message);
                }
                return Ok(result);
            }

    技术要点:

    1.上传附件<input type="file" name="goodsfile" id="goodsfile" class="layui-input" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">

      accept可设置默认允许的文件类型,也可选择其他文件类型,需要后台加判断限制文件类型.

    2.使用IFormFile一定要加上[FromForm(Name = "file")],否则IFormFile为null,file为前端自定义的文件参数名

    3.附件添加 var fordata = new FormData();  fordata.append("file", $('#goodsfile')[0].files[0]);  processDatacontentType一定要设为false

  • 相关阅读:
    OpenCV学习(8.22)
    Arduino学习(一)
    OpenCV学习(7.17)
    OpenCV学习(7.16)
    OpenCV学习(7.14)
    OpenCV学习(7.13)
    Android Touch事件传递机制解析
    Android-ViewPagerIndicator
    Android-xUtils-使用GET方式,从服务器获取json字符串
    Android-SlidingMenu-显示隐藏侧边栏
  • 原文地址:https://www.cnblogs.com/piaofeideyun/p/11714312.html
Copyright © 2011-2022 走看看