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);
                }
            }
        }