创建一个在C#中返回csv文件的方法

时间:2016-04-06 09:17:17

标签: c# csv

我已经制作了一个创建csv文件的方法。出于测试目的,我在文件系统上保存文件,但我不想这样做。

这是我的代码:

void ICreateNewCsv.CreateCsvForIndividuals(List<FormattedPerson> formattedPersons)
{
      //var CsvFilePath = "C:\\temp\\individuals.csv";
        var csv = new StringBuilder();
        var toExclude = new HashSet<string>
        {
            "ID",
            "SubSystemID",
            "System",
            "Component"
        };

        var props = typeof (FormattedPerson).GetProperties(BindingFlags.Public | BindingFlags.Instance).
                            Where(property => !toExclude.Contains(property.Name));

        var header = string.Join(", ", props.Select(p => p.Name.ToString()).ToArray());
            csv.AppendLine(header);

        for (var i = 0; i < formattedPersons.Count; i++)
        {
             var personTexts = formattedPersons
                 .Select(p => string.Join(",", p.Surname, p.FirstName, p.MiddleName, p.DateOfBirth,
                        p.NationalID, p.Gender, p.Address1, p.Address2, p.Address3,
                        p.City, p.Country, p.PostalCode, p.UniqueID));
             var joined = string.Join(Environment.NewLine, personTexts);

             csv.AppendLine(joined);
         }
         //File.AppendAllText(CsvFilePath, csv.ToString());
}

有没有办法返回csv文件而不是只有void方法?

1 个答案:

答案 0 :(得分:-1)

我建议将void替换为FileStream, 然后你将返回一个'System.IO.FileStream'对象,该对象可以包含所有类型(.CSV,但也包含Text或其他任何内容)。 在你调用方法的部分中,你只需按照你想要的方式解析/使用它:

FileStream objFile = ICreateNewCsv.CreateCsvForIndividuals(formattedPersons);