public StringBuilder DelimitedRow(StringBuilder sb, List<Field> datacols, string delim, SpreadSheetLayout ssl) { bool isFirst = true; datacols.OrderBy(d => d.OutputOrder).ToList().ForEach(d => { try { string val = null; switch (d.fldType) { case FieldType.column: val = Cells.ContainsKey(d.OutputOrder) ? Cells[d.OutputOrder].Value ?? "" : ""; break; case FieldType.cell: case FieldType.fileName: case FieldType.filePath: var df = this.Sheet.sLayout.matchData.fldCellMap.fldmaps.FirstOrDefault(fm => fm.field.OutputOrder == d.OutputOrder); val = (df != null ? df.Value ?? "" : ""); break; } sb.Append((isFirst ? "" : delim) + val); isFirst = false; } catch (Exception ex) { Log.New.Msg(ex); } }); ssl.sLayouts.Where(sl => sl.sheetType == SheetType.CommonData).ToList().ForEach(sl => { sl.matchData.fldCellMap.fldmaps.OrderBy(fm => fm.field.OutputOrder).ToList().ForEach(fm => { sb.Append(delim); sb.Append(fm.Value ?? ""); }); }); Cells.Clear(); return sb; }
public string GetColumnHeaders(StringBuilder sb, string fldDelimiter, string rowDelimieter, SpreadSheetLayout ssl) { bool isFirst = true; foreach (var c in sLayout.wsLayout.fields) { if (!isFirst) sb.Append(fldDelimiter); sb.Append(c.Name); isFirst = false; } var fldtypes = new List<FieldType> { FieldType.cell, FieldType.fileName, FieldType.filePath }; ssl.sLayouts.Where(sl => sl.sheetType == SheetType.CommonData).ToList().ForEach(sl => { sl.wsLayout.fields.OrderBy(f => f.OutputOrder).Where(f => fldtypes.Contains(f.fldType)).ToList().ForEach(f => { sb.Append(fldDelimiter); sb.Append(f.Name); }); }); sb.Append(rowDelimieter); return sb.ToString(); }
public void Write(SpreadSheetLayout ssl) { if (Rows == null) return; string fn = $"{sLayout.wsLayout.OutputFileName}_{sLayout.wsLayout.dst.timeStamp.ToString("yyyyMMdd_HHmmss")}.txt"; string fp = Path.Combine(sLayout.wsLayout.dst.RootFolder, fn); StringBuilder sb = new StringBuilder(); if (!File.Exists(fp)) this.GetColumnHeaders(sb, sLayout.wsLayout.fldDelim, sLayout.wsLayout.recDelim, ssl); this.GetDelimitedRows(sb, sLayout.wsLayout.fldDelim, sLayout.wsLayout.recDelim, ssl); File.AppendAllText(fp, sb.ToString()); }
public StringBuilder GetDelimitedRows(StringBuilder sb, string fldDelimiter, string rowDelimiter, SpreadSheetLayout ssl) { Rows.ToList().ForEach(r => { r.Value.DelimitedRow(sb, sLayout.wsLayout.fields, fldDelimiter, ssl); sb.Append(rowDelimiter); }); Rows.Clear(); return sb; }