在CSV文件中写入C#对象列表
我有一个C#对象有8个大小为200的数组元素。我需要将这些数组打印到相应标签上的CSV文件中。 数据可能包含string,int和double。
例如:
时间1时间2日时间4时间4时间5时间6时间7 1 5 9 Mon 7.0 8 9 5 NA 2 3 3 。 。 200 200 200 Sun 200 200 200 200 200
哎呀,time1等是标签(Header)数据(8个列表有200个元素)应该在这些标签下写入。 感谢您的回复!
您可以编写一个通用函数来编写对象:
public void WriteCSV(IEnumerable 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)))); } } }
用作:
var people = new List { new Person("Matt", "Abbott"), new Person("John Smith") }; WriteCSV(people, @"C:\people.csv");
可能输出:
Forename, Surname Matt", Abbott" John", Smith"
假设您的数据都不需要逗号转义,这应该给您一个大致的想法:
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))));