private static void AddCellInfo(Worksheet worksheet, CellIndex cellIndex, string teacherName, string weeks) { var prevWeeks = worksheet.Cells[cellIndex.x, cellIndex.y + 1].Text.ToString(); var hasPrevWeeks = !string.IsNullOrEmpty(prevWeeks); if (!hasPrevWeeks) { worksheet.Cells[cellIndex.x, cellIndex.y] = teacherName; worksheet.Cells[cellIndex.x, cellIndex.y + 1] = weeks; return; } var prevName = worksheet.Cells[cellIndex.x, cellIndex.y].Text.ToString(); if (prevName != teacherName) { worksheet.Cells[cellIndex.x, cellIndex.y] = prevName + "/\n" + teacherName; worksheet.Cells[cellIndex.x, cellIndex.y + 1] = prevWeeks + "/\n" + weeks; } else { worksheet.Cells[cellIndex.x, cellIndex.y + 1] = prevWeeks + ", " + weeks; } List <int> prevWeeksList = Utils.Utils.ParseWeeks(prevWeeks); List <int> currWeeksList = Utils.Utils.ParseWeeks(weeks); if (prevWeeksList.Intersect(currWeeksList).Any()) { GenericExcelExport.SetCellBackground(worksheet, cellIndex, new CellIndex { x = cellIndex.x, y = cellIndex.y + 1 }, XlRgbColor.rgbRed); } }
private static void FillTable(DataTable dataTable, Worksheet worksheet) { List <TeacherWeeksWithCellIndex> teachersData = new List <TeacherWeeksWithCellIndex>(); var currentTime = -1; foreach (DataRow row in dataTable.Rows) { var dayName = row[0].ToString(); var lessonTimeNumber = LessonTimeDto.GetNumberFromPeriod(row[1].ToString()); var classroom = row[2].ToString(); var cellIndex = GetIndexByDayLessonClassroom(dayName, lessonTimeNumber, classroom); if (currentTime != lessonTimeNumber) { teachersData.Clear(); //we dont give a f**k if teacher has same classes on different lesson times currentTime = lessonTimeNumber; } var teacherName = string.Format("{0} {1}", row[3], row[4]); var weeks = row[5].ToString(); AddCellInfo(worksheet, cellIndex, teacherName, weeks); TeacherWeeksWithCellIndex currentTeacherData = new TeacherWeeksWithCellIndex { CellIndex = cellIndex, TeacherName = teacherName, Weeks = Utils.Utils.ParseWeeks(weeks), DayName = dayName }; foreach (var teacherData in teachersData) { //teacher has more than one lesson in same time if (teacherData.TeacherName == currentTeacherData.TeacherName && teacherData.DayName == currentTeacherData.DayName && teacherData.Weeks.Intersect(currentTeacherData.Weeks).Any()) { GenericExcelExport.SetCellBackground(worksheet, teacherData.CellIndex, new CellIndex { x = teacherData.CellIndex.x, y = teacherData.CellIndex.y + 1 }, XlRgbColor.rgbIndianRed); GenericExcelExport.SetCellBackground(worksheet, currentTeacherData.CellIndex, new CellIndex { x = currentTeacherData.CellIndex.x, y = currentTeacherData.CellIndex.y + 1 }, XlRgbColor.rgbIndianRed); } } teachersData.Add(currentTeacherData); } }