ExcelUtil.java 3.36 KB
package com.bsth.util;

import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;

/**
 * @ClassName: ExcelUtil.java
 * @Description: TODO()
 * @author: YouRuiFeng
 * @date: 2017-8-13 下午3:00:44
 * 
 */

@SuppressWarnings("deprecation")
public class ExcelUtil {

	
	public void buildExcelDocument(Map<String, Object> map, String exportName, HttpServletResponse response) throws Exception {
		// 声明一个工作薄
	      HSSFWorkbook workbook = new HSSFWorkbook();
	    /*  // 生成一个表格
	      HSSFSheet sheet = workbook.createSheet(title);
	      // 设置表格默认列宽度为15个字节
	      sheet.setDefaultColumnWidth((short) 15);*/
	      // 生成一个样式
	      HSSFCellStyle style = workbook.createCellStyle();
	      // 设置这些样式
	      style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
	      style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
	      style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
	      style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
	      style.setBorderRight(HSSFCellStyle.BORDER_THIN);
	      style.setBorderTop(HSSFCellStyle.BORDER_THIN);
	      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
	      // 生成一个字体
	      HSSFFont font = workbook.createFont();
	      font.setColor(HSSFColor.VIOLET.index);
	      font.setFontHeightInPoints((short) 12);
	      font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
	      // 把字体应用到当前的样式
	      style.setFont(font);
	      HSSFCellStyle cellStyle =workbook.createCellStyle();
          cellStyle.setFont(font);
          cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平布局:居中
          cellStyle.setWrapText(true);
          
		//获取sheet名称
		String sheetName = (null==map.get("sheetName"))?"Sheet":map.get("sheetName").toString();
		List<String> titleList = (List<String>) map.get("title");
		Map<String,List<String>> content = (Map<String,List<String>>)map.get("content");
		//设置wordsheet名
		HSSFSheet sheet = workbook.createSheet(sheetName);
		//创建第一行
		HSSFRow row = sheet.createRow(0);
		//设置 ABCD列名
		sheet.autoSizeColumn((short)0);
		for(int i=0;i<titleList.size();i++){
			row.createCell(i).setCellValue(titleList.get(i));
			row.setRowStyle(cellStyle);
		}
		for(int i=1;i<=content.size();i++){
			sheet.autoSizeColumn((short)i); //调整第一列宽度
			HSSFRow row_ = sheet.createRow(i);
			List<String> temp = content.get(i+"");
			for(int j=0;j<temp.size();j++){
				row_.createCell(j).setCellValue(temp.get(j));
				row_.setRowStyle(cellStyle);
			}
		}
		String filename =exportName+ ".xls";
		response.reset();//设置为没有缓存
		response.setContentType("application/vnd.ms-excel;charset=utf-8");
		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
		OutputStream ouputStream = response.getOutputStream();
		workbook.write(ouputStream);
		ouputStream.flush();
		ouputStream.close();

	}
}