excel工具类
package cn.com.qmhd.iicp.crm.util;import java.io.OutputStream;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.Collection;import java.util.Date;import java.util.List;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;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.formula.functions.T;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Drawing;import org.apache.poi.ss.usermodel.IndexedColors;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.util.CellRangeAddress;import org.apache.poi.xssf.usermodel.XSSFCellStyle;import org.apache.poi.xssf.usermodel.XSSFClientAnchor;import org.apache.poi.xssf.usermodel.XSSFDrawing;import org.apache.poi.xssf.usermodel.XSSFFont;import org.apache.poi.xssf.usermodel.XSSFRichTextString;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import cn.com.qmhd.iicp.crm.modal.Callrecords;import cn.com.qmhd.iicp.crm.modal.TelephoneBook;import cn.com.qmhd.iicp.crm.result.CallResult;/** * * @author 李东坡 * @version 1.0 * @时间 2016年4月22日 * @描述 */public class ExcelExportUtil<T> { /** * 导出excel工具类 * @title exportExcel * @author 李东坡 2016年4月22日 * @param title sheet名称 * @param headers 表头 * @param columns 列 * @param result 数据集 * @param out * @throws Exception * @description */ public void exportExcel(String title, String[] headers, String[] columns, List<Map<String, String>> result, OutputStream out) throws Exception { // 声明一个工作薄 @SuppressWarnings("resource") HSSFWorkbook workbook = new HSSFWorkbook(); // 生成一个表格 HSSFSheet sheet = workbook.createSheet(title); // 设置表格默认列宽度为20个字节 sheet.setDefaultColumnWidth(25); // 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); // 设置这些样式 style.setFillForegroundColor(HSSFColor.GOLD.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); // 指定当单元格内容显示不下时自动换行 style.setWrapText(true); sheet.createDrawingPatriarch(); // 产生表格标题行 // 表头的样式 HSSFCellStyle titleStyle = workbook.createCellStyle();// 创建样式对象 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中 titleStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中 // 设置字体 HSSFFont titleFont = workbook.createFont(); // 创建字体对象 titleFont.setFontHeightInPoints((short) 15); // 设置字体大小 titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体 // titleFont.setFontName("黑体"); // 设置为黑体字 titleStyle.setFont(titleFont); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, (headers.length - 1)));// 指定合并区域 HSSFRow rowHeader = sheet.createRow(0); HSSFCell cellHeader = rowHeader.createCell(0); // 只能往第一格子写数据,然后应用样式,就可以水平垂直居中 HSSFRichTextString textHeader = new HSSFRichTextString(title); cellHeader.setCellStyle(titleStyle); cellHeader.setCellValue(textHeader); HSSFRow row = sheet.createRow(1); for (int i = 0; i < headers.length; i++) { HSSFCell cell = row.createCell(i); cell.setCellStyle(style); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text); } // 遍历集合数据,产生数据行 if (result != null) { int index = 2; for (Map<String, String> m : result) { row = sheet.createRow(index); index++; for (int i = 0; i < columns.length; i++) { Cell cell = row.createCell(i, Cell.CELL_TYPE_BLANK); String text = m.get(columns[i]); HSSFRichTextString richString = new HSSFRichTextString(text); cell.setCellValue(richString); } } } workbook.write(out); }// @Deprecated// public void expoortExcelx(String title, String[] headers, String[] columns,// Collection<T> result, OutputStream out, String pattern) throws NoSuchMethodException, Exception{// //创建工作薄// XSSFWorkbook workbook=new XSSFWorkbook();// //创建表格// Sheet sheet=workbook.createSheet("title");// //设置默认宽度// sheet.setDefaultColumnWidth(25);// //创建样式// XSSFCellStyle style=workbook.createCellStyle();// //设置样式// style.setFillForegroundColor(IndexedColors.GOLD.index);// style.setFillPattern(CellStyle.SOLID_FOREGROUND);// style.setBorderBottom(CellStyle.BORDER_THIN);// style.setBorderLeft(CellStyle.BORDER_THIN);// style.setBorderRight(CellStyle.BORDER_THIN);// style.setBorderTop(CellStyle.BORDER_THIN);// //生成字体// XSSFFont font=workbook.createFont();// font.setColor(IndexedColors.VIOLET.index);// font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);// //应用字体// style.setFont(font);// // //自动换行// style.setWrapText(true);// //声明一个画图的顶级管理器// Drawing drawing=(XSSFDrawing) sheet.createDrawingPatriarch();// //表头的样式// XSSFCellStyle titleStyle=workbook.createCellStyle();//样式对象// titleStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);//水平居中// titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);// //设置字体// XSSFFont titleFont=workbook.createFont();// titleFont.setFontHeightInPoints((short)15);// titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体// titleStyle.setFont(titleFont);// sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headers.length-1));// //指定合并区域// Row rowHeader = sheet.createRow(0);// //XSSFRow rowHeader=sheet.createRow(0);// Cell cellHeader=rowHeader.createCell(0);// XSSFRichTextString textHeader=new XSSFRichTextString(title);// cellHeader.setCellStyle(titleStyle);// cellHeader.setCellValue(textHeader);// // Row row=sheet.createRow(1);// for(int i=0;i<headers.length;i++){// Cell cell=row.createCell(i);// cell.setCellStyle(style);// XSSFRichTextString text=new XSSFRichTextString(headers[i]);// cell.setCellValue(text);// }// //遍历集合数据,产生数据行// if(result!=null&&result.size()>0){// int index=2;// for(T t:result){// row=sheet.createRow(index);// index++;// for(short i=0;i<columns.length;i++){// Cell cell=row.createCell(i);// String filedName=columns[i];// String getMethodName="get"+filedName.substring(0,1).toUpperCase()// +filedName.substring(1);// Class tCls=t.getClass();// Method getMethod=tCls.getMethod(getMethodName,new Class[]{});// Object value=getMethod.invoke(t, new Class[]{});// String textValue=null;// if(value==null){// textValue="";// }else if(value instanceof Date){// Date date=(Date)value;// SimpleDateFormat sdf = new SimpleDateFormat(pattern);// textValue = sdf.format(date);// }else if(value instanceof byte[]){// row.setHeightInPoints(80);// sheet.setColumnWidth(i, 35*100);// byte[] bsValue=(byte[])value;// XSSFClientAnchor anchor=new XSSFClientAnchor(0,0,1023,255,6,index,6,index);// anchor.setAnchorType(2);// drawing.createPicture(anchor, workbook.addPicture(bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG));// }else{// // 其它数据类型都当作字符串简单处理// textValue=value.toString();// }// // if(textValue!=null){// Pattern p = Pattern.compile("^//d+(//.//d+)?$");// Matcher matcher = p.matcher(textValue);// if (matcher.matches()) {// // 是数字当作double处理// cell.setCellValue(Double.parseDouble(textValue));// } else {// XSSFRichTextString richString = new XSSFRichTextString(// textValue);// // HSSFFont font3 = workbook.createFont();// // font3.setColor(HSSFColor.BLUE.index);// // richString.applyFont(font3);// cell.setCellValue(richString);// }// }// // }// }// }// workbook.write(out); // } /** * 导出excel工具类 * @title expoortExcelx * @param title sheet名称 * @param headers 表头 * @param columns 列 * @param list 数据 * @param out * @param pattern * @throws NoSuchMethodException * @throws Exception * @description */ public void expoortExcelx(String title, String[] headers, String[] columns, List<T> list, OutputStream out, String pattern) throws NoSuchMethodException, Exception{ //创建工作薄 XSSFWorkbook workbook=new XSSFWorkbook(); //创建表格 Sheet sheet=workbook.createSheet("title"); //设置默认宽度 sheet.setDefaultColumnWidth(25); //创建样式 XSSFCellStyle style=workbook.createCellStyle(); //设置样式 style.setFillForegroundColor(IndexedColors.GOLD.index); style.setFillPattern(CellStyle.SOLID_FOREGROUND); style.setBorderBottom(CellStyle.BORDER_THIN); style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); //生成字体 XSSFFont font=workbook.createFont(); font.setColor(IndexedColors.VIOLET.index); font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); //应用字体 style.setFont(font); //自动换行 style.setWrapText(true); //声明一个画图的顶级管理器 Drawing drawing=(XSSFDrawing) sheet.createDrawingPatriarch(); //表头的样式 XSSFCellStyle titleStyle=workbook.createCellStyle();//样式对象 titleStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);//水平居中 titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //设置字体 XSSFFont titleFont=workbook.createFont(); titleFont.setFontHeightInPoints((short)15); titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体 titleStyle.setFont(titleFont); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headers.length-1)); //指定合并区域 Row rowHeader = sheet.createRow(0); //XSSFRow rowHeader=sheet.createRow(0); Cell cellHeader=rowHeader.createCell(0); XSSFRichTextString textHeader=new XSSFRichTextString(title); cellHeader.setCellStyle(titleStyle); cellHeader.setCellValue(textHeader); Row row=sheet.createRow(1); for(int i=0;i<headers.length;i++){ Cell cell=row.createCell(i); cell.setCellStyle(style); XSSFRichTextString text=new XSSFRichTextString(headers[i]); cell.setCellValue(text); } //遍历集合数据,产生数据行 if(list!=null&&list.size()>0){ int index=2; for(T t:list){ row=sheet.createRow(index); index++; for(short i=0;i<columns.length;i++){ Cell cell=row.createCell(i); String filedName=columns[i]; String getMethodName="get"+filedName.substring(0,1).toUpperCase() +filedName.substring(1); Class tCls=t.getClass(); Method getMethod=tCls.getMethod(getMethodName,new Class[]{}); Object value=getMethod.invoke(t, new Class[]{}); String textValue=null; if(value==null){ textValue=""; }else if(value instanceof Date){ Date date=(Date)value; SimpleDateFormat sdf = new SimpleDateFormat(pattern); textValue = sdf.format(date); }else if(value instanceof byte[]){ row.setHeightInPoints(80); sheet.setColumnWidth(i, 35*100); byte[] bsValue=(byte[])value; XSSFClientAnchor anchor=new XSSFClientAnchor(0,0,1023,255,6,index,6,index); anchor.setAnchorType(2); drawing.createPicture(anchor, workbook.addPicture(bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG)); }else{ // 其它数据类型都当作字符串简单处理 textValue=value.toString(); } if(textValue!=null){ Pattern p = Pattern.compile("^//d+(//.//d+)?$"); Matcher matcher = p.matcher(textValue); if (matcher.matches()) { // 是数字当作double处理 cell.setCellValue(Double.parseDouble(textValue)); } else { XSSFRichTextString richString = new XSSFRichTextString( textValue); // HSSFFont font3 = workbook.createFont(); // font3.setColor(HSSFColor.BLUE.index); // richString.applyFont(font3); cell.setCellValue(richString); } } } } } workbook.write(out); } public void expoortExcelx1(String title, String[] headers, String[] columns, List<CallResult> list, OutputStream out, String pattern) throws NoSuchMethodException, Exception{ //创建工作薄 XSSFWorkbook workbook=new XSSFWorkbook(); //创建表格 Sheet sheet=workbook.createSheet("title"); //设置默认宽度 sheet.setDefaultColumnWidth(25); //创建样式 XSSFCellStyle style=workbook.createCellStyle(); //设置样式 style.setFillForegroundColor(IndexedColors.GOLD.index); style.setFillPattern(CellStyle.SOLID_FOREGROUND); style.setBorderBottom(CellStyle.BORDER_THIN); style.setBorderLeft(CellStyle.BORDER_THIN); style.setBorderRight(CellStyle.BORDER_THIN); style.setBorderTop(CellStyle.BORDER_THIN); //生成字体 XSSFFont font=workbook.createFont(); font.setColor(IndexedColors.VIOLET.index); font.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD); //应用字体 style.setFont(font); //自动换行 style.setWrapText(true); //声明一个画图的顶级管理器 Drawing drawing=(XSSFDrawing) sheet.createDrawingPatriarch(); //表头的样式 XSSFCellStyle titleStyle=workbook.createCellStyle();//样式对象 titleStyle.setAlignment(CellStyle.ALIGN_CENTER_SELECTION);//水平居中 titleStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER); //设置字体 XSSFFont titleFont=workbook.createFont(); titleFont.setFontHeightInPoints((short)15); titleFont.setBoldweight(XSSFFont.BOLDWEIGHT_BOLD);//粗体 titleStyle.setFont(titleFont); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, headers.length-1)); //指定合并区域 Row rowHeader = sheet.createRow(0); //XSSFRow rowHeader=sheet.createRow(0); Cell cellHeader=rowHeader.createCell(0); XSSFRichTextString textHeader=new XSSFRichTextString(title); cellHeader.setCellStyle(titleStyle); cellHeader.setCellValue(textHeader); Row row=sheet.createRow(1); for(int i=0;i<headers.length;i++){ Cell cell=row.createCell(i); cell.setCellStyle(style); XSSFRichTextString text=new XSSFRichTextString(headers[i]); cell.setCellValue(text); } //遍历集合数据,产生数据行 if(list!=null&&list.size()>0){ int index=2; for(CallResult t:list){ row=sheet.createRow(index); index++; for(short i=0;i<columns.length;i++){ Cell cell=row.createCell(i); String filedName=columns[i]; String getMethodName="get"+filedName.substring(0,1).toUpperCase() +filedName.substring(1); Class tCls=t.getClass(); Method getMethod=tCls.getMethod(getMethodName,new Class[]{}); Object value=getMethod.invoke(t, new Class[]{}); String textValue=null; if(value==null){ textValue=""; }else if(value instanceof Date){ Date date=(Date)value; SimpleDateFormat sdf = new SimpleDateFormat(pattern); textValue = sdf.format(date); }else if(value instanceof byte[]){ row.setHeightInPoints(80); sheet.setColumnWidth(i, 35*100); byte[] bsValue=(byte[])value; XSSFClientAnchor anchor=new XSSFClientAnchor(0,0,1023,255,6,index,6,index); anchor.setAnchorType(2); drawing.createPicture(anchor, workbook.addPicture(bsValue, XSSFWorkbook.PICTURE_TYPE_JPEG)); }else{ // 其它数据类型都当作字符串简单处理 textValue=value.toString(); } if(textValue!=null){ Pattern p = Pattern.compile("^//d+(//.//d+)?$"); Matcher matcher = p.matcher(textValue); if (matcher.matches()) { // 是数字当作double处理 cell.setCellValue(Double.parseDouble(textValue)); } else { XSSFRichTextString richString = new XSSFRichTextString( textValue); // HSSFFont font3 = workbook.createFont(); // font3.setColor(HSSFColor.BLUE.index); // richString.applyFont(font3); cell.setCellValue(richString); } } } } } workbook.write(out); }}

浙公网安备 33010602011771号