/// <summary> /// Kiểm tra số lượng worksheet có đúng với file mẫu hay không? /// </summary> /// <param name="guardClause"></param> /// <param name="worksheetCount"></param> /// <param name="worksheetTemplateCount"></param> /// <param name="importFileTemplate"></param> /// CreatedBy: NVMANH (05/2020) public static void FileContentInvalid(this IGuardClause guardClause, int worksheetCount, int worksheetTemplateCount, ImportFileTemplate importFileTemplate) { if (worksheetCount != worksheetTemplateCount) { throw new ImportException(String.Format("Tệp nhập khẩu không đúng mẫu, số lượng Worlsheet trong file mẫu là {0}", importFileTemplate.TotalWorksheet)); } }
/// <summary> /// Hàm kiểm tra xem file có đúng file mẫu hay không /// </summary> /// <param name="guardClause"></param> /// <param name="formFile"></param> /// CreatedBy: NVMANH public static void FileContentInvalid(this IGuardClause guardClause, ExcelPackage excelPackage, ImportFileTemplate importFileTemplate) { // Check số lượng Sheet: var worksheets = excelPackage.Workbook.Worksheets; var workSheetCount = worksheets.Count; if (workSheetCount != worksheets.Count()) { throw new ImportException(String.Format("Tệp nhập khẩu không đúng mẫu, số lượng Worlsheet trong file mẫu là {0}", importFileTemplate.TotalWorksheet)); } // Check số lượng cột ở từng sheet: for (int i = 0; i < workSheetCount; i++) { var sheet = worksheets[i]; var sheetName = sheet.Name; var totalColumns = sheet.Dimension.Columns; // Check xem Worksheet trên tệp có giống File mẫu hay không? var worksheetTemplate = importFileTemplate.ImportWorksheet.Where(e => e.ImportWorksheetName.Trim().ToLower() == sheetName.Trim().ToLower() && e.WorksheetPosition == i + 1).FirstOrDefault(); if (sheet.Hidden == OfficeOpenXml.eWorkSheetHidden.Hidden || (worksheetTemplate != null && worksheetTemplate.IsImport == 0)) { continue; } if (worksheetTemplate == null) { throw new ImportException(String.Format("Tệp nhập khẩu không đúng mẫu, worksheet [{0}] sai vị trí hoặc không tồn tại trong tệp mẫu", sheetName)); } // Check số lượng cột trong workSheet có giống với số lượng cột tại worksheet như tệp mẫu hay không? var listColumnsTemplate = worksheetTemplate.ImportColumn; if (totalColumns != listColumnsTemplate.Count()) { throw new ImportException(String.Format("Tệp nhập khẩu không đúng mẫu, số lượng cột tại worksheet [{1}] trong file mẫu là {0}", listColumnsTemplate.Count(), sheetName)); } // For từng cột, kiểm tra tiêu đề cột có khớp hay không: var range = sheet.Cells[1, 1, 1, totalColumns]; for (int j = 1; j < totalColumns; j++) { var headerName = range[1, j].Value.ToString().Replace("\n", " "); var headerNameTemplate = listColumnsTemplate.Where(col => (col.ColumnTitle.Trim().ToLower().Contains(headerName.Trim().ToLower()) && j == col.ColumnPosition)).FirstOrDefault(); var address = range[1, j].Address; if (headerNameTemplate == null) { throw new ImportException(String.Format("Tệp nhập khẩu không đúng mẫu, vị trí cột [{0}] tại worksheet [{1}] - [{2}] sai hoặc không tồn tại trong file mẫu", headerName, sheetName, address)); } } } // Các cột có tiêu đề giống với File mẫu hay không, có đúng thứ tự hay không? }
/// <summary> /// Kiểm tra định dạng File có đúng hay không /// </summary> /// <param name="guardClause"></param> /// <param name="formFile"></param> /// <param name="importFileTemplate"></param> /// CreatedBy: NVMANH public static void FileExtensionInvalid(this IGuardClause guardClause, IFormFile formFile, ImportFileTemplate importFileTemplate) { var extension = Path.GetExtension(formFile.FileName).Replace(".", string.Empty); var extensionTemplate = importFileTemplate.FileFormat; if (extensionTemplate != null && extensionTemplate != string.Empty && extensionTemplate.Contains(extension) == false) { throw new ImportException(string.Format("Tệp nhập khẩu không đúng định dạng, vui lòng chọn tệp có định dạng là [{0}]", extensionTemplate)); } }