针对简单excel导出下载(利用反射完成)

将list数据读入一个excel中的sheet工作簿

 public void export(
			 //wb为HSSFWorkbook对象由于我写的时候需要创建多个sheet故每次调用传同一个wb
			 //sheetName就是工作簿的名字,此处工作簿的名字不能相同
			 //columns 由于差的数据并一定需要将整个javabean全部属性都导出,故传所需name进行get方法拼接
			 //headers用于传入每个sheet中第一排每一列的列名,不可能直接给客户看属性名对吧!
			 HSSFWorkbook wb,String sheetName,String[] headers, String[] columns,List<T> lists) 
	            		throws Exception 
	        {
	           //创建一个空的sheet工作簿
	            HSSFSheet sheet = wb.createSheet(sheetName);
	            //列宽
	            sheet.setDefaultColumnWidth(15);
	            HSSFCellStyle style = wb.createCellStyle();

	            HSSFRow row = sheet.createRow(0);
	            style.setAlignment(HSSFCellStyle.ALIGN_LEFT);
	            //设置列名
	            for (int i = 0; i < headers.length; i++) {
	                HSSFCell headerCell = row.createCell(i);
	                headerCell.setCellValue(headers[i]);
	                headerCell.setCellStyle(style);
	            }
	           //遍历对象
	            Iterator<T> it = lists.iterator();
	            int rowIndex = 0;
	            while (it.hasNext()) {
	                rowIndex++;
	                row = sheet.createRow(rowIndex);
	                Object t =it.next();
	                //得到某个对象的所有属性
	                Field[] fields = t.getClass()
	                            .getDeclaredFields();
	                //进行对比,有就执行拼接,进行get,invoke赋值
	                for (int i = 0; i < fields.length; i++) {
	                    Field field = fields[i];
	                    String fieldName = field.getName();

	                    for (int j = 0; j < columns.length; j++) {
	                        if (fieldName.equals(columns[j])) {
	                        String getMethodName = "get" + 
	                            fieldName.substring(0, 1).
	                            toUpperCase() + fieldName.
	                            substring(1);
	                        Class cls = t.getClass();

	                        Method getMethod = cls.getMethod(
	                            getMethodName, new Class[] {});
	                        Object val = getMethod.invoke(
	                            t, new Object[] {});
	                        String textVal = null;
	                        if (null != val) {
	                            textVal = val.toString();
	                        } else {
	                            textVal = null;
	                        }
	                            row.createCell(j).
	                                setCellValue(textVal);
	                    }
	                }
	            }
	        }

	    }

将list数据读入一个excel中的sheet工作簿

//创建一个excel对象
		HSSFWorkbook wb = new HSSFWorkbook();
		String sheetName1="工作簿名";
		String [] headers1={"第一列名1”,"","","",""};
		String [] columns1={"属性名1","","","","",""};
			List<T> list1=(List<T>) iBusinessManagerService3.countQsqy(params).getData();
			iBusinessManagerService3.export(wb, sheetName1, headers1, columns1, list1);
response.setContentType("application/OCTET-STREAM;charset=utf-8");
//			//	         设置文件头:最后一个参数是设置下载文件名 
				 response.addHeader("Content-Disposition", "attachment;filename=" + new String("excel名字".getBytes(),"ISO8859-1") + ".xls");
//			//	         获取输出流
			 OutputStream out = null;
			 out = response.getOutputStream();
			 wb.write(out); 
			 out.flush();
			 out.close();

需要导入poi的常用jar包

这个方法也是直接网上看到的,微微改了下,分享下





猜你喜欢

转载自blog.csdn.net/java_zhaoyu/article/details/80222791
今日推荐