private void updatePlan(Dictionary <string, Object> keyValuePairs) { // Word.Application wordApp = new Word.Application(); Word.Document doc = wordApp.Documents.Open(documentPathPlan, ReadOnly: false); try { doc.Activate(); if (((string)(keyValuePairs["{id:kind}"])).Contains("Тренировк") || ((string)(keyValuePairs["{id:kind}"])).Contains("Самостояте") || ((string)(keyValuePairs["{id:kind}"])).Contains("Практическо")) { int countQuestions = 0; Dictionary <string, string> questions = (Dictionary <string, string>)(keyValuePairs["{id:questions}"]); for (int e = 1; e <= doc.Paragraphs.Count; e++) { if (doc.Paragraphs[e].Range.Text.Contains("{id:adjunct}")) { FindAndReplace(wordApp, "{id:adjunct}", "ПРИЛОЖЕННИЯ"); Word.Paragraph p = doc.Paragraphs[e]; p.Range.InsertParagraphAfter(); p = doc.Paragraphs.Add(p.Range); for (int i = 0; i < questions.Count; i++) { int a = i + 1; p.Range.Text = "Карточка - задание на изучение " + a + "-го вопроса.^l"; p.Range.InsertParagraphAfter(); p = doc.Paragraphs.Add(p.Range); } for (int i = 0; i < questions.Count; i++) { int counter = doc.Paragraphs.Count - 5 + i; doc.Paragraphs[counter].Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/Spravochnik.docx"))); KeyValuePair <string, string> question = questions.ElementAt(i); FindAndReplace(wordApp, "{id:questionName}", question.Key); FindAndReplace(wordApp, "{id:countAjunct}", i + 1); FindAndReplace(wordApp, "{id:questionDuration}", question.Value.Split(separator)[0]); if (questions.Count > 1) { countQuestions = 1; break; } } } //if(doc.Paragraphs[e].Range.Text.Trim().Replace("\r","").Replace("\a","").Replace("\n","").Equals("")&&countQuestions>0&&(countQuestions< questions.Count)) //{ // doc.Paragraphs[e].Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/Spravochnik.docx"))); // KeyValuePair<string, string> question = questions.ElementAt(countQuestions); // FindAndReplace(wordApp, "{id:questionName}", question.Key); // FindAndReplace(wordApp, "{id:countAjunct}", countQuestions + 1); // FindAndReplace(wordApp, "{id:questionDuration}", question.Value); // countQuestions++; //} //int q = 1; } } if (((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("полувз") || ((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("ПРО 3 ЧЕЛОВЕК СПРОСИТЬ КАК НАЗЫВАЕТСЯ")) { foreach (Word.Paragraph paragraph in doc.Paragraphs) { if (paragraph.Range.Text.Contains("{id:image}")) { if (((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("ПРО 3 ЧЕЛОВЕК СПРОСИТЬ КАК НАЗЫВАЕТСЯ")) { paragraph.Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/image2.docx"))); } else { paragraph.Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/image1.docx"))); } } } } FindAndReplace(wordApp, "{id:image}", ""); FindAndReplace(wordApp, "{id:adjunct}", ""); FindAndReplace(wordApp, "{id:name}", keyValuePairs["{id:name}"]); FindAndReplace(wordApp, "{id:theme}", keyValuePairs["{id:theme}"]); FindAndReplace(wordApp, "{id:themeName}", keyValuePairs["{id:themeName}"]); FindAndReplace(wordApp, "{id:lesson}", keyValuePairs["{id:lesson}"]); FindAndReplace(wordApp, "{id:lessonName}", keyValuePairs["{id:lessonName}"]); FindAndReplace(wordApp, "{id:kind}", keyValuePairs["{id:kind}"]); FindAndReplace(wordApp, "{id:method}", keyValuePairs["{id:method}"]); FindAndReplace(wordApp, "{id:duration}", keyValuePairs["{id:duration}"]); FindAndReplace(wordApp, "{id:place}", keyValuePairs["{id:place}"]); string methodical = (string)keyValuePairs["{id:methodical}"]; int k = 0; for (int i = 0; i < methodical.Length; i += 30) { if (i > 0) { try { FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(i + 1, 30) + "{id:methodical}"); } catch (Exception e) { break; } } else { FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(i, 30) + "{id:methodical}"); } k = i; } k += 30; FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(k + 1)); string literature = (string)keyValuePairs["{id:literature}"]; int l = 0; for (int i = 0; i < literature.Length; i += 30) { if (i > 0) { try { FindAndReplace(wordApp, "{id:literature}", literature.Substring(i + 1, 30) + "{id:literature}"); } catch (Exception e) { break; } } else { FindAndReplace(wordApp, "{id:literature}", literature.Substring(i, 30) + "{id:literature}"); } l = i; } l += 30; FindAndReplace(wordApp, "{id:literature}", literature.Substring(l + 1)); FindAndReplace(wordApp, "{id:technicalMeans}", keyValuePairs["{id:technicalMeans}"]); FindAndReplace(wordApp, "{id:intro}", keyValuePairs["{id:intro}"].ToString().Split(separator)[0]); FindAndReplace(wordApp, "{id:material}", keyValuePairs["{id:material}"]); FindAndReplace(wordApp, "{id:educationalQuestions}", keyValuePairs["{id:educationalQuestions}"]); FindAndReplace(wordApp, "{id:conclution}", keyValuePairs["{id:conclution}"].ToString().Split(separator)[0]); foreach (Word.Table table in doc.Tables) { Word.Range rangeTable = table.Range; foreach (Word.Row row in rangeTable.Rows) { foreach (Word.Cell cell in row.Cells) { Word.Range range = cell.Range; if (range.Text.Contains("{id:questions}")) { FindAndReplace(wordApp, "{id:questions}", ""); Word.Row temporary = row; int count = 1; foreach (KeyValuePair <string, string> question in (Dictionary <string, string>)keyValuePairs["{id:questions}"]) { Object oMissing = System.Reflection.Missing.Value; Word.Row newRow = table.Rows.Add(ref oMissing); newRow.Cells[1].Range.Text = "2." + count; newRow.Cells[2].Range.Text = question.Key; newRow.Cells[3].Range.Text = question.Value.Split(separator)[0]; Regex regex = new Regex("^ ?[1-9].*$"); string questionFull = ""; if (regex.IsMatch(question.Key)) { questionFull = "Учебный вопрос. " + question.Key + " " + question.Value.Split(separator)[0] + "\r\n"; } else { questionFull = "Учебный вопрос " + count + ". " + question.Key + " " + question.Value.Split(separator)[0] + "\r\n"; } int r = 0; for (int e = 0; e < questionFull.Length; e += 30) { if (e > 0) { try { FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(e, 30) + "{id:questionOfLesson}"); } catch (Exception q) { break; } } else { FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(e, 30) + "{id:questionOfLesson}"); } r = e; } r += 30; FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(r) + "{id:questionOfLesson}"); temporary = newRow; count++; } Object missing = System.Reflection.Missing.Value; Word.Row newRowENd = table.Rows.Add(ref missing); newRowENd.Cells[1].Range.Text = "3"; newRowENd.Cells[2].Range.Text = "Заключение"; newRowENd.Cells[3].Range.Text = (string)keyValuePairs["{id:conclution}"].ToString().Split(separator)[0] + " мин"; } else if (range.Text.Contains("{id:goal}")) { FindAndReplace(wordApp, "{id:goal}", ""); int count = 1; foreach (string goal in (List <string>)keyValuePairs["{id:goal}"]) { Object oMissing = System.Reflection.Missing.Value; Word.Row newRow = table.Rows.Add(ref oMissing); newRow.Cells[1].Range.Text = count + ""; newRow.Cells[2].Range.Text = goal; count++; } } } } } FindAndReplace(wordApp, "{id:questionOfLesson}", ""); WordAPI.SaveFile(doc); WordAPI.Close(doc); } catch (Exception e) { doc.Close(); new ExceptionWindow() .Show(); } }
public void updateDoc(Dictionary <string, Object> keyValuePairs) { Word.Application wordApp = new Word.Application(); Word.Document doc = wordApp.Documents.Open(documentPath, ReadOnly: false); try { doc.Activate(); if (((string)(keyValuePairs["{id:kind}"])).Contains("Тренировк") || ((string)(keyValuePairs["{id:kind}"])).Contains("Самостояте") || ((string)(keyValuePairs["{id:kind}"])).Contains("Практическо")) { int countQuestions = 0; for (int e = 1; e <= doc.Paragraphs.Count; e++) { if (doc.Paragraphs[e].Range.Text.Contains("{id:adjunct}")) { Dictionary <string, string> questions = (Dictionary <string, string>)(keyValuePairs["{id:questions}"]); FindAndReplace(wordApp, "{id:adjunct}", "ПРИЛОЖЕНИЯ"); countQuestions = questions.Count; Word.Paragraph p = doc.Paragraphs[e]; p.Range.InsertParagraphAfter(); p = p.Next(); for (int i = 0; i < questions.Count; i++) { p.Range.Text = (i + 1) + ". Карточка - задание на изучение " + (i + 1) + "-го вопроса."; p.Range.InsertParagraphAfter(); p = p.Next(); } } int q = 1; int countTables = doc.Tables.Count; if (doc.Paragraphs[e].Range.Text.Contains("{id:file")) { Word.Paragraph p = doc.Paragraphs[e]; p.Range.InsertParagraphAfter(); p.Next(); Dictionary <string, string> questions = (Dictionary <string, string>)(keyValuePairs["{id:questions}"]); int temp = Int32.Parse(doc.Paragraphs[e].Range.Text.Trim().Replace("\r", "").Replace("\a", "").Replace("\n", "").Substring(8, 1)); KeyValuePair <string, string> question; try { question = questions.ElementAt(temp - 1); } catch (Exception exception) { break; } p.Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/Spravochnik.docx"))); int z = 0; for (int i = 0; i < question.Key.Length; i += 30) { if (i > 0) { try { FindAndReplace(wordApp, "{id:questionName}", question.Key.Substring(i + 1, 30) + "{id:questionName}"); } catch (Exception qq) { break; } } else { FindAndReplace(wordApp, "{id:questionName}", question.Key.Substring(i, 30) + "{id:questionName}"); } z = i; } z += 30; FindAndReplace(wordApp, "{id:questionName}", question.Key.Substring(z + 1)); FindAndReplace(wordApp, "{id:countAjunct}", temp); FindAndReplace(wordApp, "{id:questionDuration}", question.Value.Split(separator)[0]); } int afterInsert = doc.Tables.Count; } } if (((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("полувз") || ((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("ПРО 3 ЧЕЛОВЕК СПРОСИТЬ КАК НАЗЫВАЕТСЯ")) { foreach (Word.Paragraph paragraph in doc.Paragraphs) { if (paragraph.Range.Text.Contains("{id:image}")) { if (((string)(keyValuePairs["{id:kind}"])).ToLower().Contains("ПРО 3 ЧЕЛОВЕК СПРОСИТЬ КАК НАЗЫВАЕТСЯ")) { paragraph.Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/image2.docx"))); } else { paragraph.Range.InsertFile(Path.GetFullPath(Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, @"../../../../../Resources/AdditionalDocs/image1.docx"))); } } } } FindAndReplace(wordApp, "{id:cardOfTask}", ""); FindAndReplace(wordApp, "{id:file1}", ""); FindAndReplace(wordApp, "{id:file2}", ""); FindAndReplace(wordApp, "{id:file3}", ""); FindAndReplace(wordApp, "{id:file4}", ""); FindAndReplace(wordApp, "{id:file5}", ""); FindAndReplace(wordApp, "{id:file6}", ""); FindAndReplace(wordApp, "{id:image}", ""); FindAndReplace(wordApp, "{id:name}", keyValuePairs["{id:name}"]); FindAndReplace(wordApp, "{id:theme}", keyValuePairs["{id:theme}"]); FindAndReplace(wordApp, "{id:themeName}", keyValuePairs["{id:themeName}"]); FindAndReplace(wordApp, "{id:lesson}", keyValuePairs["{id:lesson}"]); FindAndReplace(wordApp, "{id:lessonName}", keyValuePairs["{id:lessonName}"]); FindAndReplace(wordApp, "{id:kind}", keyValuePairs["{id:kind}"]); FindAndReplace(wordApp, "{id:method}", keyValuePairs["{id:method}"]); FindAndReplace(wordApp, "{id:duration}", keyValuePairs["{id:duration}"]); FindAndReplace(wordApp, "{id:place}", keyValuePairs["{id:place}"]); string methodical = (string)keyValuePairs["{id:methodical}"]; int k = 0; for (int i = 0; i < methodical.Length; i += 30) { if (i > 0) { try { FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(i + 1, 30) + "{id:methodical}"); } catch (Exception e) { break; } } else { FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(i, 30) + "{id:methodical}"); } k = i; } k += 30; FindAndReplace(wordApp, "{id:methodical}", methodical.Substring(k + 1)); string literature = (string)keyValuePairs["{id:literature}"]; int l = 0; for (int i = 0; i < literature.Length; i += 30) { if (i > 0) { try { FindAndReplace(wordApp, "{id:literature}", literature.Substring(i + 1, 30) + "{id:literature}"); } catch (Exception e) { break; } } else { FindAndReplace(wordApp, "{id:literature}", literature.Substring(i, 30) + "{id:literature}"); } l = i; } l += 30; FindAndReplace(wordApp, "{id:literature}", literature.Substring(l + 1)); FindAndReplace(wordApp, "{id:technicalMeans}", keyValuePairs["{id:technicalMeans}"]); string introTime = (keyValuePairs["{id:intro}"]).ToString().Split(separator)[0]; FindAndReplace(wordApp, "{id:intro}", introTime); string[] introQuestions = (keyValuePairs["{id:intro}"]).ToString().Split(separator)[1].Split(';'); for (int e = 0; e < introQuestions.Length - 1; e++) { FindAndReplace(wordApp, "{id:introQuestions}", introQuestions[e] + ";\r\n{id:introQuestions}"); } FindAndReplace(wordApp, "{id:introQuestions}", ""); FindAndReplace(wordApp, "{id:material}", keyValuePairs["{id:material}"]); FindAndReplace(wordApp, "{id:educationalQuestions}", keyValuePairs["{id:educationalQuestions}"]); string conclusionTime = (keyValuePairs["{id:conclution}"]).ToString().Split(separator)[0]; FindAndReplace(wordApp, "{id:conclution}", conclusionTime); string[] conclusionQuestions = (keyValuePairs["{id:conclution}"]).ToString().Split(separator)[1].Split(';'); for (int e = 0; e < conclusionQuestions.Length - 1; e++) { FindAndReplace(wordApp, "{id:conclutionsQuestions}", conclusionQuestions[e] + ";\r\n{id:conclutionsQuestions}"); } FindAndReplace(wordApp, "{id:conclutionsQuestions}", ""); foreach (Word.Table table in doc.Tables) { Word.Range rangeTable = table.Range; foreach (Word.Row row in rangeTable.Rows) { foreach (Word.Cell cell in row.Cells) { Word.Range range = cell.Range; if (range.Text.Contains("{id:questions}")) { FindAndReplace(wordApp, "{id:questions}", ""); Word.Row temporary = row; int count = 1; foreach (KeyValuePair <string, string> question in (Dictionary <string, string>)keyValuePairs["{id:questions}"]) { Object oMissing = System.Reflection.Missing.Value; Word.Row newRow = table.Rows.Add(ref oMissing); newRow.Cells[1].Range.Text = "2." + count; newRow.Cells[2].Range.Text = question.Key; newRow.Cells[3].Range.Text = question.Value.Split(separator)[0]; Regex regex = new Regex("^ ?[1-9].*$"); string questionFull = ""; if (regex.IsMatch(question.Key)) { questionFull = "Учебный вопрос. " + question.Key + " " + question.Value.Split(separator)[0] + ".\r\n"; } else { questionFull = "Учебный вопрос " + count + ". " + question.Key + " " + question.Value.Split(separator)[0] + ".\r\n"; } int r = 0; for (int e = 0; e < questionFull.Length; e += 30) { if (e > 0) { try { FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(e, 30) + "{id:questionOfLesson}"); } catch (Exception q) { break; } } else { FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(e, 30) + "{id:questionOfLesson}"); } r = e; } r += 30; FindAndReplace(wordApp, "{id:questionOfLesson}", questionFull.Substring(r) + "\r\n{id:contentOfQuestion}"); int w = 0; string temp = question.Value.Split(separator)[1]; if (temp.Length > 30) { for (int z = 0; z < temp.Length; z += 30) { if (z > 0) { try { FindAndReplace(wordApp, "{id:contentOfQuestion}", temp.Substring(z, 30) + "{id:contentOfQuestion}"); } catch (Exception q) { break; } } else { FindAndReplace(wordApp, "{id:contentOfQuestion}", temp.Substring(z, 30) + "{id:contentOfQuestion}"); } w = z; } FindAndReplace(wordApp, "{id:contentOfQuestion}", temp.Substring(w) + "\r\n{id:questionOfLesson}\r\n"); temporary = newRow; count++; } else { FindAndReplace(wordApp, "{id:contentOfQuestion}", temp.Substring(w) + "\r\n{id:questionOfLesson}\r\n"); count++; } } Object missing = System.Reflection.Missing.Value; Word.Row newRowENd = table.Rows.Add(ref missing); newRowENd.Cells[1].Range.Text = "3"; newRowENd.Cells[2].Range.Text = "Заключение"; newRowENd.Cells[3].Range.Text = (string)keyValuePairs["{id:conclution}"].ToString().Split(separator)[0] + " мин"; } else if (range.Text.Contains("{id:goal}")) { FindAndReplace(wordApp, "{id:goal}", ""); int count = 1; foreach (string goal in (List <string>)keyValuePairs["{id:goal}"]) { Object oMissing = System.Reflection.Missing.Value; Word.Row newRow = table.Rows.Add(ref oMissing); newRow.Cells[1].Range.Text = count + ""; newRow.Cells[2].Range.Text = goal; count++; } } } } } FindAndReplace(wordApp, "{id:adjunct}", ""); FindAndReplace(wordApp, "{id:questionOfLesson}", ""); WordAPI.SaveFile(doc); WordAPI.Close(doc); updatePlan(keyValuePairs); } catch (Exception e) { doc.Close(); new ExceptionWindow() .Show(); } }