代码之家  ›  专栏  ›  技术社区  ›  asmgx

如何读取资源csv文件

  •  -1
  • asmgx  · 技术社区  · 3 年前

    我过去在应用程序中使用csv文件

    这是原始代码

            string csvFile = Directory.GetCurrentDirectory() + @"\data\" + Scheme + ".csv"
            DataTable dt = ReadCSV(csvFile);
            dgv.DataSource = dt;
    

    现在我想把csv文件作为嵌入式资源

    我试过了。但它不起作用

            string csvFile = System.Resources.MyFile; //This is error
            DataTable dt = ReadCSV(csvFile);
            dgv.DataSource = dt;
    

    我想知道如何让代码正确运行?

    0 回复  |  直到 3 年前
        1
  •  0
  •   Fredy    3 年前

    一旦将文件添加到菜单“项目/属性/资源”中,如@dr.null所说,您必须在解决方案资源管理器中单击项目的名称,以便将Action属性设置为“内置资源”。

    然后,使用类似的东西:

    using System.Reflection;
    
    var assembly = Assembly.GetExecutingAssembly();
    var resourceName = "assembly_name.Resources.yourFile.csv";
    var lines = ReadLines(() => Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName), Encoding.UTF8).ToList();
    

    哪里:

            public IEnumerable<string> ReadLines(Func<Stream> streamProvider, Encoding encoding)
            {
                using (var stream = streamProvider())
                using (var reader = new StreamReader(stream, encoding))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        yield return line;
                    }
                }
            }
    

    您将拥有包含csv数据的变量行。