а также
аюсь создать около 600 отчетов в Microsoft Office Word. Документы заполняются данными из базы данных, а изображения находятся на локальном диске. Я понял, что мог бы создать проект Word Template в Visual Studio 2010 и запрограммировать шаблон так, чтобы при вводе одного значения (id-номер) он автоматически заполнял весь документ.
Я совершенно уверен, что это возможно. Единственная проблема Как мне просмотреть все записи в базе данных, открыть новый документ на основе шаблона и установить значение id?
for(int i = 0; i < idnumbers.Count(); i++)
{
Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Add(@"C:\..\WordGenerator\bin\Debug\WordTemplate.dotx");
//input the id-number below: HOW??
doc.SaveAs(FileName: @"c:\temp\test.docx");
}
Приложение должно запускаться только один раз, генерируя отчеты, и оно не должно быть быстрым. Это просто должно быть легко развиваться.
Проблема здесь в том, что кажется, что объект DocumentBase недоступен за пределами проекта Word. Заменяющий Microsoft.Office.Interop.Word.Document не имеет такой функциональности, как SelectContentControlsByTitle, которая позволяет мне находить и устанавливать мои ContentControls. И это именно то, что мне нужно сделать ..
Вот как теперь выглядит мой код для вставки текста в мое поле: Word.Application app = new Word.Application ();
Word.Document doc = app.Documents.Add(@"C:\..\test.dotx");
foreach (Word.ContentControl cc in doc.SelectContentControlsByTitle("MyCCTitle"))
{
cc.Range.Text += "1234";
}
doc.SaveAs(FileName: @"c:\temp\test.docx");
Затем обработчик событий в моем шаблоне BeforeSave заполняет документ на основе текста в объекте с названием MyCCTitle.