//main方法
package ExcelTool;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 *测试导出数据
 */
@SuppressWarnings("serial")
public class testExcel extends HttpServlet{


	public static void main(String[] args) throws UnsupportedEncodingException {
		List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("序列", 1);
		map.put("姓名", "张三");
		map.put("年龄", 20);
		map.put("户籍", "陕西");
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
		list.add(map);
		
		
		//System.getProperty("user.dir") 获取当前项目的路径
		String fileName=System.getProperty("user.dir")+"\\导出数据Excel.xls";//定义到处路径
		
		System.out.println(fileName);
		
		
		String worksheetTitle = "Excel导出信息";//sheet名
		String sheetName="数据1";
		HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet(sheetName);//定义sheet名
		excelToolClass exportExcel = new excelToolClass(wb,sheet);//调用Excel工具类
		fileName = new String(fileName.getBytes("GBK"), "GBK");//修改编码格式
		//定义第二行标题
		String id = "序列";
		String name = "姓名";
		String age = "年龄";
		String address = "户籍";
		List<String> l=new ArrayList<String>();
		l.add(id);
		l.add(name);
		l.add(age);
		l.add(address);
			
		// 创建报表头部
		exportExcel.createNormalHead(worksheetTitle, 3);
		//定义第一行
		exportExcel.createNormalTwoRow(l, 0);
		//导入数据
		exportExcel.createColumHeader(list);
		//输出文件流,把相应的Excel工作簿 输出到本地
		exportExcel.outputExcel(fileName);
	}
}

  //导出工具类


package ExcelTool; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRichTextString; 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; import org.apache.poi.ss.util.Region; /** * EXCEL报表工具类. * */ public class excelToolClass { private HSSFWorkbook wb = null;//得到Excel工作簿对象 private HSSFSheet sheet = null;//得到Excel工作表对象 public excelToolClass(HSSFWorkbook wb,HSSFSheet sheet){ this.wb=wb; this.sheet = sheet; } /** * 创建通用的Excel头 * * @param headString 头部显示的字符 * @param colSum 该报表的列数 */ public void createNormalHead(String headString, int colSum){ // 设置第一行 HSSFRow row = sheet.createRow(0);//创建Excel工作表的行 HSSFCell cell = row.createCell(0);//创建Excel工作表指定行的单元格 row.setHeight((short) 1000);//设置高度 // 定义单元格为字符串类型 cell.setCellType(HSSFCell.ENCODING_UTF_16);// 中文处理 cell.setCellValue(new HSSFRichTextString(headString)); // 指定合并区域 sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) colSum)); // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); // 设置单元格水平对齐类型 cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("微软雅黑");//字体 font.setFontHeightInPoints((short)16);//设置字体 cellStyle.setFont(font); cell.setCellStyle(cellStyle); } /** * 创建报表第二行 * @param params * 统计条件数组 * @param colSum * 需要合并到的列索引 * */ @SuppressWarnings("deprecation") public void createNormalTwoRow(List<String> list, int colSum){ // 创建第二行 HSSFRow row1 = sheet.createRow(1); row1.setHeight((short) 400);//设置高度 HSSFCell cell2 = row1.createCell(0);//创建Excel工作表指定行的单元格 cell2.setCellType(HSSFCell.ENCODING_UTF_16);// 中文处理 // 指定合并区域 sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) colSum)); // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体");//字体 font.setFontHeightInPoints((short)10);//设置字体 cellStyle.setFont(font); //HSSFCellStyle.ALIGN_CENTER 设定居中 for(int i=0;i<list.size();i++){ cteateCell(wb,row1,i,HSSFCellStyle.ALIGN_CENTER,list.get(i),cellStyle); } } /** * 设置报表标题 * * @param columHeader * 标题字符串数组 */ public void createColumHeader(List<Map<String,Object>> listInfo) { // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体");//字体 font.setFontHeightInPoints((short)10);//设置字体 cellStyle.setFont(font); // 设置单元格背景色 //cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); //cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); HSSFCell cell3 = null; for (int i = 0; i < listInfo.size(); i++) { //循环插入数据 HSSFRow row2 = sheet.createRow(i+2); row2.setHeight((short) 400);// 指定行高 cell3 = row2.createCell(0); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString(listInfo.get(i).get("序列").toString())); cell3 = row2.createCell(1); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString((String) listInfo.get(i).get("姓名"))); cell3 = row2.createCell(2); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString(listInfo.get(i).get("年龄").toString())); cell3 = row2.createCell(3); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString((String) listInfo.get(i).get("户籍"))); } } /** * 创建内容单元格 * * @param wb * HSSFWorkbook * @param row * HSSFRow * @param col * short型的列索引 * @param align * 对齐方式 * @param val * 列值 */ public void cteateCell(HSSFWorkbook wb, HSSFRow row, int col, short align, String val,HSSFCellStyle cellstyle ) { HSSFCell cell = row.createCell(col); cell.setCellType(HSSFCell.ENCODING_UTF_16); cell.setCellValue(new HSSFRichTextString(val)); cell.setCellStyle(cellstyle); } /** * 创建合计行 * * @param colSum * 需要合并到的列索引 * @param cellValue */ public void createLastSumRow(int colSum, List<String> list) { // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); // 获取工作表最后一行 HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1)); HSSFCell sumCell = lastRow.createCell(0);//创建Excel工作表指定行的单元格 sumCell.setCellValue(new HSSFRichTextString("合计")); sumCell.setCellStyle(cellStyle); // 合并 最后一行的第零列-最后一行的第一列 sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0, sheet.getLastRowNum(), (short) colSum));// 指定合并区域 for (int i = 2; i < (list.size() + 2); i++) { // 定义最后一行的第三列 sumCell = lastRow.createCell(i); sumCell.setCellStyle(cellStyle); // 定义数组 从0开始。 sumCell.setCellValue(new HSSFRichTextString(list.get(i-2))); } } /** * 输入EXCEL文件 * * @param fileName * 文件名 */ public void outputExcel(String fileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(new File(fileName)); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public HSSFWorkbook getWb() { return wb; } public void setWb(HSSFWorkbook wb) { this.wb = wb; } public HSSFSheet getSheet() { return sheet; } public void setSheet(HSSFSheet sheet) { this.sheet = sheet; } }

  

posted on 2017-07-06 15:04  NO.初学者  阅读(14087)  评论(0编辑  收藏  举报