Example #1
0
        //Горизонтальная вставка данных в таблицу, пока не отличается от вертикальной, потом исправлю
        private static void AddToTableHorizontal(MainDocumentPart doc, int table_number, List<List<string>> data)
        {
            Table table = doc.Document.Body.Elements<Table>().ElementAt(table_number);
            // строка-образец
            TableRow ltr = table.Elements<TableRow>().Last();
            foreach (var item in data)
            {
                var tr = new TableRow();
                int j = 0;
                int i = 0;
                foreach (var val in item)
                {
                    // получаем форматирование очередной ячейки в строке-образце
                    TableCell template_cell = ltr.Elements<TableCell>().ElementAt(j);
                    j++;
                    Paragraph template_paragraph = template_cell.Elements<Paragraph>().First();
                    ParagraphMarkRunProperties template_run = template_paragraph.ParagraphProperties.Elements<ParagraphMarkRunProperties>().First();

                    var tc = new TableCell();
                    Paragraph new_paragraph = new Paragraph();
                    Run new_run = new Run();

                    // устанавливаем форматирование новой ячейки
                    new_paragraph.Append(template_paragraph.ParagraphProperties.CloneNode(true));
                    new_run.Append(template_run.CloneNode(true));
                    new_paragraph.Append(new_run);
                    tc.Append(new_paragraph);
                    InsertTableText(new_run, val);
                    tr.Append(tc);
                }
                i++;
                table.Append(tr);
            }
            table.RemoveChild(table.Elements<TableRow>().ElementAt(1));
        }