public XlsDefToWordDefConverter(XlsDef xlsDef, WordDocDef wordDef)
 {
     foreach (var area in xlsDef.Areas)
     {
         BuildArea(area, wordDef);
     }
 }
        public WordDocDef Build()
        {
            var xmlDoc = new XmlDocument();

            xmlDoc.Load(Stream);

            var wordDoc = new WordDocDef();

            var root = xmlDoc.DocumentElement;

            if (root != null && String.Equals(root.Name, "Document", StringComparison.OrdinalIgnoreCase))
            {
                BuildWordDoc(wordDoc, root);
            }
            return(wordDoc);
        }
        private void BuildArea(XlsArea area, WordDocDef wordDef)
        {
            var grid = area as XlsGrid;

            if (grid != null)
            {
                if (grid.Items.Count == 0)
                {
                    return;
                }

                //var tableBuilder = new TableBuilder(grid.GetRows(), grid.GetCols());
                var rowNo = 0;
                var table = wordDef.AddTable();
                table.Style = grid.Style;
                while (!grid.RowDatas.Eof())
                {
                    foreach (var gridRow in grid.Items.OfType <XlsRow>())
                    {
                        BuildTable(gridRow, table, rowNo, 0);
                    }
                    grid.RowDatas.Next();
                    rowNo++;
                }
                wordDef.AddParagraph(String.Empty);
                return;
            }
            foreach (var item in area.Items)
            {
                if (item.GetRows() == 0)
                {
                    wordDef.AddParagraph(String.Empty, item.Style);
                    continue;
                }

                BuildItem(item, wordDef);
            }
        }
        private void BuildItem(XlsItem item, WordDocDef wordDef)
        {
            var row = item as XlsRow;

            if (row != null)
            {
                if (row.Items.Count == 0)
                {
                    return;
                }

                if (row.Items.Count == 1 && row.Items[0] is XlsCell)
                {
                    var cell = (XlsCell)row.Items[0];
                    var val  = cell.GetValue();
                    wordDef.AddParagraph(val != null ? val.ToString() : String.Empty, cell.Style);
                    return;
                }

                /*var tableBuilder = new TableBuilder(row.GetRows(), row.GetCols());
                 * RowToTableInfo(row, tableBuilder, 0, 0);*/

                var table = wordDef.AddTable();
                table.Style = row.Style;
                BuildTable(row, table, 0, 0);
                return;
            }
            var grid = item as XlsGrid;

            if (grid != null)
            {
                if (grid.Items.Count == 0)
                {
                    return;
                }

                //var tableBuilder = new TableBuilder(grid.GetRows(), grid.GetCols());
                var rowNo = 0;
                var table = wordDef.AddTable();
                table.Style = grid.Style;
                while (!grid.RowDatas.Eof())
                {
                    foreach (var gridRow in grid.Items.OfType <XlsRow>())
                    {
                        BuildTable(gridRow, table, rowNo, 0);
                    }
                    grid.RowDatas.Next();
                    rowNo++;
                }
                wordDef.AddParagraph(String.Empty);
                return;
            }
            var area = item as XlsArea;

            if (area != null)
            {
                foreach (var subItem in area.Items)
                {
                    BuildItem(subItem, wordDef);
                }
            }
        }
        private void BuildWordDoc(WordDocDef wordDoc, XmlElement root)
        {
            var size = root.Attributes["size"];

            if (size != null)
            {
                if (String.Equals(size.Value, "A5", StringComparison.OrdinalIgnoreCase))
                {
                    wordDoc.A5();
                }
                if (String.Equals(size.Value, "A4", StringComparison.OrdinalIgnoreCase))
                {
                    wordDoc.A4();
                }
                if (String.Equals(size.Value, "A3", StringComparison.OrdinalIgnoreCase))
                {
                    wordDoc.A3();
                }
            }
            var orientation = root.Attributes["orientation"];

            if (orientation != null)
            {
                if (String.Equals(orientation.Value, "portrait", StringComparison.OrdinalIgnoreCase))
                {
                    wordDoc.Portrait();
                }
                if (String.Equals(orientation.Value, "landscape", StringComparison.OrdinalIgnoreCase))
                {
                    wordDoc.Landscape();
                }
            }

            float marginFloat;
            var   margin = root.Attributes["left"];

            if (margin != null)
            {
                if (float.TryParse(margin.Value, out marginFloat))
                {
                    wordDoc.MarginLeft = marginFloat;
                }
            }
            margin = root.Attributes["top"];
            if (margin != null)
            {
                if (float.TryParse(margin.Value, out marginFloat))
                {
                    wordDoc.MarginTop = marginFloat;
                }
            }
            margin = root.Attributes["right"];
            if (margin != null)
            {
                if (float.TryParse(margin.Value, out marginFloat))
                {
                    wordDoc.MarginRight = marginFloat;
                }
            }
            margin = root.Attributes["bottom"];
            if (margin != null)
            {
                if (float.TryParse(margin.Value, out marginFloat))
                {
                    wordDoc.MarginBottom = marginFloat;
                }
            }

            SetSectionStyle(root);
            _paragraphCount = 0;
            BuildSections(wordDoc, root);
        }
Example #6
0
 public WordDocBuilder(WordDocDef def)
 {
     Def    = def;
     _style = new ContentStyle(def.Style);
 }