mysql - 导入 csv 和 xls 以批量上传用户以在网站中注册

标签 mysql sql asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在开发一个网站,我想批量注册学童,因为他们将提供 Excel 工作表,并希望当我上传该工作表时,它会自动在用户信息表中注册用户

这是代码

    if (Request.Files["FileUpload1"] != null && Request.Files["FileUpload1"].ContentLength > 0)
    {
        string extension = System.IO.Path.GetExtension(Request.Files["FileUpload1"].FileName);
        string path1 = string.Format("{0}/{1}", Server.MapPath("~/Content/UploadedFolder"), Request.Files["FileUpload1"].FileName);
        if (System.IO.File.Exists(path1))
            System.IO.File.Delete(path1);

        Request.Files["FileUpload1"].SaveAs(path1);
        string sqlConnectionString = @"Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Planetskool-20130901224446;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Planetskool-20130901224446.mdf;Database=DefaultConnection; Trusted_Connection=true;Persist Security Info=True";


        //Create connection string to Excel work book
        string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=Excel 12.0;Persist Security Info=False";
        //Create Connection to Excel work book
        OleDbConnection excelConnection = new OleDbConnection(excelConnectionString);
        //Create OleDbCommand to fetch data from Excel
        OleDbCommand cmd = new OleDbCommand("Select [UserInfoID],[UserID],[GraphID],[UserLevelEnumId],[Title],[FirstName],[MiddleName],[LastName],[Birthdate],[Gender],[Email],[MobileNo],[Country],[Zipcode],[CountFollowers],[CountFollows],[CountFiles],[CountPhotos],[Quote],[AvatarURL],[isVerified],[VerificationCount],[UserEnumType],[UserCreatorId] from [Sheet1$]", excelConnection);
         excelConnection.Open();
        OleDbDataReader dReader;
        dReader = cmd.ExecuteReader();

        SqlBulkCopy sqlBulk = new SqlBulkCopy(sqlConnectionString);
        //Give your Destination table name
        sqlBulk.DestinationTableName = "UserInfo";
        sqlBulk.WriteToServer(dReader);
        excelConnection.Close();

        // SQL Server Connection String


    }

    return RedirectToAction("Import");

最佳答案

你的代码如下

    if (Request.Files["FileUpload1"].ContentLength > 0)
            {

                string fileExtension = System.IO.Path.GetExtension(Request.Files["FileUpload1"].FileName);

                if (fileExtension == ".xls" || fileExtension == ".xlsx")
                {
                    // Create a folder in App_Data named ExcelFiles because you need to save the file temporarily location and getting data from there. 
                    string path1 = string.Format("{0}/{1}", Server.MapPath("~/Content/UploadedFolder"), Request.Files["FileUpload1"].FileName);
                    if (System.IO.File.Exists(path1))
                        System.IO.File.Delete(path1);
                    Request.Files["FileUpload1"].SaveAs(path1);
                    string sqlConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path1 + ";Extended Properties=Excel 12.0;Persist Security Info=False";
                    //Create Connection to Excel work book and add oledb namespace
                    OleDbConnection excelConnection = new OleDbConnection(sqlConnectionString);
                    excelConnection.Open();
                    DataTable dt = new DataTable();
                    dt = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    if (dt == null)
                    {
                        return null;
                    }

                    String[] excelSheets = new String[dt.Rows.Count];
                    int t = 0;
                    //excel data saves in temp file here.
                    foreach (DataRow row in dt.Rows)
                    {
                        excelSheets[t] = row["TABLE_NAME"].ToString();
                        Debug.Write("SheetTitle = " + excelSheets[t]);
                        t++;
                    }
                    OleDbConnection excelConnection1 = new OleDbConnection(sqlConnectionString);
                    DataSet ds = new DataSet();

                    string query = string.Format("Select * from [{0}]", excelSheets[0]);
                    using (OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, excelConnection1))
                    {
                        dataAdapter.Fill(ds);
                    }



                    for (int j = 0; j <= ds.Tables[0].Rows.Count - 1; j++)
                    {
}
}

关于mysql - 导入 csv 和 xls 以批量上传用户以在网站中注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19144521/

相关文章:

mysql - 使用依赖库编译nginx模块

php - 如何在 Laravel 中保存多选数据

mysql - 等价于在 MySQL 中处理字符串的 explode()

mysql - 如何设计此数据库以避免 3 个表之间的循环引用

mysql - 如何在mysql中找到组的总和并找到权重?

asp.net - resx资源或全局化资源数据库

mysql - SQL - 查询查找最受欢迎的好友

MySQL Entity Framework 将查询包装到 Order By 的子选择中

c# - MVC3中使用Get方法提交表单?

asp.net-mvc - 层次结构中的多个 AppSettings.config 文件