Java springMVC POI 导出 EXCEL

思路 :

  1. 将需要导出的数据存放在一个List中
  2. 创建一个EXCEL表 注意 XSSFWorkbook 只能操作2007以上的版本,XSSFWorkbook 只能操作2003一下的版本,所以需要的时候可以使用 Workbook创建对象处理兼容性
  3. 遍历List 并将每条数据 写入 EXCEL表中

具体代码如下 :

html 页面

<button onClick="download()">导出</button>

 js 页面

function download() {
	$.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) {
		if (r) {
			$.messager.progress({
				title : '处理中',
				msg : '请稍后',
			});
			$.messager.progress('close');
			$.ajax({
				url : 'download.html',//后台方法名字
				type : 'POST',
				data : {  
					//传入后台的参数,从页面获取
				},
				success : function(data) {
		            //加载成功后的操作
				}
			});
		}
	});
}

后台代码

Model类 Student

public class Student {

	private String name;
	private int age;
	private String address;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	
}

处理逻辑,实现功能的类中代码

@RequestMapping(value = "/download.html", method = RequestMethod.POST)
	public void download(HttpServletRequest request,HttpServletResponse response) {
		// TODO Auto-generated method stub
		List<Student> list = new ArrayList<Student>();//Student是被导出数据的类型,一般是自己写的Model类

		XSSFWorkbook excelbook = new XSSFWorkbook(); //创建workBook
		XSSFSheet excelSheet = excelbook.createSheet();//创建sheet表
		XSSFRow excelRow = excelSheet.createRow(0);//创建行
		XSSFCellStyle headerStyle = excelbook.createCellStyle();//设置 居中
		headerStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);
		//接下来是创建 列标题 ,cell的起始值是 0,可创建n个列标题  
		XSSFCell cell = excelRow.createCell(0);
		cell.setCellStyle(headerStyle);//居中
		cell.setCellValue("列标题 ");

		//接下来遍历List,并写入EXCEL中
		for(int i = 0; i < list.size(); i++){
			//创建行,行号应从1开始,因为表头行(列标题)占据了第0行
			excelRow = excelSheet.createRow(i + 1); 
			Student t = list.get(i); // List 的起始值是0
			//将该行每一列的数据写入,可写n列
			cell = excelRow.createCell(0);
			cell.setCellValue(t.getName());
		}
		
		try {
			String filePath = "EXCEL表格导出路径.xls";
			writeExcel(response, excelbook, filePath, "文件名");//具体导出的方法
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

具体实现导出EXCEL的方法

//具体导出的方法
	private static void writeExcel(HttpServletResponse response, Workbook work,
			String filePath, String fileName) throws IOException {
		OutputStream outputStream = new FileOutputStream(filePath);
		try {
			response.setContentType("application/ms-excel;charset=UTF-8");
			response.setHeader("Content-Disposition", "attachment;filename="
					.concat(String.valueOf(URLEncoder.encode(fileName + ".xls",
							"UTF-8"))));
			work.write(outputStream);
		} catch (IOException e) {
			System.out.println("输出流错误");
			e.printStackTrace();
		} finally {
			outputStream.close();
		}
	}

 

转载于:https://my.oschina.net/worriedfox/blog/1540565

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值