• 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);
                 
        }
    }
  • 相关阅读:
    C# WinForm下,隐藏主窗体,只在进程管理器中显示进程,在任务栏,状态栏都不显示窗体的方法
    C#全能数据库操作类及调用示例
    多个汇总列转换为行记录 mssql
    Oracle 10g创建数据库 用户等基本操作
    Jquery基本选择器 层次选择器 过滤选择器 表单选择器使用示例 带注释
    SQL与ORACLE的外键约束级联更新和删除
    C# 屏幕监控 自动截屏程序 主窗体隐藏,仅在进程中显示
    图文讲解VS2010程序打包操作 安装卸载
    查表法按日期生成流水号 mssql
    给DataTable添加主键 几何级提升Select筛选数据的速度
  • 原文地址:https://www.cnblogs.com/xuyatao/p/7324994.html
Copyright © 2020-2023  润新知