I have a C# object having 8 array elements of size 200.I need to print these arrays into a CSV file on respective labels. Data might contain string,int and double.
Ex:
time time1 time2 Day time4 time4 time5 time6 time7 1 5 9 Mon 7.0 8 9 5 NA 2 3 3 . . 200 200 200 Sun 200 200 200 200 200
Oops, time1 etc are labels(Header) the data(8 lists having 200 elements) should write under these labels. Appreciate your response !
You could write a generic function to write the objects:
public void WriteCSV<T>(IEnumerable<T> items, string path) { Type itemType = typeof(T); var props = itemType.GetProperties(BindingFlags.Public | BindingFlags.Instance) .OrderBy(p => p.Name); using (var writer = new StreamWriter(path)) { writer.WriteLine(string.Join(", ", props.Select(p => p.Name))); foreach (var item in items) { writer.WriteLine(string.Join(", ", props.Select(p => p.GetValue(item, null)))); } } }
Used as:
var people = new List<Person> { new Person("Matt", "Abbott"), new Person("John Smith") }; WriteCSV(people, @"C:\people.csv");
Which might output:
Forename, Surname Matt", Abbott" John", Smith"
Assuming none of your data needs to have comma escaping, this should give you a general idea:
string[][] myArray = // your data string[] myHeaders = // your headers File.WriteAllText("somefile.csv", string.Join(Environment.NewLine, new[]{myHeaders}.Concat(myArray) .Select(line => string.Join(",", line))));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With