Asp.net mvc 在.NET中导入CSV文件

Asp.net mvc 在.NET中导入CSV文件,asp.net-mvc,Asp.net Mvc,请帮忙!我正在通过CSV导入Google联系人。问题是,正如我在代码中提到的,我只能获得CSV文件的特定头的值。在导入Google CSV文件时,有人能给我获取整个集合的源代码吗 private void GoogleCsv() { StreamReader Sr = new StreamReader(Server.MapPath("CSVLoad//" + FileUpload.FileName)); System.Text.StringBuilder sb = new Sys

请帮忙!我正在通过CSV导入Google联系人。问题是,正如我在代码中提到的,我只能获得CSV文件的特定头的值。在导入Google CSV文件时,有人能给我获取整个集合的源代码吗

private void GoogleCsv()
{
    StreamReader Sr = new StreamReader(Server.MapPath("CSVLoad//" + FileUpload.FileName));
    System.Text.StringBuilder sb = new System.Text.StringBuilder();
    string s;
    Int64 count = 0, flag = 0;
    while (!Sr.EndOfStream)
    {
        s = Sr.ReadLine();

        a = s.Split(',')[0];
        b = s.Split(',')[1];
        c = s.Split(',')[2];
        d = s.Split(',')[3];
        e = s.Split(',')[4];

        if (count == 0)
        {
            if ((a == "Name") && (b == "E-mail 1 - Value") && (c == "Phone 1 - Value") && (d == "Address 1 - Formatted") && (e == "Organization 1 - Name"))
            {
                flag = flag + 1;
                count = count + 1;
            }
            else
            {
                break;
            }
        }
        else if (count > 0)
        {
            if (flag == 1)
            {
                Contact contact = new Contact();
                contact.ContactFirstName = a;
                contact.ContactLastName = "";
                contact.ContactEmail = b;
                contact.CompanyName = e;
                contact.ContactPhone = "";
                contact.MobileNo = c;
                contact.Designation = d;
                contact.Streetone = "";
                contact.Streettwo = "";
                contact.Area = "";
                contact.Userid = Convert.ToInt64(Session["UserId"].ToString());
                contact.Organizationid = Convert.ToInt64(Session["OrgId"].ToString());
                contact.Stateid = 19;
                contact.Countryid = 2;
                contact.Createdby = 106;
                contact.Industryid = 287;
                contact.Accgroupid = 627;
                _importController.CsvImportDetails(contact);
            }
        }
    }
    Sr.Close();
    File.Delete(Server.MapPath("CSVLoad//" + FileUpload.FileName));
}

我使用这个类来加载CSV数据,它是免费的、快速的和易于使用的。

我使用这个类来加载CSV数据,它是免费的、快速的和易于使用的。

对于任何类似的事情,我总是求助于。既然已经有了一个解决方案,可以处理所有这些低级方面的问题,为什么还要重新发明轮子,在定界符和所有这些繁琐的细节上苦苦挣扎呢

只需定义要导入字段列表的类,基本上是定义分隔符和忽略的字段等,然后调用FileHelperEngine.ReadFile并完成操作


强烈推荐

对于这样的事情,我总是求助于。既然已经有了一个解决方案,可以处理所有这些低级方面的问题,为什么还要重新发明轮子,在定界符和所有这些繁琐的细节上苦苦挣扎呢

只需定义要导入字段列表的类,基本上是定义分隔符和忽略的字段等,然后调用FileHelperEngine.ReadFile并完成操作


强烈推荐

一个有趣而优雅的选项是项目。

一个有趣而优雅的选项是项目。

CsvReader将读取整个CSV文件,包括所有列。CsvReader将读取整个CSV文件,包括所有列。我曾尝试使用此选项一两次,这是一个很好的建议。我曾经尝试过一两次,这是一个很好的建议。在测试了LINQToCSV和LumenWorks之后,我决定使用第二个。简单易用,速度非常快。在测试了LINQToCSV和LumenWorks之后,我决定使用第二个。易于使用,速度非常快。
   class DynamicCSV : DynamicObject
{
private Dictionary<String, int> _fieldIndex;
private string[] _RowValues;
public DynamicCSV(string currentRow, Dictionary<string, int> fieldIndex)
{
    _RowValues = currentRow.Split(',');
    _fieldIndex = fieldIndex;
}


public YOURLINQOBject export() {
  return new YOURLINQOBject() 
}

public DynamicCSV(string[] values, Dictionary<string, int> fieldIndex)
{
    _RowValues = values;
    _fieldIndex = fieldIndex;
    //var that = new DynamicObject();
    //that.TrySetMember(
}



private string TransitionName(string inputFieldName)
{
    return Repo.TransitionThisName(inputFieldName);
}

public override bool TryGetMember(GetMemberBinder binder, out Object result)
{
    var fieldName = binder.Name.ToUpperInvariant();
    if (_fieldIndex.ContainsKey(fieldName))
    {
        result = _RowValues[_fieldIndex[fieldName]];
        return true;
    }
    result = null;
    return false;
}


public override bool TrySetMember(SetMemberBinder binder, object value)
{
    var fieldName = binder.Name.ToUpperInvariant();
    if (_fieldIndex.ContainsKey(fieldName))
    {
        _RowValues[_fieldIndex[fieldName]] = value.ToString();
        return true;
    }
    return false;
}

public override string ToString()
{
    var sb = new StringBuilder();
    sb.AppendLine("*******************************************");
    foreach (var field in _fieldIndex)
    {
        sb.AppendLine(field.Key + " --- " + _RowValues[_fieldIndex[field.Key]]);
    }
    sb.AppendLine("*******************************************");
    return sb.ToString();
}
 public class DynamicCSVEnum : IEnumerable
{
    private PeopleEnumerator _peopleEnum;
    public DynamicCSVEnum(string filename)
    {
        _peopleEnum = new PeopleEnumerator(filename);
    }
    IEnumerator IEnumerable.GetEnumerator( )
    {
        // return a PeopleEnumerator
        return _peopleEnum;
    }
}


public class PeopleEnumerator : IEnumerator
{
    //private List<MKG> theList;
    //private int _currentIndex;

    private Microsoft.VisualBasic.FileIO.TextFieldParser _FileStream;
    private Dictionary<string, int> _FieldNames;
    private DynamicCSV _CurrentRow;
    private string _filename;

    public PeopleEnumerator( string filename)
    {
        _filename = filename;
        //theList = new List<MKG>();
        //theList.Add(new MKG() { Id = 0 });
        //theList.Add(new MKG() { Id = 1 });
        //theList.Add(new MKG() { Id = 2 });
        //_currentIndex = -1;
        GetEnumerator();
    }

    private void GetEnumerator()
    {
        _FileStream = new Microsoft.VisualBasic.FileIO.TextFieldParser(_filename);
        _FileStream.Delimiters = new String[] { "," };
        _FileStream.HasFieldsEnclosedInQuotes = true;
        _FileStream.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
        var fields = _FileStream.ReadFields();
        _FieldNames = new Dictionary<string, int>();
        for (var i = 0; i <= fields.Length - 1; i++)
        {
            _FieldNames.Add(GetSafeFieldName(fields[i]), i);
        }
        _CurrentRow = new DynamicCSV(_FileStream.ReadFields(), _FieldNames);
    }
    public void Reset()
    {
        //_currentIndex = 0;
        _FileStream.Close();
        GetEnumerator();
    }

    public bool MoveNext()
    {
        //_currentIndex++;
        //if (_currentIndex < theList.Count)
        //{

        //    return true;
        //}
        //return false;
        var line = _FileStream.ReadFields();
        if (line != null && line.Length > 0)
        {
            _CurrentRow = new DynamicCSV(line, _FieldNames);
            return true;
        }
        else
        {
            return false;
        }
    }

    public object Current
    {
        //get
        //{
        //    return theList[_currentIndex];
        //}
        //set
        //{
        //    theList[_currentIndex] = (MKG)value;
        //}
        get { return _CurrentRow; }

    }

    string GetSafeFieldName(string input)
    {
        return input.Replace(" ", "").Replace("_", "").Replace(".","").Replace("#","").Replace("/","").Replace("\\","").ToUpperInvariant();
    }

}
            var foo = new DynamicCSVEnum(savedFileName);

            foreach (DynamicCSV item in foo)
            {
                retVal.Add(item.LinqObjectExport());
            }

            foreach (var item in retVal)
            {
                item.ClientSet = dsid;
            }
            repo.InsertDataSet(retVal);