среда, 23 мая 2012 г.

Split (merge) table cell docx using ooxml sdk C# with the same text

var tables = mainDocumentPart.Document.Body.Elements<Table>().ToList();


var rows = tables[1].Elements<TableRow>().ToArray();

            var wasRestart = false;

            for (int i = 0; i < rows.Length - 1; i++)
            {
                if (rows[i].Elements<TableCell>().ElementAt(1).Elements<Paragraph>().First().Elements<Run>().First().Elements<Text>().First().Text ==
                   rows[i + 1].Elements<TableCell>().ElementAt(1).Elements<Paragraph>().First().Elements<Run>().First().Elements<Text>().First().Text)
                {
                    rows[i].Elements<TableCell>().ElementAt(1).TableCellProperties.VerticalMerge = new VerticalMerge() { Val = wasRestart ? MergedCellValues.Continue : MergedCellValues.Restart };
                    rows[i + 1].Elements<TableCell>().ElementAt(1).TableCellProperties.VerticalMerge = new VerticalMerge();

                    rows[i].Elements<TableCell>().ElementAt(4).TableCellProperties.VerticalMerge = new VerticalMerge() { Val = wasRestart ? MergedCellValues.Continue : MergedCellValues.Restart };
                    rows[i + 1].Elements<TableCell>().ElementAt(4).TableCellProperties.VerticalMerge = new VerticalMerge();

                    wasRestart = true;
                }
                else
                {
                    wasRestart = false;
                }
            }

Комментариев нет:

Отправить комментарий