-1

我必须从 URL 读取 CSV 文件,例如:http://somedomain.com/getdata.aspx?p1=param1&p2=param2

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_serviceUrl);
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

StreamReader sr = new StreamReader(resp.GetResponseStream());
CsvReader csvread = new CsvReader(sr, new CsvConfiguration()
    {

    });
List<Entity> record = csvread.GetRecords<Entity>().ToList();
sr.Close();

但我没有运气
,标题字段是<...>这样的:

<Field1>;<Field2>;<Field3>

和数据

stringValue;777;anotherStringValue

有什么帮助吗?

4

2 回答 2

1

对我来说,解决方案是读取文件并将其映射到实体

    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_serviceUrl);
    req.KeepAlive = false;
    req.ProtocolVersion = HttpVersion.Version10;
    HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

    using (StreamReader streamReader = new StreamReader(resp.GetResponseStream()))
    {
        CsvConfiguration configuration = new CsvConfiguration()
        {
            Delimiter = ";",
            HasHeaderRecord = true,
            IsHeaderCaseSensitive = false
        };
        configuration.RegisterClassMap<EntityMap>();
        CsvReader csvread = new CsvReader(streamReader, configuration);
        List<Entity> record = csvread.GetRecords<Entity>().ToList();
    }

并且有一个映射:

public class EntityMap : CsvClassMap<Entity>
    {
        public override void CreateMap()
        {
            Map(m => m.Field1).Name("<Field1>");
            Map(m => m.Field2).Name("<Field2>");
        }
    }
于 2013-06-19T19:05:29.027 回答
0

似乎您正在处理多个问题。不幸的是,您提供的信息非常少,您正面临哪些确切的问题以及您的申请中的哪些问题。

由于我不知道CsvReader.NET 框架中有一个类,所以我假设您正在寻找一个现有的框架(或已经在使用一个)。

至于您发布的代码片段,我建议将其分成几部分。request/response比如,首先将文件加载到磁盘的某个临时位置,这样您就可以在对象完成工作后立即清理它们。

我不确定 StreamReader 在使用该 ResponseStream 时的行为方式,在访问您可能没有足够访问权限的源时可能会出现更多麻烦。

成功将文件下载到有意义的位置后,您可以使用您想要使用的任何工具或框架对其进行处理。

根据 CSV 文件的复杂性,这个 StackOverflow 线程还可能为解析文件提供一些灵感:非常简单的 C# CSV 阅读器

应该有大量的互联网资源来帮助您开始您的单个步骤,例如:

  1. 下载文件: 在 C# 中通过 HTTP post 和 HTTP get 下载文件 这讨论了两种用于获取文件的替代方法HttpWebRequest以及如何将其保存到磁盘;或从 Web 下载文件,WebClient使用该类解释这一点。

  2. 解析 CSV 文件:一个非常有用且功能强大的库:FileHelpers Library查看文档和示例以了解其工作原理。这Delimeted File Engine可能正是您所需要的。或者看看LINQ to CSV library

于 2013-06-19T14:33:17.507 回答