必威体育Betway必威体育官网
当前位置:首页 > IT技术

OA系统:实现员工签到表导出xls

时间:2019-11-02 16:43:25来源:IT技术作者:seo实验室小编阅读:86次「手机版」
 

员工签到表

一、准备poi

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给java程序对Microsoft Office格式档案读和写的功能。

二、修改视图层,给导出按键添加单击事件

//给导出按钮绑定单击事件
				$("#btn2").click(function(){
					alert("1");
					//获取三个查询条件的值
					var empId = $("#empId").val();
					var deptno = $("#deptno").val();
					var dtDate = $("#dtDate").val();
					//访问指定的Servlet而不是用ajax,因为ajax是通过回调函数处理结果的,导出返回的是流,所以也不用转发和重定向
					location.href="servlet/DutyServlet?method=exportXls&empId="+empId+"&deptno="+deptno+"&dtDate="+dtDate;
				});

三、servlet添加exportEls和createexcel方法

//导出XLS
				public void exportXls(HttpServletrequest request, HttpServletresponse response)
						throws ServletException, IOException {
					//获取请求中的信息
					String empId=request.getparameter("empId");
					String sdeptno=request.getParameter("deptno");
					int deptno=0;
					try {
						deptno=integer.parseInt(sdeptno);
					} catch (numberformatexception e) {
						// TODO: handle exception
						e.printstacktrace();
					}
					String sdtDate=request.getParameter("dtDate");
					java.sql.Date dtDate=null;
					try {
						dtDate=java.sql.Date.valueOf(sdtDate);
					} catch (runtimeexception e) {
						// TODO: handle exception
						e.printStackTrace();
					}
					
					//调用业务层完成业务操作
					DutyService dutyService=new DutyServiceImpl();
					List<Duty> dutyList=dutyService.findDuty(empId,deptno,dtDate);

					//导入到Xls中
					createExcel(dutyList,response);
				}
				 private static void createExcel(List<Duty> list,HttpServletResponse response) {
				        // 创建一个Excel文件
				        HSSFWorkbook workbook = new HSSFWorkbook();
				        // 创建一个工作表
				        HSSFSheet sheet = workbook.createSheet("考勤信息");
				        
				        CellRangeAddress region = new CellRangeAddress(0, // first row
				                0, // last row
				                0, // first column
				                2 // last column
				        );
				        sheet.addMergedRegion(region);
				        
				        HSSFRow hssfRow = sheet.createRow(0);
				        HSSFCell headCell = hssfRow.createCell(0);
				        headCell.setCellValue("考勤信息");
				        
				        // 设置单元格格式居中
				        HSSFCellStyle cellStyle = workbook.createCellStyle();
				    	cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
				        headCell.setCellStyle(cellStyle);
				        
				        
				        // 添加表头行
				        hssfRow = sheet.createRow(1);
				        // 添加表头内容
				        headCell = hssfRow.createCell(0);
				        headCell.setCellValue("用户名");
				        headCell.setCellStyle(cellStyle);

				        headCell = hssfRow.createCell(1);
				        headCell.setCellValue("真实姓名");
				        headCell.setCellStyle(cellStyle);

				        headCell = hssfRow.createCell(2);
				        headCell.setCellValue("所属部门");
				        headCell.setCellStyle(cellStyle);
				        
				        
				        headCell = hssfRow.createCell(3);
				        headCell.setCellValue("出勤日期");
				        headCell.setCellStyle(cellStyle);

				        headCell = hssfRow.createCell(4);
				        headCell.setCellValue("签到时间");
				        headCell.setCellStyle(cellStyle);

				        headCell = hssfRow.createCell(5);
				        headCell.setCellValue("签退时间");
				        headCell.setCellStyle(cellStyle);

				        // 添加数据内容
				        for (int i = 0; i < list.size(); i++) {
				            hssfRow = sheet.createRow((int) i + 2);
				            Duty duty = list.get(i);

				            // 创建单元格,并设置值
				            HSSFCell cell = hssfRow.createCell(0);
				            cell.setCellValue(duty.getEmp().getEmpId());
				            cell.setCellStyle(cellStyle);

				            cell = hssfRow.createCell(1);
				            cell.setCellValue(duty.getEmp().getRealName());
				            cell.setCellStyle(cellStyle);

				            cell = hssfRow.createCell(2);
				            cell.setCellValue(duty.getEmp().getDept().getDeptname());
				            cell.setCellStyle(cellStyle);
				            
				            
				            cell = hssfRow.createCell(3);
				            cell.setCellValue(duty.getDtDate());
				            cell.setCellStyle(cellStyle);

				            cell = hssfRow.createCell(4);
				            cell.setCellValue(duty.getSigninTime());
				            cell.setCellStyle(cellStyle);

				            cell = hssfRow.createCell(5);
				            cell.setCellValue(duty.getSignoutTime());
				            cell.setCellStyle(cellStyle);
				        }

				        // 保存Excel文件
				        try {
				        	response.setcontenttype("APPlication/vnd.ms-excel");
				        	response.setheader("content-Disposition", "attachment;filename=duty.xls");//附件形式下载,文件名叫duty.xls
				        	//outputstream outputStream = new FileOutputStream("D:/duty.xls");//保存到本地(服务器端)
				        	OutputStream outputStream = response.getOutputStream();	 //写到客户端       	
				            workbook.write(outputStream);
				            outputStream.close();
				        } catch (Exception e) {
				            e.printStackTrace();
				        }
				    }

四、运行图

在这里插入图片描述

文章最后发布于: 2019-08-19 22:36:11

相关阅读

【Android】Phoenix OS(凤凰系统)启用root权限

最新版(2.5.9.64)的Phoenix OS将开发者选项中的root权限开关去掉了,本篇教程的来源是XDA论坛的[Root] How to root Phoenix OS wit

c语言实现霍夫曼树

c语言实现霍夫曼树 #include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { char value; int weight;

Redis如何实现消息队列

消息队列的实现方式有很多种,比如有专业的rabbitmq,rocketmq,kafka等,这些mq提供了非常专业的功能实现异步发送,而且这些接入又比较

网站建设系统程序如何选择?

现在的科技在飞速的发展,网站后台程序经过几十年的发展已经越来越成熟,网站程序从原来的内部使用变成付费购买,再到如今演变成的完全

拆解企业建站选择疑问,实现网站价值最大化

越来越多的企业注重自身的品牌形象,在实体店形象升级改造的同时,企业也不会放过网络这一块大蛋糕。那么,做网站便是企业的需求了。但

分享到:

栏目导航

推荐阅读

热门阅读