Замена слов по шаблону Word (C#)
Формулировка задачи:
Всем добрый вечер! Помогите плз. Есть Ворд файл: Спарвка1.doc. В нем расставлены метки,
например {name},{lastname}, нужно открыть его изменить на "Вася","Васильев" соответственно. Я нашел нужный класс, который это делает.И вот проблема:
- Заменяется только первая метка т.е. {name}, остальные почему-то нет.
Подскажите, как можно все это исправить. Нужно позарез!!!!!!!!!!!!!
Вызываем:
Листинг программы
- class myWord
- {
- private object internalWord;
- private object objCurDoc=null;
- private bool FAutoClose = false;
- private bool IsSuccesLast = false;
- public bool IsSucces
- {
- get { bool old = IsSuccesLast; IsSuccesLast = false; return old; }
- }
- public myWord (bool AutoClose)
- {
- FAutoClose = AutoClose;
- try
- {
- Type objClassType;
- objClassType = Type.GetTypeFromProgID("Word.Application");
- internalWord = Activator.CreateInstance(objClassType);
- IsSuccesLast = true;
- }
- catch
- {
- IsSuccesLast = false;
- }
- }
- ~myWord()
- {
- if ((FAutoClose) && (objCurDoc!=null))
- {
- this.CloseDoc();
- }
- }
- public bool CloseDoc()
- {
- try
- {
- //Close Active Document
- objCurDoc.GetType().InvokeMember("Close", BindingFlags.InvokeMethod,
- null, objCurDoc, null);
- objCurDoc = null;
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool ShowWord(bool is_visible)
- {
- try
- {
- object[] Parameters;
- Parameters = new Object[1];
- Parameters[0] = is_visible;
- internalWord.GetType().InvokeMember("Visible", BindingFlags.SetProperty,
- null, internalWord, Parameters);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool OpenFile(string FileName)
- {
- try
- {
- object objDocs_Late = internalWord.GetType().InvokeMember(
- "Documents", BindingFlags.GetProperty, null, internalWord, null);
- object[] Parameters;
- Parameters = new Object[1];
- Parameters[0] = FileName;
- objCurDoc = objDocs_Late.GetType().InvokeMember("Open",
- BindingFlags.InvokeMethod, null, objDocs_Late, Parameters);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool SaveDocument()
- {
- if (objCurDoc == null) return false;
- try
- {
- objCurDoc.GetType().InvokeMember("Save",
- BindingFlags.InvokeMethod, null, objCurDoc, null);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool FindReplace(string findtext, string replacetext)
- {
- try
- {
- object[] Parameters;
- object objSelection = internalWord.GetType().InvokeMember(
- "Selection", BindingFlags.GetProperty, null, internalWord, null);
- objSelection.GetType().InvokeMember("ClearFormatting",
- BindingFlags.InvokeMethod, null, objSelection, null);
- object objFind = objSelection.GetType().InvokeMember(
- "Find", BindingFlags.GetProperty, null, objSelection, null);
- Parameters = new Object[11];
- Parameters[0] = findtext; //find text
- Parameters[1] = false; //match case
- Parameters[2] = false; //match while word
- Parameters[3] = false; //match wild card
- Parameters[4] = false; //match sounds like
- Parameters[5] = false; //match all word forms
- Parameters[6] = true; //forward
- Parameters[7] = false; //wrap
- Parameters[8] = false; //format
- Parameters[9] = replacetext; //replace text
- Parameters[10] = true; //replace?
- objFind.GetType().InvokeMember("Execute",
- BindingFlags.InvokeMethod, null, objFind, Parameters);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool SaveAs(string filename)
- {
- if (objCurDoc == null) return false;
- object[] Parameters = new Object[1];
- Parameters[0] = filename; //find text
- try
- {
- objCurDoc.GetType().InvokeMember("SaveAs",
- BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool PrintPreview()
- {
- if (objCurDoc == null) return false;
- try
- {
- objCurDoc.GetType().InvokeMember("PrintPreview",
- BindingFlags.InvokeMethod, null, objCurDoc, null);
- return true;
- }
- catch
- {
- return false;
- }
- }
- public bool Print()
- {
- if (objCurDoc == null) return false;
- try
- {
- object[] Parameters = new Object[14];
- Parameters[0] = false; //in bacground?
- Parameters[0] = Missing.Value; //append
- Parameters[0] = 0; //all document wdPrintAllDocument
- Parameters[0] = Missing.Value; //Output file name
- Parameters[0] = Missing.Value; //From
- Parameters[0] = Missing.Value; //To page
- Parameters[0] = Missing.Value; //Item?
- Parameters[0] = 1; //Copies
- Parameters[0] = Missing.Value; //Pages
- Parameters[0] = Missing.Value; //Page type?
- Parameters[0] = false; //print to file
- Parameters[0] = false; //collate
- Parameters[0] = Missing.Value; //only for MAC
- Parameters[0] = Missing.Value; //Manual duplex
- Parameters[0] = Missing.Value; //collate
- objCurDoc.GetType().InvokeMember("PrintOutOld",
- BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
- return true;
- }
- catch
- {
- return false;
- }
- }
- }
Листинг программы
- myWord myW = new myWord(false);
- myW.OpenFile(Application.StartupPath + "\\Спарвка1.doc");
- myW.FindReplace("{name}", textBox1.Text);
- myW.FindReplace("{lastname}", textBox2.Text);
- myW.FindReplace("{date}", textBox3.Text);
- myW.FindReplace("{nomer_prikaza}", textBox4.Text)
Решение задачи: «Замена слов по шаблону Word (C#)»
textual
Листинг программы
- private void довідкаВиданаВТомуЩоВінвонаЯвляєтьчсяАспірантомДенноїАспірантуриToolStripMenuItem_Click(object sender, EventArgs e)
- {
- int i = dataGridView1.SelectedCells[0].RowIndex;
- string imya = Convert.ToString(dataGridView1.Rows[i].Cells[0].Value);
- string familiya = Convert.ToString(dataGridView1.Rows[i].Cells[1].Value);
- string otchestvo = Convert.ToString(dataGridView1.Rows[i].Cells[2].Value);
- string data_rozdeniya = Convert.ToString(dataGridView1.Rows[i].Cells[3].Value);
- string n_prikaza = Convert.ToString(dataGridView1.Rows[i].Cells[4].Value);
- string specialnost = Convert.ToString(dataGridView1.Rows[i].Cells[5].Value);
- string kafedra = Convert.ToString(dataGridView1.Rows[i].Cells[6].Value);
- string nauchniy_rukovoditel = Convert.ToString(dataGridView1.Rows[i].Cells[7].Value);
- string s_kakogo_g_v_aspir = Convert.ToString(dataGridView1.Rows[i].Cells[8].Value);
- Nik_Word ff = new Nik_Word();
- ff.OpenWord(Application.StartupPath + "\\NewDocument.doc");
- ff.ShowWord(true);
- ff.FindReplace("{imya}", imya);
- ff.FindReplace("{familiya}", familiya);
- ff.FindReplace("{otchestvo}", otchestvo);
- ff.FindReplace("{data_rozdeniya}", data_rozdeniya);
- ff.FindReplace("{n_prikaza}", n_prikaza);
- ff.FindReplace("{specialnost}", specialnost);
- ff.FindReplace("{kafedra}", kafedra);
- ff.FindReplace("{nauchniy_rukovoditel}", nauchniy_rukovoditel);
- ff.FindReplace("{s_kakogo_g_v_aspir}", s_kakogo_g_v_aspir);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д