我现在把csv文件上传到web服务器上了,现在不知道如何导入到数据库中,请高手们帮帮忙,最好有源码。谢谢~

解决方案 »

  1.   

    #region 上传需要导入的文件
    /// <summary>
    /// 上传需要导入的文件
    /// </summary>
    /// <returns></returns>
    private bool SaveFile()
    {
    if(File_LinkmanTxt.Value != String.Empty)
    {
    System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(".csv",System.Text.RegularExpressions.RegexOptions.IgnoreCase);
    if (!regex.IsMatch(File_LinkmanTxt.Value.Substring(File_LinkmanTxt.Value.LastIndexOf("."))))
    {
    GZEEMAIL.Utilities.Utilities.MsgBox("请注意你的导入文件格式,必须为.CSV文件!");
    return false;
    }
    string fileName = System.IO.Path.GetFileName(File_LinkmanTxt.PostedFile.FileName);

    fileName = BuildPath(fileName);
    ImportFilePath = fileName;
    try
    {
    File_LinkmanTxt.PostedFile.SaveAs(fileName);
    return true;
    }
    catch
    {
    return false;
    }
    }
    else
    {
    return false;
    }
    }
    #endregion #region 够造文件的上传路径
    /// <summary>
    /// 够造文件的上传路径
    /// </summary>
    /// <param name="m_FileName"></param>
    /// <returns></returns>
    private string BuildPath(string m_FileName)
    {
    string fileExtName = m_FileName.Substring(m_FileName.LastIndexOf("\\")+1,(m_FileName.Length - m_FileName.LastIndexOf("\\")-1));
    switch (fileExtName)
    {
    case "a":
    {
    break;
    }
    }
    string filePath = this.Page.Server.MapPath(MailDAL.MailConnection.FILEUPLOAD_DB)  ; 
    filePath += "\\";
    filePath +=  DateTime.Now.ToFileTimeUtc();
    filePath += fileExtName ;
    return filePath ;
    }
    #endregion #region 导入联系人 /// <summary>
    /// 导入联系人
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    private bool ImportLinkMan(string filePath)
    {
    StreamReader sr = new StreamReader(filePath,System.Text.Encoding.GetEncoding("GB2312"));
    string linkText;
    string[] FieldText = null;
    int userCode = Communal.GetUserID;
    MailModel.AddressList addr = new MailModel.AddressList();
    DataRow row;
    while(sr.Peek() > -1)//StreamReader.Peek()返回下一个可用字符,但不使用它
    {
    if ( sr.Peek() == 1)
    continue;
    row = addr.Tables[0].NewRow();
    linkText = sr.ReadLine();
    FieldText = linkText.Split(',');
    row["UserName"] = FieldText[0];
    row["CompanyName"] = FieldText[1];
    row["Depart"] = FieldText[2];
    row["Station"] = FieldText[3];
    row["Email"] = FieldText[4];
    row["TelPhone"] = FieldText[5];
    row["HandPhone"] = FieldText[7];
    row["FamilyAddress"] = FieldText[11] + FieldText[12];
    row["UserID"] = userCode;
    addr.Tables[0].Rows.Add(row);
    }
    sr.Close();
    using( AddressListDAL addrDAL = new AddressListDAL())
    {
    addr.Tables[0].Rows.Remove( addr.Tables[0].Rows[0]);
    if( addrDAL.Insert( addr,out userCode) )
    {
    try
    {
    File.Delete( ImportFilePath );
    return true;
    }
    catch
    {
    return true;
    }
    }
    else 
    {
    return false;
    }
    }
    }
    #endregion private void btn_Import_Click(object sender, System.EventArgs e)
    {
    if( SaveFile())
    {
    if(ImportLinkMan( ImportFilePath ))
    {
    GZEEMAIL.Utilities.Utilities.MsgBox("联系人导入成功!");
    Response.Redirect("percommbook.aspx?groupid= -1 " );
    }
    else
    {
    GZEEMAIL.Utilities.Utilities.MsgBox("联系人导入失败!");
    }
    }
    else
    {
    GZEEMAIL.Utilities.Utilities.MsgBox("读取文件失败,请重新获取文件!");
    }
    }
      

  2.   

    其中 File_FileName为File控件,MailDAL.MailConnection.FILEUPLOAD_DB 就是存放文件的虚拟路径 你自己应该修改 、数据库插入操作你根据自己的需要更改while(sr.Peek() > -1)//StreamReader.Peek()返回下一个可用字符,但不使用它
    {
    if ( sr.Peek() == 1)
    continue;
    row = addr.Tables[0].NewRow();
    linkText = sr.ReadLine();
    FieldText = linkText.Split(',');
    row["UserName"] = FieldText[0];
    row["CompanyName"] = FieldText[1];
    row["Depart"] = FieldText[2];
    row["Station"] = FieldText[3];
    row["Email"] = FieldText[4];
    row["TelPhone"] = FieldText[5];
    row["HandPhone"] = FieldText[7];
    row["FamilyAddress"] = FieldText[11] + FieldText[12];
    row["UserID"] = userCode;
    addr.Tables[0].Rows.Add(row);
    }
    sr.Close();这一段是关键