Spring+struts2+hibernate框架的Java Web项目利用POI导出Excel简单例子

在开始编写之前,小猿要先导入POI的jar包哟~~

POI介绍

Apache POIApache软件基金会的开放源码函式库,是用Java编写的免费开源的跨平台的 Java APIPOI提供APIJava程序对Microsoft Office格式档案进行各种操作。

POI主要用到的类有HSSFWorkbookHSSFSheetHSSHRowHSSFCellHSSFWorkbookExcel文件对象、HSSFSheetExcel文件内的分页sheet对象、HSSHRow是行对象、HSSFCell是单元格对象,它们都在org.apache.poi.hssf.usermodel这个package里面。

1、UserAction代码如下 :

/**
	 * 把数据导入到服务器并下载下来
	 * @throws Exception 
	 */
	public String exportExcel() throws Exception {    
	HttpServletResponse response = ServletActionContext.getResponse();
        List list = userService.findAll();//查询所有用户信息
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");    
        response.setHeader("Content-disposition", "attachment;filename=user.xls");    
        response.setCharacterEncoding("utf-8");
        HSSFWorkbook wb = userService.export(list);    
        
        OutputStream ouputStream = response.getOutputStream();    
        wb.write(ouputStream);    
        ouputStream.flush();    
        ouputStream.close();  
        
        return null;
   } 


2、UserService代码如下:

/**
	 * 导出Excel格式的数据
	 * @param list
	 * @return
	 */
	public HSSFWorkbook export(List list) {
	
			String[] excelHeader = { "用户ID","级别权限", "用户名", "用户密码", "手机号码", "住址"};  
			// 单元格列宽  
			int[] excelHeaderWidth = { 100, 120, 120, 120, 120, 200};  
			// 创建一个Excel表格  
			HSSFWorkbook wb = new HSSFWorkbook();  
			// 创建一个工作表格(sheet)
			HSSFSheet sheet = wb.createSheet("用户列表");  
			// 创建行
			HSSFRow row = sheet.createRow(0); 
			// 
			HSSFCellStyle style = wb.createCellStyle();  
			// 设置居中样式  
			style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中  
			style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 垂直居中  
			
			// 设置列宽度(像素)  
			for (int i = 0; i < excelHeaderWidth.length; i++) {  
			    sheet.setColumnWidth(i, 32 * excelHeaderWidth[i]);  
			}  
			  
			// 添加表格头  
			for (int i = 0; i < excelHeader.length; i++) {  
			    // 创建单元格
				HSSFCell cell = row.createCell(i);  
			    cell.setCellValue(excelHeader[i]);  
			    cell.setCellStyle(style);  
			}
			// 添加数据 用户ID","级别权限", "用户名", "用户密码", "手机号码", "住址
			 for (int i = 0; i < list.size(); i++) {    
		            row = sheet.createRow(i + 1);    
		            User user = list.get(i);    
		            row.createCell(0).setCellValue(user.getUid());  
		            row.createCell(1).setCellValue(user.getDictCustLevel().getDname());
		            row.createCell(2).setCellValue(user.getUsername());
		            row.createCell(3).setCellValue(user.getPassword());
		            row.createCell(4).setCellValue(user.getPhoneNumber());    
		            row.createCell(5).setCellValue(user.getAddress());    
		        } 
	        
	        return wb;    
	}


3、UserDao代码:

// 查询所有数据
public List findAll();

4、UserDaoImpl实现代码:

public List findAll() {
		List list = (List) this.getHibernateTemplate().find("from User");
		return list;
	}

5、前台的Javascript代码:


6、大功告成,如果有什么疑问,在这里提问,乐意为你解决~~



你可能感兴趣的:(java,web,spring,struts,poi,excel,原创-随笔记)