Я пытаюсь создать около 600 отчетов в Microsoft Word Word. Документы заполняются данными из базы данных и изображениями, найденными на локальном диске. Я выяснил, что я мог бы создать проект Word Template в visual studio 2010 и запрограммировать шаблон, чтобы при вводе единственного значения (id-number) он автоматически заполнял весь документ.Как создать текстовые документы программным путем из шаблона
Я вполне уверен, что это возможно. единственная проблема. Как мне перебирать все записи в базе данных, открывать новый документ на основе шаблона и устанавливать значение 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");
Тогда EventHandler на моем шаблоне на BeforeSave заполняет документ, основанный на тексте в MyCCTitle названием объекта.
это было бы излишним за то, что он пытается достичь, Word автоматизации/Interop гораздо проще сделать для этого сценария. – BrokenGlass 2010-11-29 13:44:05
Overkill? Не за что. OpenXML SDK с легкостью работает и предназначен именно для этого. Вам не нужно, чтобы Word был установлен на вашем сервере при выполнении автоматизации слова/взаимодействия? С OpenXML вы этого не делаете. – 2010-11-29 13:58:27
Плюс я хочу добавить комментарий Moontear, формат OpenXML - это просто XML так быстро, что он пытается сделать (создавая 600 документов) – Shuwaiee 2010-11-29 14:40:29