Exemple #1
0
        public ActionResult ImportExcel(HttpPostedFileBase myfile)
        {
            var errors = new List <string>();

            try
            {
                if (string.IsNullOrWhiteSpace(myfile?.FileName))
                {
                    errors.Add("失败,未获取到文件!");
                    return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
                }
                var fileName = myfile.FileName;

                if (!fileName.EndsWith(".xls") && !fileName.EndsWith(".xlsx"))
                {
                    errors.Add("失败,仅能上传.xls或.xlsx文件的格式!");
                    return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
                }

                if (myfile.ContentLength / (1024 * 1024) > 10) //大于10M
                {
                    errors.Add("失败,文件容量大于10M!");
                    return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
                }

                var ds = _exportManager.ExcelToDataTableByStream(true, myfile.InputStream, fileName);
                if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count == 0)
                {
                    errors.Add("失败,文件内没有内容!");
                    return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
                }
                var dt = ds.Tables[0];
                ImportXenbladeShop(dt);
                //var dt = _exportManager.ExcelToDataTable("", true, null, myfile.InputStream);
                //if (dt == null || dt.Rows.Count == 0)
                //{
                //    errors.Add("失败,文件内没有内容!");
                //    return Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet);
                //}

                //验证列是否存在
                var colums = "队员,号码,位置,年级,绰号";
                errors.AddRange(from msg in colums.Split(',') where dt.Columns[msg] == null select $"该导入的文件中没有\"{msg}\"这一列!");
                if (errors.Count > 0)
                {
                    return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
                }
                //过滤空白行
                dt = dt.AsEnumerable().Where(x => !string.IsNullOrEmpty(x.Field <string>("队员"))).CopyToDataTable();

                return(Json(new { success = true, data = JsonConvert.SerializeObject(dt) }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                errors.Add("导入错误," + ex.Message);
            }

            return(Json(new { success = false, data = errors }, JsonRequestBehavior.AllowGet));
        }