.NET 4.x Как заполнить форму MS Word из WPF или Windows Forms? - C#
Формулировка задачи:
как заполнить документ msWord через форму?
Документ строится к примеру таким образом:
Фамилия (данные из textBox1)
Имя (данные из textBox2)
Отчество (данные из textBox3)
Решение задачи: «.NET 4.x Как заполнить форму MS Word из WPF или Windows Forms?»
textual
Листинг программы
- using Word = Microsoft.Office.Interop.Word;
- using System.Reflection;
- namespace WindowsFormsApplication2
- {
- public partial class Form1 : Form
- {
- Word._Application application; //= new Word.Application();
- Word._Document document;
- Object missingObj = System.Reflection.Missing.Value;
- Object trueObj = true;
- Object falseObj = false;
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- WayWord();
- InsertText();
- }
- private void InsertText()
- {
- // обьектные строки для Word
- object strToFindObj = strToFind; //Что это? зачем?(по возможности объяснить)
- object replaceStrObj = replaceStr; //Что это? зачем?(по возможности объяснить)
- // диапазон документа Word
- Word.Range wordRange;
- //тип поиска и замены
- object replaceTypeObj;
- replaceTypeObj = Word.WdReplace.wdReplaceAll;
- // обходим все разделы документа
- for (int i = 1; i <= _document.Sections.Count; i++)
- {
- // берем всю секцию диапазоном
- wordRange = _document.Sections[i].Range;
- /*
- Обходим редкий глюк в Find, ПРИЗНАННЫЙ MICROSOFT, метод Execute на некоторых машинах вылетает с ошибкой "Заглушке переданы неправильные данные / Stub received bad data" Подробности: [url]http://support.microsoft.com/default.aspx?scid=kb;en-us;313104[/url]
- // выполняем метод поиска и замены обьекта диапазона ворд
- wordRange.Find.Execute(ref strToFindObj, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing, ref replaceStrObj, ref replaceTypeObj, ref wordMissing, ref wordMissing, ref wordMissing, ref wordMissing);
- */
- Word.Find wordFindObj = wordRange.Find;
- object[] wordFindParameters = new object[15] { strToFindObj, _missingObj, _missingObj, _missingObj, _missingObj, _missingObj, _missingObj, _missingObj, _missingObj, replaceStrObj, replaceTypeObj, _missingObj, _missingObj, _missingObj, _missingObj };
- wordFindObj.GetType().InvokeMember("Execute", BindingFlags.InvokeMethod, null, wordFindObj, wordFindParameters);
- }
- }
- private void WayWord()
- {
- //создаем обьект приложения word
- application = new Word.Application();
- // создаем путь к файлу
- Object templatePathObj = @"C:\Users\Evgeniy\Documents\Visual Studio 2013\Projects\WindowsFormsApplication2\WindowsFormsApplication2\Договор услуги (диагностика).docx"; ;
- // если вылетим не этом этапе, приложение останется открытым
- try
- {
- document = application.Documents.Add(ref templatePathObj, ref missingObj, ref missingObj, ref missingObj);
- }
- catch (Exception error)
- {
- document.Close(ref falseObj, ref missingObj, ref missingObj);
- application.Quit(ref missingObj, ref missingObj, ref missingObj);
- document = null;
- application = null;
- throw error;
- }
- application.Visible = true;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д