using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Text; namespace Common { public enum OutputFormat { Excel, Plain, Csv, Html, ListView }; public class Row { public List Cells = new List(); public void AddCell(string text) { Cells.Add(text); } } public class Table { public List Rows = new List(); public void Clear() { Rows.Clear(); } public Row AddRow() { Row row = new Row(); Rows.Add(row); return row; } public string GetOutputTabs() { StringBuilder output = new StringBuilder(); foreach (var row in Rows) { output.AppendLine(string.Join("\t", row.Cells)); } return output.ToString(); } public string GetOutputPlain() { StringBuilder output = new StringBuilder(); foreach (var row in Rows) { output.AppendLine(string.Join(Environment.NewLine, row.Cells)); output.AppendLine(); output.AppendLine("==========================="); output.AppendLine(); } return output.ToString(); } public string GetOutputCsv() { StringBuilder output = new StringBuilder(); foreach (var row in Rows) { output.AppendLine(string.Join(",", row.Cells.Select(x => "\"" + x + "\""))); } return output.ToString(); } public string GetOutputHtml() { StringBuilder output = new StringBuilder(); output.AppendLine(""); foreach (var row in Rows) { output.AppendLine(""); } output.AppendLine("
" + string.Join("", row.Cells.Select(x => x.Replace(Environment.NewLine, "
"))) + "
"); return output.ToString(); } public void GetOutputListView(ListView listView) { foreach (var row in Rows) { if (listView.Columns.Count == 0 && row.Cells.Count > 0) { while (listView.Columns.Count < row.Cells.Count) listView.Columns.Add(row.Cells[listView.Columns.Count]); } else { while (listView.Columns.Count < row.Cells.Count) listView.Columns.Add(""); ListViewItem item = new ListViewItem(); int i = 0; foreach (var cell in row.Cells) { if (i == 0) item.Text = cell; else item.SubItems.Add(cell); i++; } listView.Items.Add(item); } } foreach (ColumnHeader column in listView.Columns) { column.Width = listView.Width / listView.Columns.Count; } } public string GetOutput(OutputFormat outputFormat) { if (outputFormat == OutputFormat.Excel) return GetOutputTabs(); else if (outputFormat == OutputFormat.Plain) return GetOutputPlain(); else if (outputFormat == OutputFormat.Csv) return GetOutputCsv(); else if (outputFormat == OutputFormat.Html) return GetOutputHtml(); else return ""; } } }