Excel与数据库的交互(二)——导出Excel

  上一篇中我写到过有关将Excel导入到数据库的思想和代码,既然需要将Excel表导入到数据库,当然也少不了将数据库的数据导出为Excel表的形式。

      那我就不写思想了,直接上代码吧:

 1 //从数据库中取出数据
2 BLL.Score bll = new BLL.Score();
3 DataSet ds = bll.GetAcademeAndClass();
4 DataSet ds_excle = new DataSet();
5 for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
6 {
7 //生成将要存放结果的Excel文件的名称
8 string NewFileName = ds.Tables[0].Rows[i]["Academe"].ToString() + ".xls";
9 //转换为物理路径
10 string file_fullname = Server.MapPath("~/Web/DataImport/DataBackup/" + NewFileName);//含路径全名
11 //Server.MapPath(file_fullname);
12 //根据模板正式生成该Excel文件
13 File.Copy(Server.MapPath("Module01.xls"), file_fullname, true);
14 //建立指向该Excel文件的数据库连接
15 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file_fullname + ";Extended Properties='Excel 8.0;'";
16 OleDbConnection Conn = new OleDbConnection(strConn);
17 //打开连接,为操作该文件做准备
18 Conn.Open();
19 OleDbCommand Cmd = new OleDbCommand("", Conn);
20 //将信息写入到Excel表
21 ds_excle=bll.GetStudentScore(ds.Tables[0].Rows[i]["Academe"].ToString(), ds.Tables[0].Rows[i]["ClassName"].ToString());
22 for (int j = 0; j < ds_excle.Tables[0].Rows.Count; j++)
23 {
24
25 string XSqlString = "insert into "+"[Sheet"+(j+1)+"$]";
26 XSqlString += "([学号],[姓名],[课程名称],[成绩],[学院],[班级]) values(";
27 XSqlString += "'" + ds_excle.Tables[0].Rows[j]["UserID"] + "',";
28 XSqlString += "'" + ds_excle.Tables[0].Rows[j]["UserName"] + "',";
29 XSqlString += "'" + ds_excle.Tables[0].Rows[j]["Name"] + "',";
30 XSqlString += "'" + ds_excle.Tables[0].Rows[j]["Score"] + "',";
31 XSqlString += "'" + ds.Tables[0].Rows[i]["Academe"] + "',";
32 XSqlString += "'" + ds.Tables[0].Rows[i]["ClassName"] + "')";
33 Cmd.CommandText = XSqlString;
34 Cmd.ExecuteNonQuery();
35
36 }
37 //操作结束,关闭连接
38 Conn.Close();


    注意这是基于模板式的将数据导出为Excel。也就是说事先在你的代码文件夹下面已存在该模板Excel文件。若果你在使用中需要的是不同的模板的话,那你就需要动态的去创建模板了。

原文地址:https://www.cnblogs.com/xiaopanlyu/p/2415488.html