为什么我不能从“ System.IO.StreamWriter”转换为“ CsvHelper.ISerializer”? [英] why cant i convert from 'System.IO.StreamWriter' to 'CsvHelper.ISerializer'?

查看:112
本文介绍了为什么我不能从“ System.IO.StreamWriter”转换为“ CsvHelper.ISerializer”?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试将人们的内容写入CSV文件,然后将其导出,但是我遇到了构建错误及其失败。错误是:

Trying to write the contents of people to a CSVfile and then export it, however i'm getting a build error and its failing. the error is:

无法从'System.IO.StreamWriter'转换为'CsvHelper.ISerializer'

不知道为什么会这样,除非我确定我以这种方式完成了很多次。

Not sure why this is happening unless as i'm certain i've done it this way loads of times.

private void ExportAsCSV()
{
    using (var memoryStream = new MemoryStream())
    {
        using (var writer = new StreamWriter(memoryStream))
        {
            using (var csv = new CsvHelper.CsvWriter(writer))
            {
                csv.WriteRecords(people);
            }

            var arr = memoryStream.ToArray();
            js.SaveAs("people.csv",arr);
        }
    }
}


推荐答案

版本13.0.0发生了重大变化。本地化存在很多问题,因此@JoshClose要求用户指定他们要使用的 CultureInfo 。现在,在创建 CsvReader CsvWriter 时,需要包含 CultureInfo https://github.com/JoshClose/CsvHelper/issues/1441

There was a breaking change with version 13.0.0. There have been many issues with localization, so @JoshClose is requiring users to specify the CultureInfo they want to use. You now need to include CultureInfo when creating CsvReader and CsvWriter. https://github.com/JoshClose/CsvHelper/issues/1441

private void ExportAsCSV()
{
    using (var memoryStream = new MemoryStream())
    {
        using (var writer = new StreamWriter(memoryStream))
        {
            using (var csv = new CsvHelper.CsvWriter(writer, System.Globalization.CultureInfo.CurrentCulture)
            {
                csv.WriteRecords(people);
            }

            var arr = memoryStream.ToArray();
            js.SaveAs("people.csv",arr);
        }
    }
}

注意: CultureInfo.CurrentCulture 是先前版本中的默认设置。

Note: CultureInfo.CurrentCulture was the default in previous versions.

考虑


  • CultureInfo.InvariantCulture -如果您同时控制写作和阅读 文件。这样,无论用户在计算机上使用哪种文化,它都将起作用。

  • CultureInfo.CreateSpecificCulture( en-US) -如果您需要它用于特殊文化,而与用户的文化无关。

  • CultureInfo.InvariantCulture - If you control both the writing and the reading of the file. That way it will work no matter what culture the user has on their computer.
  • CultureInfo.CreateSpecificCulture("en-US") - If you need it to work for a particular culture, independent of the user's culture.

这篇关于为什么我不能从“ System.IO.StreamWriter”转换为“ CsvHelper.ISerializer”?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆