Esempio n. 1
0
        private void BuildTableSectionRows(WordTableSectionDef sectionDef, Table table, WordTableDef tableDef, ref bool firstRow)
        {
            foreach (var rowDef in sectionDef.GetRows())
            {
                //if (tableDef.Rows.ContainsKey(r))
                {
                    //var rowDef = tableDef.Rows[r];
                    var oldRowStyle = MergeStyle(rowDef.Style);
                    try
                    {
                        var row = firstRow ? table.Rows[0] : table.InsertRow();
                        firstRow = false;
                        for (var c = 0; c < tableDef.GetColCount(); c++)
                        {
                            if (rowDef.Cells.ContainsKey(c))
                            {
                                var cellDef      = rowDef.Cells[c];
                                var oldCellStyle = MergeStyle(cellDef.Style);
                                try
                                {
                                    var cellPara = AppendParagraph(/*table.Rows[r]*/ row.Cells[c]);
                                    //SetParagraphFormat(cellPara);

                                    foreach (var itemDef in cellDef.Items)
                                    {
                                        if (itemDef is WordContentItemDef)
                                        {
                                            AddParagraphContent(cellPara, (WordContentItemDef)itemDef);
                                        }
                                    }
                                }
                                finally
                                {
                                    SetStyle(oldCellStyle);
                                }
                            }
                            else
                            {
                                AppendParagraph(row.Cells[c]);
                            }
                        }
                    }
                    finally
                    {
                        SetStyle(oldRowStyle);
                    }
                }
            }
        }
Esempio n. 2
0
        private void BuildTable(WordTableDef tableDef, DocX document)
        {
            var oldStyle = MergeStyle(tableDef.Style);

            try
            {
                var table = document.InsertTable(1 /*tableDef.GetRowCount() + 1*/, tableDef.GetColCount());
                if (_style.HasBorders && _style.Borders == TableCellBorder.All)
                {
                    table.Design = TableDesign.TableGrid;
                }
                else
                {
                    table.Design = TableDesign.TableNormal;
                }
                table.AutoFit = tableDef.FitWidth ? AutoFit.Window : AutoFit.Contents;
                var firstRow = true;

                foreach (var sectionDef in tableDef.Sections)
                {
                    var def = sectionDef as WordTableRepeatSectionDef;
                    if (def != null)
                    {
                        var repeatSection   = def;
                        var oldSectionStyle = MergeStyle(def.Style);
                        try
                        {
                            if (repeatSection.ResetDatas)
                            {
                                var args = new DataSetResetEventArgs {
                                    DataSet = repeatSection.Datas
                                };
                                OnBeforeDataSetReset(args);
                                repeatSection.Datas.Reset();
                                OnAfterDataSetReset(args);
                            }

                            while (!repeatSection.Datas.Eof())
                            {
                                BuildTableSectionRows(def, table, tableDef, ref firstRow);
                                repeatSection.Datas.Next();
                            }
                        }
                        finally
                        {
                            SetStyle(oldSectionStyle);
                        }
                    }
                    else
                    {
                        var oldSectionStyle = MergeStyle(sectionDef.Style);
                        try
                        {
                            BuildTableSectionRows(sectionDef, table, tableDef, ref firstRow);
                        }
                        finally
                        {
                            SetStyle(oldSectionStyle);
                        }
                    }
//                for (var r = 0; r <= tableDef.GetRowCount(); r++)
                }
            }
            finally
            {
                SetStyle(oldStyle);
            }
        }