当前位置: 代码迷 >> Web前端 >> 运用POI通过servlet导出数据到Excel文件中
  详细解决方案

运用POI通过servlet导出数据到Excel文件中

热度:187   发布时间:2013-04-20 19:43:01.0
使用POI通过servlet导出数据到Excel文件中
package cn.com.songjy.servlet;

import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.codec.binary.Base64;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;

public class ExcelServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
       
    public ExcelServlet() {}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setHeader("Connection", "close");
		response.setHeader("Content-Type", "application/vnd.ms-excel;charset=UTF-8");
		String filename = "会议记录清单.xls";
		filename = encodeFileName(request, filename);
		response.setHeader("Content-Disposition", "attachment;filename=" + filename);
		
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("会议记录清单");
		//wb.setSheetName(0, "会议记录清单");
		
		String[][] content = {
				{ "流水号", "开始时间", "结束时间", "会议时长(分)", "会议人数", "实际参与人数" },
				{ "1", "2012-03", "2012-05", "45", "5", "3" } };
		
		for(int i=0; i<content.length; i++){
			Row row = sheet.createRow(i);
			for (int j=0; j<content[i].length; j++) {
				row.createCell(j).setCellValue(content[i][j]);
			}
		}
		
		
		OutputStream out = response.getOutputStream();
		wb.write(out);
		out.close();
	}
	
	public  String encodeFileName(HttpServletRequest request,
			String fileName) throws UnsupportedEncodingException {
		String agent = request.getHeader("USER-AGENT");
		if (null != agent && -1 != agent.indexOf("MSIE")) {
			return URLEncoder.encode(fileName, "UTF-8");
		} else if (null != agent && -1 != agent.indexOf("Mozilla")) {
			return "=?UTF-8?B?"
					+ (new String(Base64.encodeBase64(fileName
							.getBytes("UTF-8")))) + "?=";
		} else {
			return fileName;
		}
	}

}


使用线程每隔一小时创建一个CSV文件报表:http://www.oschina.net/code/snippet_47886_20440
  相关解决方案