internal static Table ParseTable(HtmlNode node)
        {
            Table table = new Table();
            if (node.Name.ToLower() != "table")
            {
                return table;
            }

            int row = 0;
            foreach (HtmlNode rowNode in node.Descendants("tr"))
            {
                int column = 0;
                foreach (HtmlNode cellNode in rowNode.Descendants().Where(c => c.Name.ToLower() == "th" || c.Name.ToLower() == "td"))
                {
                    table.AddItem(cellNode, row, column);
                    column++;
                }
                row++;
            }

            return table;
        }
 private void CreateTableContents(Table table, bool hasBorder)
 {
     int row = 0;
     foreach (TableRow tableRow in table.Rows)
     {
         int column = 0;
         foreach (TableCell tableCell in tableRow.Cells)
         {
             if (tableCell.Content != null)
             {
                 CreateTableCell(tableCell.Content, row, column, tableCell.IsHeader, tableCell.RowSpan, tableCell.ColSpan, hasBorder);
             }
             column++;
         }
         row++;
     }
 }