说明:一个excel表格式如下:
 
学号 姓名 语文 数学 英语 这是一个表格形式的   
 
要求:
可以录入excel表格内容,不及格的成绩做标示,对重复学号的数据进行筛选,遗漏的学号补充录入。导入不影响UI线程。
可计算各个学号的总成绩,可以根据学号顺序,各分科、总成绩排名导出。
图表形式显示出各分数区间段的人员分布情况。

解决方案 »

  1.   

    用ADO绑定,先把数据从Excel导出到DataGridView再说
    DataGridView 的列名,点击能够实现排序的,不用你重写任何东西
      

  2.   

    直接ado绑定或者用微软的dll去操作excel然后将数据写入grid
    参考
    http://www.csharpwin.com/csharpspace/1111.shtml
    http://www.knowsky.com/540655.html
      

  3.   

    用ADO绑定到DataGridView就可以了,你说的其余的【不及格的成绩做标示,对重复学号的数据进行筛选】应该是在excel的宏中实现吧。
      

  4.   

    string conn = ConfigurationManager.ConnectionStrings["你自己建立"].ToString();            SqlConnection theconnection = new SqlConnection(conn);            theconnection.Open();            try
                {
                    int a = Convert.ToInt32(dataGridView1.RowCount.ToString()) - 1;                for (int i = 0; i < a; i++)
                    {                    string a1 = Convert.ToString(dataGridView1[1, i].Value);
                        string a2 = Convert.ToString(dataGridView1[2, i].Value);
                        string a3 = Convert.ToString(dataGridView1[3, i].Value);
                        string a4 = Convert.ToString(dataGridView1[4, i].Value);
                        string a5 = Convert.ToString(dataGridView1[5, i].Value);
                        
                        string sql1 = string.Format("insert into 表名(学号 ,姓名, 语文, 数学 ,英语) values('" + a1 + "','" + a2 + "','" + a3 + "','" + a4 + "','" + a5 + "'");                    SqlCommand cmd = new SqlCommand(sql1, theconnection);
                        cmd.ExecuteNonQuery();
                        cmd.Dispose();                }
                    MessageBox.Show("导入成功   ", "提示", MessageBoxButtons.OK);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "提示");            }
      

  5.   

    前提: 先将excel文件内容填充到datagridview里去
    代码是:
     string dizhi = textBox1.Text.ToString();
                string file = textBox2.Text.ToString();
                string cnstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dizhi + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\";";            OleDbConnection cn = new OleDbConnection(cnstring);
                string aSQL = "select * from " + file + "";
                cn.Open();
                OleDbDataAdapter da = new OleDbDataAdapter(aSQL, cn);
                DataTable dt = new DataTable();
                da.Fill(dt);
                cn.Close();
                dataGridView1.DataSource = dt;
      

  6.   

    百度 谷歌搜一下就可以了吧  里面有很多现成的代码的啊http://www.cnblogs.com/lhxhappy/archive/2008/11/26/1341873.html
      

  7.   

    textBox1.2 要用到吗?放在哪用?
      

  8.   

    你可以适当修改下面方法的Sheet参数名和连接串他们返回一个DataTable,然后和表格绑定就可以了。
    /// <summary>
    /// 取得OleDb方式Excel连接串
    /// </summary>
    /// <param name="strExcelFilePath"></param>
    /// <returns></returns>
    public static string GetExcelConnectionString(string strExcelFilePath)
    {
    return string.Format("Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source={0};Extended Properties=Excel 8.0;",strExcelFilePath);
    }
    /// <summary>
    /// Excel文档导入DataTable
    /// </summary>
    /// <param name="strExcelFilePath">文件名称</param>
    /// <param name="strSheetNum">Sheet号</param>
    /// <returns></returns>
    public static DataTable ImportFromExcel(string strExcelFilePath,string strSheetNum)
    {
    try
    {
    DataTable dt                     = new DataTable("BT"); 
    using(OleDbConnection Connection = new OleDbConnection(GetExcelConnectionString(strExcelFilePath)))
    {
    Connection.Open();  
    using(OleDbDataAdapter da = new OleDbDataAdapter(string.Format("Select * From [Sheet{0}$]",strSheetNum),Connection))
    {
    da.Fill(dt);
    }
    }
    return dt;
    }
    catch(Exception me)
    {
    throw new Exception("导入Excel文档失败!" + me.Message);
    }
    }