Я собрал простое приложение C# Winforms, которое запрашивает данные AS400 на основе пользовательских критериев и возвращает результаты в элементе управления ListView. В Button_Click() я сохраняю Заголовки и Данные в файле .txt. Ниже я пытаюсь использовать этот .txt-файл в качестве источника данных для документа Word слияния.Программа зависает в oWord.Documents.Open (oTemplatePath)?
Когда код достигает oWrdDoc = oWord.Documents.Open(oTemplatePath);
, программа, похоже, просто замерзает. Ничего не происходит, и я не могу перейти к следующей строке. У кого-нибудь есть идеи о том, что я делаю неправильно?
public void Print(string docLoc, string docSource)
{
try
{
Word.Application oWord = new Word.Application();
Word.Document oWrdDoc = new Word.Document();
oWord.Visible = true;
Object oTemplatePath = "C:\\Users\NAME\\Desktop\\B-AIAddChgDual10-06-NEW.doc";
oWrdDoc = oWord.Documents.Open(oTemplatePath);
Object oMissing = System.Reflection.Missing.Value;
oWrdDoc.MailMerge.OpenDataSource("C:\\Users\\NAME\\Desktop\\Test2.txt", oMissing, oMissing, oMissing,
oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
oWrdDoc.MailMerge.Execute();
}
catch (Exception ex)
{
MessageBox.Show("Source:\t" + ex.Source + "\nMessage: \t" + ex.Message + "\nData:\t" + ex.Data);
}
finally
{
//
}
}
EDIT: Оказывается, я не имел новый экземпляр Word, набор для Visible = true
так, когда экземпляр воспитанного диалог, сообщающий файл был заблокирован для редактирования (по себе ???) это было предлагая мне открыть версию «Только для чтения», которую ранее я не мог видеть, так как она выглядела так, как будто все было заморожено в процессе обработки. Я изменил свой код выше, чтобы отразить изменения.
Любые идеи, почему я заблокирован из своего собственного файла и как предотвратить это?
Это диалоги, которые я получаю после принятия открытой для чтения всего документа (в порядке убывания):
После выбора, как замените поля выше:
Оригинал Mail Merge Fields:
После личных Подборки: '!'
Как рассказать Применение Слово использовать как разделитель полей в моем коде C#?
Также, как я могу продолжить диалог? Я предполагаю, что получаю каждый из них из-за моего источника данных, который не содержит полей, соответствующих полям, указанным как поля слияния писем?
Вот мой Mail Merge Fields:
-fuldate -sys -memno -name -address1 -address2 -address3 -sal
А вот мои разделителями поля из файла .txt DataSource:
memno! name! addr1! addr2! city! state! zip! o ld_addr1! old_addr2! old_city! OLD_STATE!old_zip
Какая версия MS- Офис, который вы используете? –
2010. Решенная начальная проблема, если вы хотите просмотреть мой EDIT. –