【问题标题】:Make a method that returns csv file in C#在 C# 中创建一个返回 csv 文件的方法
【发布时间】:2016-04-06 09:17:17
【问题描述】:

我已经创建了一个创建 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 方法?

【问题讨论】:

  • stringreturn csv.ToString();替换void
  • 嗯,你想返回什么?文件的内容?指向文件的指针?
  • 这看起来像是相当糟糕的 CSV 转换。当您发现您的数据中已经包含逗号时会发生什么?
  • @nemo_87:“返回文件”是什么意思?你想要它的位置(路径)吗?还是它的内容?
  • @nemo_87:文件只是存储在文件系统中的数据。您提到的微服务要么直接接受数据,要么想从文件中读取数据。在第一种情况下,您只需将数据 (return csv.ToString()) 传递给它,无需创建文件。在第二种情况下,您创建一个文件并将其位置(路径或 url)传递给微服务,然后微服务继续读取该文件以获取数据。

标签: c# csv


【解决方案1】:

我建议将void 替换为FileStream, 那么您将返回一个 'System.IO.FileStream' 对象,该对象可以具有所有内容的类型(.CSV 也可以是文本或其他任何内容)。 比你只需要在调用方法的部分以你喜欢的方式解析/使用它:

FileStream objFile = ICreateNewCsv.CreateCsvForIndividuals(formattedPersons);

【讨论】:

  • File 是一个静态类,所以你不能实例化它。您可能打算使用 FileStream 类。话又说回来,这与返回实际的 csv 内容相同,因此也可以跳过创建文件的步骤。
  • 因此这是唯一的方法,至少我可以想到返回它,除非他使用一些外部库。
  • 问题是“返回文件”在这种情况下是一个模棱两可的短语,因此在没有澄清的情况下,不清楚 OP 真正需要什么。
猜你喜欢
  • 1970-01-01
  • 2017-11-29
  • 2012-10-23
  • 2017-11-05
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多