zoukankan      html  css  js  c++  java
  • java导出excel表格

    java导出excel表格:

    1、导入jar包

    <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.5-FINAL</version>
            </dependency>

    2、编写工具类

    package utils;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    public class ExcelUtil {
        
        public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
             // 第一步,创建一个webbook,对应一个Excel文件  
            if(wb == null){
                wb = new HSSFWorkbook();
            }
            // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet  
            HSSFSheet sheet = wb.createSheet(sheetName);  
            // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short  
            HSSFRow row = sheet.createRow(0);  
            // 第四步,创建单元格,并设置值表头 设置表头居中  
            HSSFCellStyle style = wb.createCellStyle();  
            style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式  
            
            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;
        }
        
        
    }

    3、导入表格信息

    package mvc.controller;
    
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    
    import javax.annotation.Resource;
    import javax.servlet.http.HttpServletResponse;
    
    import mvc.model.Feedback;
    import mvc.model.JResponse;
    import mvc.model.apis.DownloadExcel;
    import mvc.service.IAppInfoService;
    import mvc.service.IBusinessService;
    
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.prize.utils.StringUtil;
    
    import utils.ExcelUtil;
    
    @Controller
    @RequestMapping(value="/excel/*")
    public class ExcelController {
        
        @Resource
        private IAppInfoService appinfoService;
        
        @Resource
        private IBusinessService businessService;
    
        @RequestMapping(value = "exportfeedback")
        @ResponseBody
        public JResponse exportFeedBack(HttpServletResponse response,
                @RequestParam(value="query", required=false) String searchText,
                @RequestParam(value="type", required=false) String strType,
                @RequestParam(value="startDate", required=false) String startDate,
                @RequestParam(value="endDate", required=false) String endDate){
            
            String fileName = "反馈明细"+System.currentTimeMillis()+".xls"; //文件名 
            String sheetName = "反馈明细";//sheet名
            
            String []title = new String[]{"Id","导航图标","反馈类型","内容","联系方式","应用Id","应用版本","反馈时间"};//标题
            
            List<Feedback> list = appinfoService.getAllFeedbackForExcel(searchText, strType, startDate, endDate);//内容list
            
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            
            String [][]values = new String[list.size()][];
            for(int i=0;i<list.size();i++){
                values[i] = new String[title.length];
                //将对象内容转换成string
                Feedback obj = list.get(i);
                values[i][0] = obj.getId()+"";
                values[i][1] = obj.getFiles();
                values[i][2] = obj.getFbType();
                values[i][3] = obj.getContent();
                values[i][4] = obj.getContactInfo();
                values[i][5] = obj.getAppId();
                values[i][6] = obj.getVersionName();
                values[i][7] = sdf.format(obj.getCreateTime());
                
            }
            
            HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, values, null);
            
            //将文件存到指定位置  
            try {  
                 this.setResponseHeader(response, fileName);  
                 OutputStream os = response.getOutputStream();  
                 wb.write(os);  
                 os.flush();  
                 os.close();  
            } catch (Exception e) {  
                 e.printStackTrace();  
            }  
            return JResponse.success("ok");
        }
        
         public void setResponseHeader(HttpServletResponse response, String fileName) {  
             try {  
                  try {  
                       fileName = new String(fileName.getBytes(),"ISO8859-1");  
                  } catch (UnsupportedEncodingException e) {  
                       // TODO Auto-generated catch block  
                       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();  
             }  
        } 
    }
    注意这里将 List<Feedback> list = appinfoService.getAllFeedbackForExcel(searchText, strType, startDate, endDate);//内容list 换成你自己的获取数据方法,将values二维数组导入util工具类方法中即可。

    整体思路:将二维数组导入excel。


    4、访问link即可,如:XXX
    /excel/exportfeedback
    <button id="js-export" type="button" class="btn btn-primary">导出Excel</button>


    $('#js-export').click(function(){ window.location.href="/xxx/excel/exportfeedback?type="+$('#type').val()+"&startDate="+$('#table_start_date').val()+"&endDate="+$('#table_end_date').val(); });
  • 相关阅读:
    防抖节流函数
    富文本编辑器tinymce在vue中的使用
    vue脚手架中检测lodop安装情况
    打印插件LODOP Vue中的使用
    vue打包后刷新页面报错:Unexpected token <
    Bootstrap-table表格插件的使用方法
    jsTree树插件
    Vue监控器watch的全面解析
    Vue计算属性computed的全面解析
    基于JQuery可拖动列表格插件DataTables的踩坑记
  • 原文地址:https://www.cnblogs.com/crazyapple/p/5489588.html
Copyright © 2011-2022 走看看