工大助手--数据读取
实现功能
1)用户可选择获取入学以来所有已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。
2)用户可选择获取特定已修课程的相关信息:课程代号、课程名、课程属性、学分、成绩等信息。
3)用户可获得特定时间段内的加权平均分(1学期、1学年、全部)。
团队成员
13070003
13070046
13070004
13070006
13070002
13070045
数据读入
在上次博客中,我讲到了我所做的工作是数据处理,在这个模块中,主要分为三部分实现,数据读入、查询数据以及加权平均分计算。考虑到每次用户登录后只有一个用户会涉及到处理数据的问题,所以没有必要实例化数据处理的类,所以,我将其设计为静态类来处理。
在Python端将获取到的数据存到了excel中,所以我首先要将数据从excel中读到类中定义的DataTable中,实现的代码如下:
1 #region ----------读取数据---------- 2 ///3 /// 从excel中读取成绩数据,结果存入gradeSet,成功标志hasLoadData 4 /// 5 public static void LoadDataFromExcel() 6 { 7 try 8 { 9 string strConn;10 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";11 OleDbConnection OleConn = new OleDbConnection(strConn);12 OleConn.Open();13 String sql = "SELECT * FROM ["+sheetName+"$]";14 15 OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);16 gradesTable = new DataTable();17 DataSet ds = new DataSet();18 OleDaExcel.Fill(ds, "GradeSheet");19 OleConn.Close();20 gradesTable = ds.Tables[0];21 hasLoadData = true;22 return;23 }24 catch (Exception err)25 {26 MessageBox.Show(err.Message);27 //Console.WriteLine("{0}", err.Message);28 hasLoadData = false;29 return;30 }31 }32 #endregion
在这段代码中,OleConn建立了C#与excel文件的连接,然后定义sql语句把所excel中表名叫sheetName的表中的数据读入OleDbDataAdapter对象中,然后在将数据存入定义好的DataTable对象gradesTable中。由于在学习这一部分的内容的时候发现了DataTable这么一个好东西,所以就节省了很多后续的工作量。DataTable类中封装好了很多的方法,所以操作起来非常的方便。