Замена слов по шаблону 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);
        }

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


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

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

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