Excel的数据显示方式
方式1:
学生名  学号  高等数学  大学英语   
zhang1  001   80       90      
zhang2  002   80       90      
zhang3  003   80       90    
  
导入数据库后如何实现
方式2:
学生名   学号   科目   成绩
zhang1  001  高等数学   80
zhang1  001  大学英语   80
zhang2  002  高等数学  80
zhang2  002  大学英语  80
zhang3  003  高等数学  80
zhang1  004  大学英语   80
zhang1  004  高等数学  80
目前导入数据库后页面显示的方式是1,如何实现导入数据库后页面显示的是方式2?
方式1显示的代码如下  //上传文件
            FileUpload1.SaveAs(fPath);            ////////////////将文件内容导入SQL///////////////////////////////////
            //将Excel内容读入数据集中
            string mystring = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '" + fPath + "';Extended Properties=Excel 8.0";
            OleDbConnection cnnxls = new OleDbConnection(mystring);
            OleDbDataAdapter myDa = new OleDbDataAdapter("select * from [Sheet1$]", cnnxls);
            DataSet myDs = new DataSet();
            myDa.Fill(myDs, "FF_Score");
            GridView1.DataSource = myDs.Tables["FF_Score"];
            GridView1.DataBind();            //从excel文件获得数据后,插入记录到SQL Server的数据表
            string myConnection = ConfigurationSettings.AppSettings["FFSQLServerConnStr"];
            SqlConnection sqlCon = new SqlConnection(myConnection);
                       DataTable dataTable1 = new DataTable();            SqlDataAdapter sqlDA1 = new SqlDataAdapter(@"SELECT * FROM FF_Score", sqlCon);            SqlCommandBuilder sqlCB1 = new SqlCommandBuilder(sqlDA1);            sqlDA1.Fill(dataTable1);            foreach (DataRow dataRow in myDs.Tables["FF_Score"].Rows)
            {
                DataRow dataRow1 = dataTable1.NewRow();
                dataRow1["Xuhao"] = dataRow[0];               
                dataRow1["UserNumber"] = dataRow[1];
                dataRow1["UserName"] = dataRow[2];
                dataRow1["Sex"] = dataRow[3]; 
                dataTable1.Rows.Add(dataRow1);
            }            sqlDA1.Update(dataTable1);            cnnxls.Close();

解决方案 »

  1.   

    用两个循环嵌套,第一个循环读取姓名和学号,第二个循环读取成绩各列,在第二个循环合并第一个循环的记录后执行insert。
      

  2.   

    Excel的sql语句里面多几个查询select 学生名,学号,高等数学select 学生名,学号,大学英语
      

  3.   

    例如:foreach (DataRow dataRow in myDs.Tables["FF_Score"].Rows)
                {
    string xingming=dataRow[0];
    string xuehao=dataRow[1];
                    
    for(int i=2;i<=3;i++)
    {
    DataRow dataRow1 = dataTable1.NewRow();
                    dataRow1["UserNumber"] = xuehao;
                    dataRow1["UserName"] = xingming;
                    dataRow1[2] = dataRow[i].ColumnName; //获取列名
    dataRow1[3] = dataRow[i];
                    dataTable1.Rows.Add(dataRow1);
                }
    }大概就是这样了。