Добавить таблицу в текущей позиции с надстройкой слова - PullRequest
0 голосов
/ 15 января 2019

Я хочу добавить таблицу с надстройкой Word с данными из моей базы данных. Я сделал это успешно, но теперь у меня проблема с позицией стола. Я хочу разместить его именно там, где моя текущая позиция в документе Word. Но так всегда добавляется в начале. Кто-нибудь знает, как настроить диапазон, чтобы мое начальное значение всегда было моей текущей позицией? Это часть моего кода:

private void createTable_Click(object sender, EventArgs e) {
object start = 0, end = 0;
Word.Document document = Globals.ThisAddIn.Application.ActiveDocument; 
Word.Range rng = document.Range(ref start, ref end);

// Insert a title for the table and paragraph marks.
rng.InsertBefore("List"); 
rng.Font.Name = "Verdana"; 
rng.Font.Size = 16; 
rng.InsertParagraphAfter(); 
rng.InsertParagraphAfter(); 
rng.SetRange(rng.End, rng.End);

// Add the table.
rng.Tables.Add(document.Paragraphs[2].Range, 1, 7, ref missing, ref missing);

// Format the table and apply a style.
Word.Table tbl = document.Tables[1]; tbl.Range.Font.Size = 8;   
tbl.Borders[WdBorderType.wdBorderLeft].LineStyle =
  WdLineStyle.wdLineStyleSingle; 
tbl.Borders[WdBorderType.wdBorderRight].LineStyle =
  WdLineStyle.wdLineStyleSingle; 
tbl.Borders[WdBorderType.wdBorderTop].LineStyle =
  WdLineStyle.wdLineStyleSingle; 
tbl.Borders[WdBorderType.wdBorderBottom].LineStyle =
  WdLineStyle.wdLineStyleSingle; 
tbl.Borders[WdBorderType.wdBorderHorizontal].LineStyle =
  WdLineStyle.wdLineStyleSingle; 
tbl.Borders[WdBorderType.wdBorderVertical].LineStyle =
  WdLineStyle.wdLineStyleSingle;
tbl.Borders[WdBorderType.wdBorderBottom].Color = WdColor.wdColorBlack; tbl.Rows.Alignment = WdRowAlignment.wdAlignRowCenter; tbl.AutoFitBehavior(WdAutoFitBehavior.wdAutoFitWindow);

1 Ответ

0 голосов
/ 16 января 2019

При повторном чтении ... Для вставки в текущей позиции - если вы имеете в виду, где находится курсор:

Word.Range rngSel = wdApp.Selection.Range;
rngSel.Tables.Add(//params here);

В противном случае, если вы имеете в виду в конце информации, вставляемой посредством кодавместо этих двух строк

rng.InsertBefore("List"); 
rng.Font.Name = "Verdana"; 
rng.Font.Size = 16; 
rng.InsertParagraphAfter(); 
rng.InsertParagraphAfter(); 
rng.SetRange(rng.End, rng.End);

Use

rng.Text = "List\n\n"
rng.Font.Name = "Verdana"; 
rng.Font.Size = 16; 
rng.Collapse(WdCollapseDirection.wdCollapseEnd);

\n вставляет новый абзац (возврат каретки) и может быть включен как часть строки.

Присвоение текста непосредственно Range и работа с методом Collapse (на мой взгляд) немного более предсказуема, чем различные методы Insert.Некоторые из методов вставки включают в себя то, что вставлено в диапазон, другие - нет.

FWIW, когда неясно, в чем может быть проблема, это может помочь поставить rng.Select(); в ключевой точке кода и комментироватьоставшиеся строки, чтобы код заканчивался видимым диапазоном.Это часто может быть информативным относительно происхождения проблемы с диапазоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...