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

  • 相关阅读:
    【BZOJ 4581】【Usaco2016 Open】Field Reduction
    【BZOJ 4582】【Usaco2016 Open】Diamond Collector
    【BZOJ 4580】【Usaco2016 Open】248
    【BZOJ 3754】Tree之最小方差树
    【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
    【51Nod 1622】【算法马拉松 19C】集合对
    【51Nod 1616】【算法马拉松 19B】最小集合
    【51Nod 1674】【算法马拉松 19A】区间的价值 V2
    【BZOJ 2541】【Vijos 1366】【CTSC 2000】冰原探险
    【BZOJ 1065】【Vijos 1826】【NOI 2008】奥运物流
  • 原文地址:https://www.cnblogs.com/piaofeideyun/p/11714312.html
Copyright © 2011-2022 走看看