Заполнение таблицы в Word - C#

Узнай цену своей работы

Формулировка задачи:

ПОМОГИТЕ ПОЖАЛУЙСТА! Столкнулся с задачей заполнения таблицы в word (подключил using Microsoft.Office.Interop.Word; using Word = Microsoft.Office.Interop.Word, может нужно еще что-то подключить для работы с таблицами?) . Далее нашел часть кода обратиться к нужной таблице по индексу,но проблема в том что он мне подкчеркивает Tables,почему не понимаю Word.Table newTable = this.Tables[1]; И самое главное как мне внести данные в таблицу саму переходя по ячейкам?Заранее благодарю Нашел ещё часть кода,но о5 же после this подчеркивание
Листинг программы
  1. var Wref = this.Application.ActiveDocument;
  2. Word.Range x = this.Application.Selection.Range;
  3. Wref.Tables.Add(rng, 4, 4, Type.Missing, Type.Missing);
  4. Wref.Tables[1].Cell(1, 1).Range.InsertAfter("v");

Решение задачи: «Заполнение таблицы в Word»

textual
Листинг программы
  1.         private static void ReplaceTableContent(Table tableContainer, XElement xTable)
  2.         {
  3.             // Эти части будут оставлены
  4.             var tableGrid = tableContainer.GetFirstChild<TableGrid>();
  5.             var tableProperties = tableContainer.GetFirstChild<TableProperties>();
  6.  
  7.             // Ширина таблицы как суммарная ширина колонок
  8.             var tableWidth = tableGrid.Elements<GridColumn>().Sum(x => Convert.ToInt32(x.Width));
  9.  
  10.             // Колонки
  11.             var columnNames = xTable
  12.                 .Element("columns")
  13.                 .Elements()
  14.                 .Select(x => new { Path = x.Name, Text = x.Value });
  15.  
  16.             int columnWidth = Convert.ToInt32(Math.Floor((Convert.ToDouble(tableWidth) / Convert.ToDouble(columnNames.Count()))));
  17.  
  18.             // Замена списка колонок
  19.             {
  20.                 tableGrid.RemoveAllChildren<GridColumn>();
  21.                 tableGrid.Append(columnNames.Select(x => new GridColumn() { Width = Convert.ToString(columnWidth) }));
  22.             }
  23.  
  24.             // В первой строке заголовок
  25.             {
  26.                 var firstRow = tableContainer.GetFirstChild<TableRow>();
  27.                 var firstCell = firstRow.GetFirstChild<TableCell>();
  28.                 var paragraph = firstCell.GetFirstChild<Paragraph>();
  29.                 var firstCellProperties = firstCell.GetFirstChild<TableCellProperties>();
  30.                 var firstCellSpan = firstCellProperties.GetFirstChild<GridSpan>();
  31.  
  32.                 if (firstCellSpan == null)
  33.                 {
  34.                     firstCellSpan = firstCellProperties.AppendChild(new GridSpan());
  35.                 }
  36.  
  37.                 firstCellSpan.Val = columnNames.Count();
  38.  
  39.                 paragraph.RemoveAllChildren();
  40.                 paragraph.Append(new Run(new Text((string)xTable.Element("caption"))));
  41.             }
  42.  
  43.             // Перезапись значений в строках
  44.             {
  45.                 var xRowset = xTable.Element("rowset");
  46.                 var firstRow = tableContainer.GetFirstChild<TableRow>();
  47.                 var row = firstRow;
  48.  
  49.                 // Цикл по строкам в Xml
  50.                 foreach (var xRow in xRowset.Elements("row"))
  51.                 {
  52.                     row = row.NextSibling<TableRow>();
  53.  
  54.                     if (row == null)
  55.                     {
  56.                         row = tableContainer.AppendChild(new TableRow());
  57.                     }
  58.  
  59.                     // Очистка возможно имевшихся ячеек (вместе со свойствами)
  60.                     row.RemoveAllChildren<TableCell>();
  61.  
  62.                     row.Append(
  63.                         columnNames.Select(x =>
  64.                             new TableCell(
  65.                                 new TableCellProperties(
  66.                                     new TableCellWidth() { Width = Convert.ToString(columnWidth) }),
  67.                                 new Paragraph(
  68.                                     new Run(
  69.                                         new Text((string)xRow.Element(x.Path)))))));
  70.                 }
  71.             }
  72.         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут