2013-03-01 2 views
1

Я разрабатываю консольное приложение .Net, которое создает документ Word.
Проект моей Visual Studio имеет ссылку на сборку Microsoft.Office.Interop.Word.Написание программных строк текста в ячейке Word

Я хочу создать ячейку таблицы.
Я хочу написать две строки текста в ячейке.
Первая строка должна быть жирной.

Вот мой код:

l_table = l_range.Tables.Add(l_range, 1, 1); 
l_table.Borders.Enable = 0; 
l_table.Rows.AllowBreakAcrossPages = 0; 

l_cellRange = l_table.Cell(1, 1).Range; 
l_cellRange.Text = "First Line"; 
l_cellRange.Bold = 1; 

l_cellRange.InsertParagraphAfter(); 
l_cellRange.Collapse(WdCollapseDirection.wdCollapseEnd); 
l_cellRange.Text = "Second Line"; 
l_cellRange.Bold = 1; 

Следующая строка кода вызывает исключение: l_cellRange.Text = "Вторая линия";
Сообщение об исключении: отказ от действия в конце строки

Может кто-нибудь объяснить мне, что не так с моим кодом?

+1

Если вы только начинаете с создания документов Word - я советую вам пойти по другому пути - создайте слова docs из XMLs вместо прямого управления процессом Word. У Google Search больше информации, но вы можете начать с этой статьи: http://www.codeproject.com/Articles/15004/Create-simple-Word-2007-documents-without-needing – kape123

ответ

3

Вам не позвоните Range.MoveEnd().

В поле MSDN documentation on Range.InsertParagraphAfter диапазон расширяется, чтобы включить новый абзац, когда вы вставляете абзац.

Затем, когда вы сбрасываете диапазон, который уже включает новый абзац, вы перемещаете начальное и конечное положения диапазона до после знака окончания абзаца. MSDN's article on Range.Collapse конкретно упоминает этот эффект и как его исправить.

Короче говоря, вам нужно вставить MoveEnd() после вызова Collapse():

l_cellRange.Collapse(WdCollapseDirection.wdCollapseEnd); 
l_cellRange.MoveEnd(WdUnits.wdCharacter, -1); 
l_cellRange.Text = "Second Line"; 

Это переместит начальный и конечный диапазон позиции только до знака абзаца конца и позволяют вставлять текст, как ожидалось.

Сказав это, я согласен с kape123. Создание документа через XML является более устойчивым способом.

Смежные вопросы