从数据库中导出表格

开发工具与关键技术:vs asp.net mvc
作者:邹志深
撰写时间:2019.5.7
我对导出表格的理解与知识分两个方面来讲:一、页面的代码理解与知识点、二、控制器的代码理解与知识点。首先是讲解页面那边的理解与知识点,如下图:
在这里插入图片描述
一、 页面代码的理解与知识点
上图就是从数据库中将数据导出的页面的代码,它是一个先建一个方法来将你想写的代码包装起来或者是说建一个方法来将你要实现的功能给包装起来然后调用这个方法就可以了,这样就可以把你要实现的方法在那里调用都可以只要把这个方法调用就行了,那么如何调用这个方法呢?调用这个方法的类型分为两类:第一类是在方法里调用方法,也就是在方法里面直接写图中的ExportToExcel()在别的方法里面就可以了,第二种类型就是在html中的按钮中给他写上点击事件并且应用这个方法,也就是这样写onclick(‘+ExportToExcel()+’)这样写法就可以了,而且图中写的方法是用第二种类型来调用的。那么接下来就是解释一下图中的代码了这个方法里面的第一句代码的意思是根据ID获取值在这里的意思是根据HTML里的学院id来获取学院命名为AcdemiID下面几句代码的意思是一样的,然后就是判断获取到的ID的值了最后就是提示了其中window.open()是跳转页面的意思。这样页面这边的代码也就完成了。
二、 控制器代码的理解与知识点
页面的代码讲完了那么接下来就是讲控制器这边的代码与知识点了,如下图:
在这里插入图片描述
这张图就是控制器这边的代码它是讲一个类来将你想要实现的工能来给包装起来的如图中就是建立了一个名为ExportToExcel的类把数据导出表格时要用到的代码全给写在里面。接下来就是讲这个类的意思了。建立这个类了之后要引用页面传过来的数据或者id如图中的变量为int 类型的AcademeID这是页面那边传过来的元素总之在这张图中在ExportToExcel()这个类里面的括号里的都是页面传过来的这样我们继续来讲下一步首先是查询数据与条件筛选这里代码,不过这里的代码我留到最后讲建立工作表的那部分,如图中的第一句代码就是创建工作簿名名为excelBook,创建工作簿之后接着就是创建工作表给它命名为sheetl,创建工作表之后就是创建工作表表头给它命名为rowl;创建工作表表头之后就是设置表头了;接着就是给Excel表格添加数据了也就是图中的for循环那里;添加数据之前要创建行,图中的for循环里面的第一句代码就是创建行了并且给它命名为rowTemp,接下来就是Excel表格里面添加查询到的数据了,如图中的rowTemp.CreateCell(0).SetCellValue(listStudent[i].StudentNumber);这句代码的意思就是在行里面的第一个格子就是学号随着表格的数据而增加,以此类推这样就把我们要导出的数据给一一填上去了也就是图中的姓名、身份证等等这些数据给填了上去。然后就是给你导出的表格文件命名和导出表格的详细时间和文件后缀名给添加上去。接着就是将文件转换为内存流,然后将Excel文件写入内存流,接着就是输出之前调用Seek(偏移量,游标位置) 移动文件读取指针到指定的位置;如图中的Seek(0,Seek.begin) 的意思是第一个参数表示相对位置,第二个参数表示参照位置。最后就是返回内存流和设计文件类型。这样Excel表格的设计也就完成了,最后就是将查询数据的部分了,如下图:
在这里插入图片描述 这张图片里的代码是在它上面的那张图里面的也就是放在在它上面的那张图片里面折起来的部分注释有数据查询&条件筛选的那里的,这里是新建一个列表来查询的新建的列表也就是图中的listStudent,而且它是多表连接查询,多表查询这里是要用到排序的如图中的orderby tbStudent.studentID descending这里就是排序不过用的是降序排序,然后就是給新建类给赋值了,这里的新建类就是图中的studentVo,新建studentVo这里是要继承数据库中的表单的这里继承的是数据库中的PW_Student这张表,然后就在studentVo里面写PW_Student里面没有的元素,然后就给studentVo里面的元素赋值,studentVo里面的元素是在数据库中那张表的就在那张表的给studentVo里面的元素赋值。最后就是判断传过来的参数了也就是条件筛选了,这里的判断里面的代码是用了Lambda表达式的如图中的listStudent = listStudent.Where(m => m.AcademeID == AcademeID).ToList();这句就是Lambda表达式,为了方便了解我把它给简写了:表单 = 表单.where或者select(m=>m.表单的参数 == 表单的参数)。这样从数据库中导出Excel表格数据也就完成了,写完这里面的代码就可以从数据库中导出表格了。