mvc里如何上传excel然后将里面的数据导入到SQL数据库里

2025-04-13 04:09:30
推荐回答(2个)
回答1:

我只有asp.net的,c#也可以使用,但是没测试过java那些的。将Excel里面的数据导入到数据库中的原理就是将Excel里面的数据存储到一个dataTable中,然后将数据一行一行添加到数据库的表里。给你部分代码,相信你能够如此好学,应该能看懂,有些变量你自己研究是什么,不然全部给你打出来了,你就只会copy了。

SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["aa"].ToString());
            con.Open();//数据库连接字符串
            DataTable dtXls = new DataTable();
            if (this.fudAdd.PostedFile.FileName.ToString().Trim() != "" && this.fudAdd.PostedFile.FileName!=null)
            {
                string filePath = this.fudAdd.PostedFile.FileName.ToString().Trim();
                FileInfo fileTag = new FileInfo(fudAdd.PostedFile.FileName);
                string extendedName = fileTag.Extension;
                if (extendedName.ToLower() != ".xls" && extendedName.ToLower() != ".xlsx")
                {
                    Response.Write("");
                    return;
                }
                else
                {
                    dtXls = ExcelToDataTable(filePath,extendedName);
                    if (dtXls==null||dtXls.Rows.Count <= 0 || dtXls.Columns[0].ToString() == "")
                    {
                        Response.Write("");
                        return;
                    }
                    else
                    {
                        if (dtXls.Columns[0].ToString() != "手机号码" || dtXls.Columns[1].ToString() != "状态")
                        {
                            Response.Write("");
                            return;
                        }
                        else
                        {
                            if (dtXls.Rows[0][0].ToString() == "")
                            {
                                Response.Write("");
                                return;
                            }
                            else
                            {
                                string result = AddXlsData(dtXls, con);
                                string[] resultData = result.Split('-');
                                string msg = "资料上传成功!共计" + resultData[0] + "条成功," + resultData[1] + "条失败!";
                                Response.Write("");
                                logwrite.LogOpera(userid, "UnExistMobile_Mag.aspx", "UnExistMobile_Mag.aspx.cs", "成功上传一批空号");//记录log
                                BindData();
                                return;
                            }
                        }
                    }
                }
                con.Close();

//
#region ExcelToDataTable
    /// 
    /// 读取xls文件
  /// Add by
    /// 

    /// 
    /// 
    protected DataTable ExcelToDataTable(string fileName, string extendedName)
    {
        string strConn = string.Empty;
        if (extendedName.ToLower() == ".xls")
        {
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';";
        }
        if (extendedName.ToLower() == ".xlsx")
        {
            strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=YES'";
        }
        OleDbConnection conn = new OleDbConnection(strConn);
        conn.Open();
        System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
        string tableName = schemaTable.Rows[0][2].ToString().Trim();
        string strExcel = "";
        OleDbDataAdapter myCommand = null;
        DataSet ds = null;
        strExcel = "Select   *   From   [" + tableName + "]";
        myCommand = new OleDbDataAdapter(strExcel, strConn);
        ds = new DataSet();
        myCommand.Fill(ds, tableName);
        if (ds != null)
        {
            System.Data.DataTable dt = ds.Tables[0];
            return dt;
        }
        else
        {
            return null;
        }
        conn.Close();
        ds.Dispose();
    }
    #endregion

回答2:

你的mvc描述的概念太广泛了,你要告诉大家,你用的什么语言什么框架,不然给你源码你也用不了啊。
具体流程,无非是三步:
1 读取execel文件内容。高级语言,都会有对应的组件做支持的,
2 见execl内容转化为POJO(简单数据对象)
3 将POJO通过ORM框架。或者自己写sql插入数据库