Замена слов по шаблону Word (C#)

Узнай цену своей работы

Формулировка задачи:

Всем добрый вечер! Помогите плз. Есть Ворд файл: Спарвка1.doc. В нем расставлены метки, например {name},{lastname}, нужно открыть его изменить на "Вася","Васильев" соответственно. Я нашел нужный класс, который это делает.И вот проблема: - Заменяется только первая метка т.е. {name}, остальные почему-то нет. Подскажите, как можно все это исправить. Нужно позарез!!!!!!!!!!!!!
Листинг программы
  1. class myWord
  2. {
  3. private object internalWord;
  4. private object objCurDoc=null;
  5. private bool FAutoClose = false;
  6. private bool IsSuccesLast = false;
  7. public bool IsSucces
  8. {
  9. get { bool old = IsSuccesLast; IsSuccesLast = false; return old; }
  10. }
  11. public myWord (bool AutoClose)
  12. {
  13. FAutoClose = AutoClose;
  14. try
  15. {
  16. Type objClassType;
  17. objClassType = Type.GetTypeFromProgID("Word.Application");
  18. internalWord = Activator.CreateInstance(objClassType);
  19. IsSuccesLast = true;
  20. }
  21. catch
  22. {
  23. IsSuccesLast = false;
  24. }
  25. }
  26. ~myWord()
  27. {
  28. if ((FAutoClose) && (objCurDoc!=null))
  29. {
  30. this.CloseDoc();
  31. }
  32. }
  33. public bool CloseDoc()
  34. {
  35. try
  36. {
  37. //Close Active Document
  38. objCurDoc.GetType().InvokeMember("Close", BindingFlags.InvokeMethod,
  39. null, objCurDoc, null);
  40. objCurDoc = null;
  41. return true;
  42. }
  43. catch
  44. {
  45. return false;
  46. }
  47. }
  48. public bool ShowWord(bool is_visible)
  49. {
  50. try
  51. {
  52. object[] Parameters;
  53. Parameters = new Object[1];
  54. Parameters[0] = is_visible;
  55. internalWord.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
  56. null, internalWord, Parameters);
  57. return true;
  58. }
  59. catch
  60. {
  61. return false;
  62. }
  63. }
  64. public bool OpenFile(string FileName)
  65. {
  66. try
  67. {
  68. object objDocs_Late = internalWord.GetType().InvokeMember(
  69. "Documents", BindingFlags.GetProperty, null, internalWord, null);
  70. object[] Parameters;
  71. Parameters = new Object[1];
  72. Parameters[0] = FileName;
  73. objCurDoc = objDocs_Late.GetType().InvokeMember("Open",
  74. BindingFlags.InvokeMethod, null, objDocs_Late, Parameters);
  75. return true;
  76. }
  77. catch
  78. {
  79. return false;
  80. }
  81. }
  82. public bool SaveDocument()
  83. {
  84. if (objCurDoc == null) return false;
  85. try
  86. {
  87. objCurDoc.GetType().InvokeMember("Save",
  88. BindingFlags.InvokeMethod, null, objCurDoc, null);
  89. return true;
  90. }
  91. catch
  92. {
  93. return false;
  94. }
  95. }
  96. public bool FindReplace(string findtext, string replacetext)
  97. {
  98. try
  99. {
  100. object[] Parameters;
  101. object objSelection = internalWord.GetType().InvokeMember(
  102. "Selection", BindingFlags.GetProperty, null, internalWord, null);
  103. objSelection.GetType().InvokeMember("ClearFormatting",
  104. BindingFlags.InvokeMethod, null, objSelection, null);
  105. object objFind = objSelection.GetType().InvokeMember(
  106. "Find", BindingFlags.GetProperty, null, objSelection, null);
  107. Parameters = new Object[11];
  108. Parameters[0] = findtext; //find text
  109. Parameters[1] = false; //match case
  110. Parameters[2] = false; //match while word
  111. Parameters[3] = false; //match wild card
  112. Parameters[4] = false; //match sounds like
  113. Parameters[5] = false; //match all word forms
  114. Parameters[6] = true; //forward
  115. Parameters[7] = false; //wrap
  116. Parameters[8] = false; //format
  117. Parameters[9] = replacetext; //replace text
  118. Parameters[10] = true; //replace?
  119. objFind.GetType().InvokeMember("Execute",
  120. BindingFlags.InvokeMethod, null, objFind, Parameters);
  121. return true;
  122. }
  123. catch
  124. {
  125. return false;
  126. }
  127. }
  128. public bool SaveAs(string filename)
  129. {
  130. if (objCurDoc == null) return false;
  131. object[] Parameters = new Object[1];
  132. Parameters[0] = filename; //find text
  133. try
  134. {
  135. objCurDoc.GetType().InvokeMember("SaveAs",
  136. BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
  137. return true;
  138. }
  139. catch
  140. {
  141. return false;
  142. }
  143. }
  144. public bool PrintPreview()
  145. {
  146. if (objCurDoc == null) return false;
  147. try
  148. {
  149. objCurDoc.GetType().InvokeMember("PrintPreview",
  150. BindingFlags.InvokeMethod, null, objCurDoc, null);
  151. return true;
  152. }
  153. catch
  154. {
  155. return false;
  156. }
  157. }
  158. public bool Print()
  159. {
  160. if (objCurDoc == null) return false;
  161. try
  162. {
  163. object[] Parameters = new Object[14];
  164. Parameters[0] = false; //in bacground?
  165. Parameters[0] = Missing.Value; //append
  166. Parameters[0] = 0; //all document wdPrintAllDocument
  167. Parameters[0] = Missing.Value; //Output file name
  168. Parameters[0] = Missing.Value; //From
  169. Parameters[0] = Missing.Value; //To page
  170. Parameters[0] = Missing.Value; //Item?
  171. Parameters[0] = 1; //Copies
  172. Parameters[0] = Missing.Value; //Pages
  173. Parameters[0] = Missing.Value; //Page type?
  174. Parameters[0] = false; //print to file
  175. Parameters[0] = false; //collate
  176. Parameters[0] = Missing.Value; //only for MAC
  177. Parameters[0] = Missing.Value; //Manual duplex
  178. Parameters[0] = Missing.Value; //collate
  179.  
  180. objCurDoc.GetType().InvokeMember("PrintOutOld",
  181. BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
  182. return true;
  183. }
  184. catch
  185. {
  186. return false;
  187. }
  188. }
  189. }
Вызываем:
Листинг программы
  1. myWord myW = new myWord(false);
  2. myW.OpenFile(Application.StartupPath + "\\Спарвка1.doc");
  3. myW.FindReplace("{name}", textBox1.Text);
  4. myW.FindReplace("{lastname}", textBox2.Text);
  5. myW.FindReplace("{date}", textBox3.Text);
  6. myW.FindReplace("{nomer_prikaza}", textBox4.Text)

Решение задачи: «Замена слов по шаблону Word (C#)»

textual
Листинг программы
  1.  private void довідкаВиданаВТомуЩоВінвонаЯвляєтьчсяАспірантомДенноїАспірантуриToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             int i = dataGridView1.SelectedCells[0].RowIndex;
  4.             string imya = Convert.ToString(dataGridView1.Rows[i].Cells[0].Value);
  5.             string familiya = Convert.ToString(dataGridView1.Rows[i].Cells[1].Value);
  6.             string otchestvo = Convert.ToString(dataGridView1.Rows[i].Cells[2].Value);
  7.             string data_rozdeniya = Convert.ToString(dataGridView1.Rows[i].Cells[3].Value);
  8.             string n_prikaza = Convert.ToString(dataGridView1.Rows[i].Cells[4].Value);
  9.             string specialnost = Convert.ToString(dataGridView1.Rows[i].Cells[5].Value);
  10.             string kafedra = Convert.ToString(dataGridView1.Rows[i].Cells[6].Value);
  11.             string nauchniy_rukovoditel = Convert.ToString(dataGridView1.Rows[i].Cells[7].Value);
  12.             string s_kakogo_g_v_aspir = Convert.ToString(dataGridView1.Rows[i].Cells[8].Value);
  13.  
  14.             Nik_Word ff = new Nik_Word();
  15.             ff.OpenWord(Application.StartupPath + "\\NewDocument.doc");
  16.             ff.ShowWord(true);
  17.             ff.FindReplace("{imya}", imya);
  18.             ff.FindReplace("{familiya}", familiya);
  19.             ff.FindReplace("{otchestvo}", otchestvo);
  20.             ff.FindReplace("{data_rozdeniya}", data_rozdeniya);
  21.             ff.FindReplace("{n_prikaza}", n_prikaza);
  22.             ff.FindReplace("{specialnost}", specialnost);
  23.             ff.FindReplace("{kafedra}", kafedra);
  24.             ff.FindReplace("{nauchniy_rukovoditel}", nauchniy_rukovoditel);
  25.             ff.FindReplace("{s_kakogo_g_v_aspir}", s_kakogo_g_v_aspir);
  26.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут