Вот что я хочу сделать:
- Откройте некоторую форму (возможно, у меня есть запись в vb или c # или что-то), введите некоторую информацию.
- Затем форма получает эту информацию и использует ее для получения дополнительной информации из базы данных.
- Удаляет всю эту информацию в "поля", которые я упорядочил в текстовом документе (использует логику сравнения строк, которую я могу указать для некоторых полей).
- Печатает документ word.
Каков наилучший способ получить такую функциональность?
ОТВЕТ: То, что сработало, было ответом @ Смура ниже, с некоторыми кодовыми модами.
object fileName = Application.StartupPath + "\\" + fileIdent + ".doc";
object readOnly = false;
object isVisible = true;
object missing = System.Reflection.Missing.Value;
// create instance of Word
Microsoft.Office.Interop.Word.ApplicationClass oWordApp = new Microsoft.Office.Interop.Word.ApplicationClass();
oWordApp.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone;
// create instance of Word document
Microsoft.Office.Interop.Word.Document oWordDoc = oWordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref readOnly,
ref missing, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing);
oWordDoc.Activate();
//Set all the fields in sheet.TopLabel
object oBookMark = "TopDescription";
oWordDoc.Bookmarks.get_Item(ref oBookMark).Range.Text = sheet.TopLabel.JobDescription;
.... Затем после вставки всех закладок:
//Print the sheet
oWordDoc.PrintOut(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing
, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
System.Threading.Thread.Sleep(1000);
//Close the file
//oWordDoc.Close(ref missing, ref missing, ref missing);
Object doNotSave = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;
oWordDoc.Close(ref doNotSave, ref missing, ref missing);
oWordApp.Quit(ref doNotSave, ref missing, ref missing);
Marshal.ReleaseComObject(oWordDoc);
Marshal.ReleaseComObject(oWordApp);
Примечание. Необходимо выполнить маршализацию приложения и документа, в противном случае процесс winword.exe будет работать.