public IEnumerable <IDocument> Execute(IReadOnlyList <IDocument> inputs, IExecutionContext context) { return(inputs.AsParallel().Select(context, input => { try { Tabular.Csv csv = new Tabular.Csv() { Data = input.Content }; Tabular.Table table = Tabular.Csv.FromCsv(csv); StringBuilder builder = new StringBuilder(); int columnCount = table.First().Count; int[] columnSize = new int[columnCount]; foreach (var row in table.Rows) { for (int i = 0; i < row.Count; i++) { var cell = row[i]; columnSize[i] = Math.Max(columnSize[i], cell.Value.Length); } } bool firstLine = true; WriteLine(builder, columnSize); foreach (var row in table.Rows) { builder.Append("|"); for (int i = 0; i < columnSize.Length; i++) { builder.Append(" "); builder.Append(row[i].Value); builder.Append(' ', columnSize[i] - row[i].Value.Length + 1); builder.Append("|"); } builder.AppendLine(); WriteLine(builder, columnSize, this._firstLineHeader && firstLine); firstLine = false; } return context.GetDocument(input, builder.ToString()); } catch (Exception e) { Trace.Error($"An {e.ToString()} occurred ({input.SourceString()}): {e.Message}"); return null; } }).Where(x => x != null)); }
public IEnumerable <IDocument> Execute(IReadOnlyList <IDocument> inputs, IExecutionContext context) { return(inputs.AsParallel().Select(input => { try { Tabular.Csv csv = new Tabular.Csv() { Data = input.Content }; Tabular.Table table = Tabular.Csv.FromCsv(csv); StringBuilder builder = new StringBuilder(); bool firstLine = true; builder.AppendLine("<table>"); foreach (var row in table.Rows) { builder.AppendLine("<tr>"); foreach (var cell in row) { if (_firstLineHeader && firstLine) { builder.AppendLine($"<th>{cell.Value}</th>"); } else { builder.AppendLine($"<td>{cell.Value}</td>"); } } builder.AppendLine("</tr>"); firstLine = false; } builder.Append("</table>"); return context.GetDocument(input, builder.ToString()); } catch (Exception e) { Trace.Error($"An {e.ToString()} occurred ({input.Source}): {e.Message}"); return null; } }).Where(x => x != null)); }
public IEnumerable <IDocument> Execute(IReadOnlyList <IDocument> inputs, IExecutionContext context) { return(inputs.AsParallel().Select(input => { try { using (var stream = input.GetStream()) { Tabular.Table table = Tabular.Excel.ReadFrom(stream, Tabular.ExcelFormat.Excel2007); Tabular.Csv csv = Tabular.Csv.ToCsv(table); return context.GetDocument(input, csv.Data); } } catch (Exception e) { Trace.Error($"An {e.ToString()} occurred ({input.SourceString()}): {e.Message}"); return null; } }).Where(x => x != null)); }
public IEnumerable<IDocument> Execute(IReadOnlyList<IDocument> inputs, IExecutionContext context) { return inputs.AsParallel().Select(input => { try { Tabular.Csv csv = new Tabular.Csv() { Data = input.Content }; Tabular.Table table = Tabular.Csv.FromCsv(csv); StringBuilder builder = new StringBuilder(); bool firstLine = true; builder.AppendLine("<table>"); foreach (var row in table.Rows) { builder.AppendLine("<tr>"); foreach (var cell in row) { if (_firstLineHeader && firstLine) { builder.AppendLine($"<th>{cell.Value}</th>"); } else { builder.AppendLine($"<td>{cell.Value}</td>"); } } builder.AppendLine("</tr>"); firstLine = false; } builder.Append("</table>"); return context.GetDocument(input, builder.ToString()); } catch (Exception e) { Trace.Error($"An {e.ToString()} occurred ({input.SourceString()}): {e.Message}"); return null; } }).Where(x => x != null); }