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

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

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

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

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

textual
Листинг программы
        private static void ReplaceTableContent(Table tableContainer, XElement xTable)
        {
            // Эти части будут оставлены
            var tableGrid = tableContainer.GetFirstChild<TableGrid>();
            var tableProperties = tableContainer.GetFirstChild<TableProperties>();
 
            // Ширина таблицы как суммарная ширина колонок
            var tableWidth = tableGrid.Elements<GridColumn>().Sum(x => Convert.ToInt32(x.Width));
 
            // Колонки
            var columnNames = xTable
                .Element("columns")
                .Elements()
                .Select(x => new { Path = x.Name, Text = x.Value });
 
            int columnWidth = Convert.ToInt32(Math.Floor((Convert.ToDouble(tableWidth) / Convert.ToDouble(columnNames.Count()))));
 
            // Замена списка колонок
            {
                tableGrid.RemoveAllChildren<GridColumn>();
                tableGrid.Append(columnNames.Select(x => new GridColumn() { Width = Convert.ToString(columnWidth) }));
            }
 
            // В первой строке заголовок
            {
                var firstRow = tableContainer.GetFirstChild<TableRow>();
                var firstCell = firstRow.GetFirstChild<TableCell>();
                var paragraph = firstCell.GetFirstChild<Paragraph>();
                var firstCellProperties = firstCell.GetFirstChild<TableCellProperties>();
                var firstCellSpan = firstCellProperties.GetFirstChild<GridSpan>();
 
                if (firstCellSpan == null)
                {
                    firstCellSpan = firstCellProperties.AppendChild(new GridSpan());
                }
 
                firstCellSpan.Val = columnNames.Count();
 
                paragraph.RemoveAllChildren();
                paragraph.Append(new Run(new Text((string)xTable.Element("caption"))));
            }
 
            // Перезапись значений в строках
            {
                var xRowset = xTable.Element("rowset");
                var firstRow = tableContainer.GetFirstChild<TableRow>();
                var row = firstRow;
 
                // Цикл по строкам в Xml
                foreach (var xRow in xRowset.Elements("row"))
                {
                    row = row.NextSibling<TableRow>();
 
                    if (row == null)
                    {
                        row = tableContainer.AppendChild(new TableRow());
                    }
 
                    // Очистка возможно имевшихся ячеек (вместе со свойствами)
                    row.RemoveAllChildren<TableCell>();
 
                    row.Append(
                        columnNames.Select(x =>
                            new TableCell(
                                new TableCellProperties(
                                    new TableCellWidth() { Width = Convert.ToString(columnWidth) }),
                                new Paragraph(
                                    new Run(
                                        new Text((string)xRow.Element(x.Path)))))));
                }
            }
        }

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


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

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

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