/// <summary> /// Write the specified table to the TextWriter. /// </summary> /// <param name="writer">The writer to write to</param> /// <param name="table">The table to write</param> /// <param name="outtype">Indicates the format to be produced</param> /// <param name="className">The class name of the generated html table</param> /// <param name="document">Document object if using MigraDoc to generate output, null otherwise </param> private static void WriteTable(TextWriter writer, DataTable table, OutputType outtype, string className, Document document) { bool showHeadings = className != "PropertyTable"; if (outtype == OutputType.html) { if (showHeadings) { writer.WriteLine("<table class='headered'>"); writer.Write("<tr>"); for (int i = 0; i < table.Columns.Count; i++) { writer.Write("<th"); if (i == 0) { writer.Write(" class='col1'"); } writer.Write(">" + table.Columns[i].ColumnName + "</th>"); } } else { writer.WriteLine("<table>"); } foreach (DataRow row in table.Rows) { bool titleRow = Convert.IsDBNull(row[0]); if (titleRow) { writer.Write("<tr class='total'>"); } else { writer.Write("<tr>"); } for (int i = 0; i < table.Columns.Count; i++) { string st; if (titleRow && i == 0) { st = "Total"; } else { st = row[i].ToString(); } writer.Write("<td"); if (i == 0) { writer.Write(" class='col1'"); } writer.Write(">"); writer.Write(st); writer.Write("</td>"); } writer.WriteLine("</tr>"); } writer.WriteLine("</table><br/>"); } else if (outtype == OutputType.rtf) { Table tabl = new Table(); tabl.Borders.Width = 0.75; foreach (DataColumn col in table.Columns) { Column column = tabl.AddColumn(Unit.FromCentimeter(18.0 / table.Columns.Count)); } if (showHeadings) { Row row = tabl.AddRow(); row.Shading.Color = Colors.PaleGoldenrod; tabl.Shading.Color = new Color(245, 245, 255); for (int i = 0; i < table.Columns.Count; i++) { Cell cell = row.Cells[i]; Paragraph paragraph = cell.AddParagraph(); if (i == 0) { paragraph.Format.Alignment = ParagraphAlignment.Left; } else { paragraph.Format.Alignment = ParagraphAlignment.Right; } paragraph.AddText(table.Columns[i].ColumnName); } } foreach (DataRow row in table.Rows) { bool titleRow = Convert.IsDBNull(row[0]); string st; Row newRow = tabl.AddRow(); for (int i = 0; i < table.Columns.Count; i++) { if (titleRow && i == 0) { st = "Total"; newRow.Format.Font.Color = Colors.DarkOrange; newRow.Format.Font.Bold = true; } else { st = row[i].ToString(); } Cell cell = newRow.Cells[i]; Paragraph paragraph = cell.AddParagraph(); if (!showHeadings) { cell.Borders.Style = BorderStyle.None; paragraph.Format.Alignment = ParagraphAlignment.Left; } else if (i == 0) { paragraph.Format.Alignment = ParagraphAlignment.Left; } else { paragraph.Format.Alignment = ParagraphAlignment.Right; } if (showHeadings && i == 0) { paragraph.AddFormattedText(st, TextFormat.Bold); } else { paragraph.AddText(st); } } } document.LastSection.Add(tabl); document.LastSection.AddParagraph(); // Just to give a bit of spacing } else { DataTableUtilities.DataTableToText(table, 0, " ", showHeadings, writer); } }