CSharp · Console
using System;
using ChoETL;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Program
{
public static void Main()
{
string csv1 = @"col1, col2, col3
val1, val2, val3
val11, val21, val31";
string csv2 = @"col1, col3
val4, val5
val41, val51";
string csv3 = @"col1, col4
val6, val7
val61, val71";
ChoCSVRecordConfiguration config = null;
List<object> items = new List<object>();
using (var r1 = ChoCSVReader.LoadText(csv1).WithFirstLineHeader())
{
using (var r2 = ChoCSVReader.LoadText(csv2).WithFirstLineHeader())
{
using (var r3 = ChoCSVReader.LoadText(csv3).WithFirstLineHeader())
{
items.Add(r1.First());
items.Add(r2.First());
items.Add(r3.First());
}
}
}
StringBuilder csv = new StringBuilder();
using (var w = new ChoCSVWriter(csv)
.WithFirstLineHeader()
.WithMaxScanRows(5)
.ThrowAndStopOnMissingField(false)
)
{
w.Write(items);
//Capture configuration for later use to merge CSV files
config = w.Configuration;
}
using (var r1 = ChoCSVReader.LoadText(csv1).WithFirstLineHeader())
{
using (var r2 = ChoCSVReader.LoadText(csv2).WithFirstLineHeader())
{
using (var r3 = ChoCSVReader.LoadText(csv3).WithFirstLineHeader())
{
//use the captured configuration object for merging CSV file
using (var w = new ChoCSVWriter(Console.Out, config)
.WithFirstLineHeader()
)
{
w.Write(Enumerable.Concat(r1, r2).Concat(r3));
}
}
}
}
}
}