zoukankan      html  css  js  c++  java
  • poi 和jxl导出excel(2)

    controller:

        /**
         * 导出报表
         * @return
         */
        @RequestMapping(value = "/export")
        @ResponseBody
        public void export(HttpServletRequest request,HttpServletResponse response, String id, String auditno) throws Exception {
        /*jxl
        String headers = "";
            String[] array = addEmpService.returnStringArray(id);
            jxl.createTable(headers, array, "F:\qq"+auditno+".xls");*/
            //获取数据
            List<EmpAuditDetails> list = addEmpService.queryDetailsById(id);
    
            //excel标题
            String[] title = {"姓名","身份证号码","性别","出生日期","保险缴费基数","工种","增员年月","增员原因","手机号","紧急联系人","紧急联系电话","家庭住址","通讯地址省级","通讯地址市级","通讯地址区县级","通讯地址补充信息","户口所在地省级","户口所在地市级","户口所在地区县级","户口所在地补充信息"};
    
            //excel文件名
            String fileName = auditno+".xls";
    
            //sheet名
            String sheetName = auditno;
            String [][] content = new String[list.size()][];
            for (int i = 0; i < list.size(); i++) {
                content[i] = new String[title.length];
                content[i][0] = list.get(i).getName();
                content[i][1] = list.get(i).getIdno();
                content[i][2] = list.get(i).getSex();
                content[i][3] = list.get(i).getBirth();
                content[i][4] = String.valueOf(list.get(i).getInsuranceBase());
                content[i][5] = list.get(i).getJob();
                content[i][6] = DateUtils.convertDateToString(list.get(i).getAddYm(),"yyyy-MM-dd");
                content[i][7] = list.get(i).getAddReason();
                content[i][8] = list.get(i).getPhone();
                content[i][9] = list.get(i).getLink();
                content[i][10] = list.get(i).getLinkphone();
                content[i][11] = list.get(i).getAddress();
                content[i][12] = list.get(i).getProvince();
                content[i][13] = list.get(i).getCity();
                content[i][14] = list.get(i).getDistrict();
                content[i][15] = list.get(i).getAddressExtra();
                content[i][16] = list.get(i).getNativeProvince();
                content[i][17] = list.get(i).getNativeCity();
                content[i][18] = list.get(i).getNativeDistrict();
                content[i][19] = list.get(i).getNativeExtra();
    
            }
    
    //创建HSSFWorkbook
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
    
    //响应到客户端
            try {
                ResponseUtil.setResponseHeader(response, fileName);
                OutputStream os = response.getOutputStream();
                wb.write(os);
                os.flush();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    excelutil

    package com.lf.common.utils;
    
    import java.sql.ResultSet;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.poi.hssf.usermodel.*;
    import org.apache.poi.hssf.util.HSSFColor;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    
    public class ExcelUtil {
            /**
             * 导出Excel
             * @param sheetName sheet名称
             * @param title 标题
             * @param values 内容
             * @param wb HSSFWorkbook对象
             * @return
             */
            public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
    
                // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
                if(wb == null){
                    wb = new HSSFWorkbook();
                }
    
                // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
                HSSFSheet sheet = wb.createSheet(sheetName);
    
                // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
                HSSFRow row = sheet.createRow(0);
    
                // 第四步,创建单元格,并设置值表头 设置表头居中
                HSSFCellStyle style = wb.createCellStyle();
                style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                HSSFFont font=(HSSFFont) wb.createFont();
                font.setColor(HSSFColor.RED.index);
                style.setFont(font);// 创建一个居中格式
    
                //声明列对象
                HSSFCell cell = null;
    
                //创建标题
                for(int i=0;i<title.length;i++){
                    cell = row.createCell(i);
                    cell.setCellValue(title[i]);
                    cell.setCellStyle(style);
                }
                //创建内容
                for(int i=0;i<values.length;i++){
                    row = sheet.createRow(i + 1);
                    for(int j=0;j<values[i].length;j++){
                        //将内容按顺序赋给对应的列对象
                        row.createCell(j).setCellValue(values[i][j]);
                    }
                }
                return wb;
            }
        }
    ResponseUtil
    package com.lf.common.utils;
    
    import org.apache.poi.ss.usermodel.Workbook;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    
    public class ResponseUtil {
        public static void write(HttpServletResponse response, Object o) throws Exception {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter out = response.getWriter();
            out.println(o.toString());
            out.flush();
            out.close();
        }
    
        public static void export(HttpServletResponse response, Workbook wb, String fileName) throws Exception{
            //设置头  固定格式
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("utf-8"), "iso8859-1"));
    
            response.setContentType("text/html;charset=utf-8");
    
            OutputStream out = response.getOutputStream();
            wb.write(out);
            out.flush();
            out.close();
        }
        //发送响应流方法
        public static void setResponseHeader(HttpServletResponse response, String fileName) {
            try {
                try {
                    fileName = new String(fileName.getBytes(),"ISO8859-1");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
                response.setContentType("application/octet-stream;charset=ISO8859-1");
                response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
                response.addHeader("Pargam", "no-cache");
                response.addHeader("Cache-Control", "no-cache");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    jxl:

    package  com.lf.common.utils;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    import org.springframework.stereotype.Service;
    
    import com.lf.utils.DateUtils;
    
    import jxl.CellView;
    import jxl.Workbook;
    import jxl.format.Alignment;
    import jxl.format.UnderlineStyle;
    import jxl.read.biff.BiffException;
    import jxl.write.Border;
    import jxl.write.BorderLineStyle;
    import jxl.write.Colour;
    import jxl.write.Label;
    import jxl.write.NumberFormats;
    import jxl.write.WritableCellFormat;
    import jxl.write.WritableFont;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
    @Service
    public class JxlWriteExcel {
        public boolean createTable(String header, String[] body, String filePath) {
              boolean createFlag = true;
              WritableWorkbook book;
              try {
               // 根据路径生成excel文件
               book = Workbook.createWorkbook(new File(filePath));
               
               // 创建一个sheet名为"表格"
               WritableSheet sheet = book.createSheet("表格", 0);
               // 设置NO列宽度
               
               // 去掉整个sheet中的网格线
               sheet.getSettings().setShowGridLines(false);
               Label tempLabel = null;
               // 表头输出
               String[] headerArr = header.split(",");
               int headerLen = headerArr.length;
               // 循环写入表头内容
               for (int i = 0; i < headerLen; i++) {
                tempLabel = new Label( i, 0, headerArr[i],
                  getHeaderCellStyle());
                sheet.addCell(tempLabel);
                sheet.setColumnView(i, 30);
               }
               // 表体输出
               int bodyLen = body.length;
               // 循环写入表体内容
               for (int j = 0; j < bodyLen; j++) {
                String[] bodyTempArr = body[j].split(",");
                for (int k = 0; k < bodyTempArr.length; k++) {
                 WritableCellFormat tempCellFormat = null;
                 tempCellFormat = getBodyCellStyle();
                 if (tempCellFormat != null) {
                  if (k == 0 || k == (bodyTempArr.length - 1)) {
                   tempCellFormat.setAlignment(Alignment.CENTRE);
                  }
                 }
                 tempLabel = new Label( k, 1 + j, bodyTempArr[k],
                   tempCellFormat);
                 sheet.addCell(tempLabel);
                }
               }
               book.write();
               book.close();
              } catch (IOException e) {
               createFlag = false;
               System.out.println("EXCEL创建失败!");
               e.printStackTrace();
              } catch (RowsExceededException e) {
               createFlag = false;
               System.out.println("EXCEL单元设置创建失败!");
               e.printStackTrace();
              } catch (WriteException e) {
               createFlag = false;
               System.out.println("EXCEL写入失败!");
               e.printStackTrace();
              }
    
              return createFlag;
             }
        public  boolean  createErroeTable(String header, String[] body, String filePath ,String sheetName,int sheetNum) {
              boolean createFlag = true;
              WritableWorkbook book ;
              WritableSheet sheet = null ;
              File errorFile = new File(filePath);
              try {
                  if (errorFile.exists()) {
                      Workbook workbook = Workbook.getWorkbook(errorFile);
                      book =  workbook.createWorkbook(errorFile,workbook);
                      sheet = book.createSheet(sheetName, 1);
                  }else {         
                      // 根据路径生成excel文件
                       book = Workbook.createWorkbook(errorFile);
                       
                       // 创建一个sheet名为"表格"
                       sheet = book.createSheet(sheetName, sheetNum);
                  }
               // 设置NO列宽度
               
               // 去掉整个sheet中的网格线
               sheet.getSettings().setShowGridLines(false);
               Label tempLabel = null;
               // 表头输出
               String[] headerArr = header.split(",");
               int headerLen = headerArr.length;
               // 循环写入表头内容
               for (int i = 0; i < headerLen; i++) {
                tempLabel = new Label( i, 0, headerArr[i],
                  getHeaderCellStyle());
                sheet.addCell(tempLabel);
                sheet.setColumnView(i, 30);
               }
               // 表体输出
               int bodyLen = body.length;
               // 循环写入表体内容
               for (int j = 0; j < bodyLen; j++) {
                String[] bodyTempArr = body[j].split(",");
                for (int k = 0; k < bodyTempArr.length; k++) {
                 WritableCellFormat tempCellFormat = null;
                 tempCellFormat = getBodyCellStyle();
                 if (tempCellFormat != null) {
                  if (k == 0 || k == (bodyTempArr.length - 1)) {
                   tempCellFormat.setAlignment(Alignment.CENTRE);
                  }
                 }
                 tempLabel = new Label( k, 1 + j, bodyTempArr[k],
                   tempCellFormat);
                 sheet.addCell(tempLabel);
                }
               }
               book.write();
               book.close();
              } catch (IOException e) {
               createFlag = false;
               System.out.println("EXCEL创建失败!");
               e.printStackTrace();
              } catch (RowsExceededException e) {
               createFlag = false;
               System.out.println("EXCEL单元设置创建失败!");
               e.printStackTrace();
              } catch (WriteException e) {
               createFlag = false;
               System.out.println("EXCEL写入失败!");
               e.printStackTrace();
              } catch (BiffException e) {
               System.out.println("读取EXCEL对象失败!");
                e.printStackTrace();
            }
    
              return createFlag;
             }
             public WritableCellFormat getHeaderCellStyle() {
              WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10,
                WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE);
              WritableCellFormat headerFormat = new WritableCellFormat(
                NumberFormats.TEXT);
              try {
               // 添加字体设置
               headerFormat.setFont(font);
               // 设置单元格背景色:表头为黄色
               headerFormat.setBackground(Colour.YELLOW);
               // 设置表头表格边框样式
               // 整个表格线为粗线、黑色
               headerFormat.setBorder(Border.ALL, BorderLineStyle.THICK,
                 Colour.BLACK);
               // 表头内容水平居中显示
               headerFormat.setAlignment(Alignment.CENTRE);
              } catch (WriteException e) {
               System.out.println("表头单元格样式设置失败!");
              }
              return headerFormat;
             }
    
             public WritableCellFormat getBodyCellStyle() {
              WritableFont font = new WritableFont(WritableFont.createFont("宋体"), 10,
                WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE);
              WritableCellFormat bodyFormat = new WritableCellFormat(font);
              try {
               // 设置单元格背景色:表体为白色
               bodyFormat.setBackground(Colour.WHITE);
               // 设置表头表格边框样式
               // 整个表格线为细线、黑色
               bodyFormat
                 .setBorder(Border.ALL, BorderLineStyle.THIN, Colour.BLACK);
              } catch (WriteException e) {
               System.out.println("表体单元格样式设置失败!");
              }
              return bodyFormat;
             }
             public void deleteFile(String fileName){
                 File file = new File(fileName);
                 if(file.exists()){
                     file.delete();
                     System.out.println("删除文件成功");
                 }else{
                     System.out.println("文件不存在");
                 }
             }
                /**
                 * 创建表格
                 * @module:
                 * @author: ZhangK
                 * @date: Aug 1, 2016
                 */
                 public String createTableByZk(String header, String[] body, String filePath) {
                      WritableWorkbook book;
                      
                      String date = DateUtils.convertDateToString(new Date(), "yyyyMMddHHmmssSSS");
                      String fileName=date+".xls";
                      File file = null;
                      if (fileName !=null|| "".equals(fileName)) {            
                          file = new File(fileName);
                      }else{
                          return null;
                      }
                      try {
                       // 根据路径生成excel文件
                       book = Workbook.createWorkbook(file);
                       // 创建一个sheet名为"表格"
                       WritableSheet sheet = book.createSheet("发货情况", 0);           
                       // 去掉整个sheet中的网格线
                       sheet.getSettings().setShowGridLines(false);
                       Label tempLabel = null;
                       // 表头输出
                       String[] headerArr = header.split(",");
                       int headerLen = headerArr.length;
                       // 循环写入表头内容
                       CellView cv = null;
                       for (int i = 0; i < headerLen; i++) {
                        tempLabel = new Label(i, 0, headerArr[i],
                          getHeaderCellStyle());
                        sheet.addCell(tempLabel);
                           // 设置NO列宽度
                           sheet.setColumnView(i, 15);
                       }
                       // 表体输出
                       int bodyLen = body.length;
                       
                       // 循环写入表体内容
                       for (int j = 0; j < bodyLen; j++) {
                        String[] bodyTempArr = body[j].split(",");
                        for (int k = 0; k < bodyTempArr.length; k++) {
                         WritableCellFormat tempCellFormat = null;
                         tempCellFormat = getBodyCellStyle();
                         if (tempCellFormat != null) {
                          if (k == 0 || k == (bodyTempArr.length - 1)) {
                           tempCellFormat.setAlignment(Alignment.CENTRE);
                          }
                         }
                         tempLabel = new Label( k, 1 + j, bodyTempArr[k],
                           tempCellFormat);
                         sheet.addCell(tempLabel);
                        }
                       }
                       book.write();
                       book.close();
                      } catch (IOException e) {
                          fileName = null;
                       System.out.println("EXCEL创建失败!");
                       e.printStackTrace();
                      } catch (RowsExceededException e) {
                          fileName = null;
                       System.out.println("EXCEL单元设置创建失败!");
                       e.printStackTrace();
                      } catch (WriteException e) {
                          fileName = null;
                       System.out.println("EXCEL写入失败!");
                       e.printStackTrace();
                      }
    
                      return fileName;
                     }
                 
                     /**
                      * list<map>去重
                      * @param list
                      * @param param_list
                      * @return
                      */
                    public String[] RemoveDuplicate(List<Map<String, String>> list,List<String> param_list) {
                        List<Map<String, String>> listMap = new ArrayList<Map<String, String>>();
                        Set<Map> setMap = new HashSet<Map>();
                        for (Map<String, String> map1 : list) {
                            if (setMap.add(map1)) {
                                listMap.add(map1);
                            }
                        }
                        String[] rowData_retail = new String[listMap.size()];
                        for (int i = 0; i < listMap.size(); i++) {
                            Map<String, String> map = listMap.get(i);
                            for (int j = 0; j < param_list.size(); j++) {
                                String param_i = map.get(param_list.get(j));
                                param_i  = map.get(param_list.get(j)) == null ? "" : map
                                        .get(param_list.get(j));
                                if (j == param_list.size() -1) {
                                    rowData_retail[i] = rowData_retail[i] + param_i ;
                                }else if (j==0) {
                                    rowData_retail[i] =  param_i + ",";
                                }else {
                                    rowData_retail[i] = rowData_retail[i] + param_i + ",";
                                }
                                
                            }
                            
                        }
                        return rowData_retail;
                    }
                 public static void main(String[] args) throws IOException {}
    }


  • 相关阅读:
    bzoj1001 狼抓兔子
    bzoj1015 星球大战
    noip模拟赛 楼
    noip模拟赛 radius
    noip模拟赛 helloworld
    noip模拟赛 hungary
    noip模拟赛 gcd
    洛谷P3375【模板】KMP字符串匹配
    noip模拟赛 隔壁
    noip模拟赛 对刚
  • 原文地址:https://www.cnblogs.com/NCL--/p/9448706.html
Copyright © 2011-2022 走看看