Заполнение таблицы в 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)))))));
}
}
}