private void tableMain(object ObjMissing, Word._Document ObjDoc) { int curRow; int countCol; int countRow; string[] FIO; string Surname; string Name; string Patronymic; string Addition; //Задаём закладку конца документа object EndOfDoc = "\\endofdoc"; Word.Table ObjTable; Word.Range ObjWordRange; //Задаём количество столбцов //оно остаётся неизменным //в количестве 6 штук countCol = 6; //Создаём строки //1. под шапку таблицы countRow = 1; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals(cmbSemestr.SelectedItem.ToString())) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура") || (mdlData.colDistribution[i].Subject.Subject == "Руководство магистрами")) { continue; } //добавляем строку countRow++; } } } //Вставляем таблицу согласно заполненной сетке и заполняем её данными о нагрузке ObjWordRange = ObjDoc.Bookmarks.get_Item(ref EndOfDoc).Range; ObjTable = ObjDoc.Tables.Add(ObjWordRange, countRow, countCol, ref ObjMissing, ref ObjMissing); //Размер шрифта 10 пт ObjTable.Range.Font.Size = 10; //Выравнивание по левому краю ObjTable.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; //Отступ после абзаца отсутствует ObjTable.Range.ParagraphFormat.SpaceAfter = 0; //Отступ в 0 пт до абзаца ObjTable.Range.ParagraphFormat.SpaceBefore = 0; //Одинарный межстрочный интервал ObjTable.Range.ParagraphFormat.Space1(); //Границы таблицы включены ObjTable.Borders.Enable = 1; //Текущая строка первая curRow = 1; ObjTable.Rows[1].Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; ObjTable.Rows[1].Range.Font.Bold = 1; //Заполняем первую строку и одновременно формируем размерности ObjTable.Cell(curRow, 1).Range.Text = "№ п/п"; ObjTable.Cell(curRow, 2).Range.Text = "Дисциплина"; ObjTable.Cell(curRow, 3).Range.Text = "Группа"; ObjTable.Cell(curRow, 4).Range.Text = "Основной преподаватель"; ObjTable.Cell(curRow, 5).Range.Text = "Замещающий преподаватель"; ObjTable.Cell(curRow, 6).Range.Text = "Резервный преподаватель"; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals(cmbSemestr.SelectedItem.ToString())) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура") || (mdlData.colDistribution[i].Subject.Subject == "Руководство магистрами")) { continue; } //счётчик текущей строки увеличиваем на единицу curRow += 1; //дополнение к названию дисциплины Addition = "("; //Если есть лекционные часы if (mdlData.colDistribution[i].Lecture > 0) { //пишем про наличие лекции Addition += "лк,"; } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть практические часы if (mdlData.colDistribution[i].Practice > 0) { //пишем про наличие практических Addition += "пр,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть лабораторные часы if (mdlData.colDistribution[i].LabWork > 0) { //пишем про наличие лабораторных Addition += "лб,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть курсовой проект if (mdlData.colDistribution[i].KursProject > 0) { //пишем про наличие курсового проекта Addition += "к/пр,"; } } //Убираем запятую if (Addition.EndsWith(",")) { Addition = Addition.Substring(0, Addition.Length - 1); } //Закрываем скобку Addition += ")"; //Если внутри скобок пустота, то if (Addition == "()") { //убираем скобки Addition = ""; } //В номер по порядку вписываем значение счётчика ObjTable.Cell(curRow, 1).Range.Text = (curRow - 1).ToString(); //Вписываем название дисциплины с дополнением ObjTable.Cell(curRow, 2).Range.Text = mdlData.colDistribution[i].Subject.Subject.ToString() + " " + Addition; //Название группы с номером курса if (!(mdlData.colDistribution[i].Speciality == null) & !(mdlData.colDistribution[i].KursNum == null)) { ObjTable.Cell(curRow, 3).Range.Text = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString() + "-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } else { if (!(mdlData.colDistribution[i].Speciality == null)) { ObjTable.Cell(curRow, 3).Range.Text = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString(); } else { if (!(mdlData.colDistribution[i].KursNum == null)) { ObjTable.Cell(curRow, 3).Range.Text = "???-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } } } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества основного преподавателя if (mdlData.colDistribution[i].Lecturer != null) { FIO = mdlData.colDistribution[i].Lecturer.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 4).Range.Text = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества заменяющего преподавателя if (!(mdlData.colDistribution[i].Lecturer2 == null)) { FIO = mdlData.colDistribution[i].Lecturer2.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 5).Range.Text = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества резервного преподавателя if (!(mdlData.colDistribution[i].Lecturer3 == null)) { FIO = mdlData.colDistribution[i].Lecturer3.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } ObjTable.Cell(curRow, 6).Range.Text = Surname + " " + Name + Patronymic; } } } } ObjTable.Columns[1].Width = 0.94f / 0.03527f; ObjTable.Columns[2].Width = 7.05f / 0.03527f; ObjTable.Columns[3].Width = 1.70f / 0.03527f; ObjTable.Columns[4].Width = 3.09f / 0.03527f; ObjTable.Columns[5].Width = 3.62f / 0.03527f; ObjTable.Columns[6].Width = 3.43f / 0.03527f; }
//Форитрование графика замен на первый семестр private void btnSemestr1_Click(object sender, EventArgs e) { int curRow; string[] FIO; string Surname; string Name; string Patronymic; string Addition; //Очищаем сетку dgSwap.Rows.Clear(); dgSwap.Columns.Clear(); //Делаем невидимыми нуль-строку и нуль-столбец dgSwap.ColumnHeadersVisible = false; dgSwap.RowHeadersVisible = false; //Задаём количество столбцов //оно остаётся неизменным //в количестве 6 штук for (int i = 0; i <= 5; i++) { dgSwap.Columns.Add("", ""); } //Создаём строки //1. под шапку таблицы dgSwap.Rows.Add(); //Текущая строка первая curRow = 0; //Заполняем первую строку и одновременно формируем размерности dgSwap.Columns[0].Width = 30; dgSwap[0, curRow].Value = "№ п/п"; dgSwap.Columns[1].Width = 350; dgSwap[1, curRow].Value = "Дисциплина"; dgSwap.Columns[2].Width = 70; dgSwap[2, curRow].Value = "Группа"; dgSwap.Columns[3].Width = 150; dgSwap[3, curRow].Value = "Основной преподаватель"; dgSwap.Columns[4].Width = 150; dgSwap[4, curRow].Value = "Замещающий преподаватель"; dgSwap.Columns[5].Width = 150; dgSwap[5, curRow].Value = "Резервный преподаватель"; //Формируем строки по заменам преподавателей в первом семестре //прогоняем все строки фактической нагрузки for (int i = 0; i <= mdlData.colDistribution.Count - 1; i++) { //смотрим только второй семестр if (mdlData.colDistribution[i].Semestr.SemNum.Equals("1 семестр")) { //Если есть часы на ГАК, на аспирантуру, на диплом, //на преддипломную практику, на производственную практику, //на посещение учебных занятий, //на учебную практику, то не рассматриваем эти строки if (!(mdlData.colDistribution[i].GAK > 0) & !(mdlData.colDistribution[i].PostGrad > 0) & !(mdlData.colDistribution[i].DiplomaPaper > 0) & !(mdlData.colDistribution[i].PreDiplomaPractice > 0) & !(mdlData.colDistribution[i].ProducingPractice > 0) & !(mdlData.colDistribution[i].TutorialPractice > 0) & !(mdlData.colDistribution[i].Visiting > 0)) { if ((mdlData.colDistribution[i].Subject.Subject == "Посещение занятий") || (mdlData.colDistribution[i].Subject.Subject == "Аспирантура")) { continue; } //добавляем строку dgSwap.Rows.Add(); //счётчик текущей строки увеличиваем на единицу curRow += 1; //дополнение к названию дисциплины Addition = "("; //Если есть лекционные часы if (mdlData.colDistribution[i].Lecture > 0) { //пишем про наличие лекции Addition += "лк,"; } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть практические часы if (mdlData.colDistribution[i].Practice > 0) { //пишем про наличие практических Addition += "пр,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть лабораторные часы if (mdlData.colDistribution[i].LabWork > 0) { //пишем про наличие лабораторных Addition += "лб,"; } } //Если уже дописали вид нагрузки, то более ничего не пишем if (!(Addition.EndsWith(","))) { //Если есть курсовой проект if (mdlData.colDistribution[i].KursProject > 0) { //пишем про наличие курсового проекта Addition += "к/пр,"; } } //Убираем запятую if (Addition.EndsWith(",")) { Addition = Addition.Substring(0, Addition.Length - 1); } //Закрываем скобку Addition += ")"; //Если внутри скобок пустота, то if (Addition == "()") { //убираем скобки Addition = ""; } //В номер по порядку вписываем значение счётчика dgSwap[0, curRow].Value = curRow.ToString(); //Вписываем название дисциплины с дополнением dgSwap[1, curRow].Value = mdlData.colDistribution[i].Subject.Subject.ToString() + " " + Addition; //Название группы с номером курса if (!(mdlData.colDistribution[i].Speciality == null) & !(mdlData.colDistribution[i].KursNum == null)) { dgSwap[2, curRow].Value = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString() + "-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } else { if (!(mdlData.colDistribution[i].Speciality == null)) { dgSwap[2, curRow].Value = mdlData.colDistribution[i].Speciality.ShortInstitute.ToString(); } else { if (!(mdlData.colDistribution[i].KursNum == null)) { dgSwap[2, curRow].Value = "???-" + mdlData.colDistribution[i].KursNum.Kurs.ToString(); } } } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества основного преподавателя FIO = mdlData.colDistribution[i].Lecturer.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[3, curRow].Value = Surname + " " + Name + Patronymic; //Разбираем строку для вывода отдельно //Фамилии, имени и отчества заменяющего преподавателя if (!(mdlData.colDistribution[i].Lecturer2 == null)) { FIO = mdlData.colDistribution[i].Lecturer2.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[4, curRow].Value = Surname + " " + Name + Patronymic; } //Разбираем строку для вывода отдельно //Фамилии, имени и отчества резервного преподавателя if (!(mdlData.colDistribution[i].Lecturer3 == null)) { FIO = mdlData.colDistribution[i].Lecturer3.FIO.Split(new char[] { ' ' }); if (FIO.GetLength(0) == 3) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = FIO[2].Substring(0, 1) + "."; } else if (FIO.GetLength(0) == 2) { Surname = FIO[0]; Name = FIO[1].Substring(0, 1) + "."; Patronymic = ""; } else if (FIO.GetLength(0) == 1) { Surname = FIO[0]; Name = ""; Patronymic = ""; } else { Surname = ""; Name = ""; Patronymic = ""; } dgSwap[5, curRow].Value = Surname + " " + Name + Patronymic; } } } } }