Ejemplo n.º 1
0
 public abstract ExcelOperationResult AfterUploadValid(ExcelValidContext context);
Ejemplo n.º 2
0
        public async Task <ExcelOperationResult> Upload(IFormFile file, ExcelOperationOption option)
        {
            ExcelOperationResult validResult = new ExcelOperationResult();

            try
            {
                using (var memoryStream = new MemoryStream())
                {
                    await file.CopyToAsync(memoryStream).ConfigureAwait(false);

                    using (var package = new ExcelPackage(memoryStream))
                    {
                        var worksheet  = package.Workbook.Worksheets[1]; // Tip: To access the first worksheet, try index 1, not 0
                        var configList = _batchSqlOperation.Select <ImportConfig>(new BatchOperationOption()
                        {
                            ConnectionString = option.BatchOption.ConnectionString,
                            TableName        = string.IsNullOrEmpty(option.TableName) ? "LC_Meta_ImportConfigs" : option.TableName,
                            Where            = string.Format(" ImportType={0} and IsUpdate=1", (int)option.ImportType)
                        });
                        //var list = configList.ToList();
                        //configList.CopyTo(list);
                        option.BatchOption.AllowedAllColumns = configList.ToArray();
                        validResult = ValidDefault(worksheet, option, configList);
                        if (validResult != null && validResult.Messages != null && validResult.Messages.Count > 0)
                        {
                            return(validResult);
                        }
                        ExcelValidContext context = new ExcelValidContext()
                        {
                            Worksheet = worksheet, OperationOption = option
                        };
                        validResult = BeforeUploadValid(context);
                        if (validResult != null && validResult.Messages != null && validResult.Messages.Count > 0)
                        {
                            return(validResult);
                        }
                        var chiefId = CreateImportChief(option, file.Name);
                        var table   = worksheet.ToMappedDataTable(configList);

                        context = new ExcelValidContext()
                        {
                            Worksheet = worksheet, OperationOption = option, Table = table
                        };
                        validResult = AfterUploadValid(context);
                        if (validResult != null && validResult.Messages != null && validResult.Messages.Count > 0)
                        {
                            return(validResult);
                        }
                        var importColumns = GetHeaderFromSheet(worksheet);
                        configList = configList.FindAll(a => importColumns.Exists(b => b == a.ExcelName));
                        Dictionary <string, string> dict = new Dictionary <string, string>();
                        foreach (var item in configList)
                        {
                            dict.Add(item.ExcelName, item.ColumnName);
                        }
                        option.BatchOption.ColumnMapping = dict;

                        if (chiefId > 0)
                        {
                            option.BatchOption.ChiefId = chiefId;
                            _batchSqlOperation.InsertOrUpdate(table, option.BatchOption);
                        }
                    }
                }
            }
            catch (System.Exception ex)
            {
                validResult = new ExcelOperationResult();
                validResult.Messages.Add(new ErrorMessage()
                {
                    Name = "上传错误:" + ex.Message, Nums = "1"
                });
            }

            return(validResult);
        }
Ejemplo n.º 3
0
 public abstract ExcelOperationResult BeforeUploadValid(ExcelValidContext context);