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

    在自己的WEB项目中要用到导出Excel,所以结合网络上的资源写了一个自己的export 工具类。

    说明:

    • JFinal 环境

    • WEB项目

    • JAVA后台生成非JS插件

    好了,直接撸代码

    1.设置文件保存路径 
    private static final String FILEPATH = PathKit.getWebRootPath() + File.separator + "upload" + File.separator ;//路径为webRoot/upload/
    2.设置 文件名 
    public static String getTitle(){
        Date date = new Date();
        SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");  
        String title=FILEPATH+dateFormat.format(date)+"_统计报表.xls";  
        return title;
    }
    3.前台页面调用 
    <p Alignment="left"><a href="/admin/pay/export">导出数据</a>
    4.contr oller处理并renderFile回去 
    public void export(){
        String sql = "select * from `order`";
            Map<String, String> titleData = new HashMap<String, String>();//标题,后面用到
            titleData.put("order_no", "账单号");
            titleData.put("good_code", "商品编码");
            titleData.put("size", "尺码");
            titleData.put("number", "数量");
            titleData.put("type", "类型");
            titleData.put("order_time", "时间");
            File file = new File(ExcelExportUtil.getTitle());
        file = ExcelExportUtil.saveFile(titleData, sql, file);
        this.renderFile(file);
    }
     
    5.工 具类所有代码
    package com.feng.util;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    import com.jfinal.kit.PathKit;
    import com.jfinal.plugin.activerecord.Db;
    import com.jfinal.plugin.activerecord.Record;
    
    public class ExcelExportUtil {
    
        private static final String FILEPATH = PathKit.getWebRootPath() + File.separator + "upload" + File.separator ;
        
        public static String getTitle(){
            Date date = new Date();
            SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");  
             String title=FILEPATH+dateFormat.format(date)+"_统计报表.xls";  
             return title;
        }
        
        
        public static File saveFile(Map<String, String> headData, String sql, File file) {
            // 创建工作薄
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
            // sheet:一张表的简称
            // row:表里的行
            // 创建工作薄中的工作表
            HSSFSheet hssfSheet = hssfWorkbook.createSheet();
            // 创建行
            HSSFRow row = hssfSheet.createRow(0);
            // 创建单元格,设置表头 创建列
            HSSFCell cell = null;
            // 初始化索引
            int rowIndex = 0;
            int cellIndex = 0;
    
            // 创建标题行
            row = hssfSheet.createRow(rowIndex);
            rowIndex++;
            // 遍历标题
            for (String h : headData.keySet()) {
                //创建列
                cell = row.createCell(cellIndex);
                //索引递增
                cellIndex++;
                //逐列插入标题
                cell.setCellValue(headData.get(h));
            }
    
            // 得到所有记录 行:列
            List<Record> list = Db.find(sql);
            Record record = null;
    
            if (list != null) {
                // 获取所有的记录 有多少条记录就创建多少行
                for (int i = 0; i < list.size(); i++) {
                    row = hssfSheet.createRow(rowIndex);
                    // 得到所有的行 一个record就代表 一行
                    record = list.get(i);
                    //下一行索引
                    rowIndex++;
                    //刷新新行索引
                    cellIndex = 0;
                    // 在有所有的记录基础之上,便利传入进来的表头,再创建N行
                    for (String h : headData.keySet()) {
                        cell = row.createCell(cellIndex);
                        cellIndex++;
                        //按照每条记录匹配数据
                        cell.setCellValue(record.get(h) == null ? "" : record.get(h).toString());
                    }
                }
            }
            try {
                FileOutputStream fileOutputStreane = new FileOutputStream(file);
                hssfWorkbook.write(fileOutputStreane);
                fileOutputStreane.flush();
                fileOutputStreane.close();
                
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return file;
        }
    }
     
     

    5.最终效果

     
    自立更生,艰苦奋斗!
  • 相关阅读:
    操作系统复习
    Google hack语法
    c++的set重载运算符
    华为笔试题
    Flume+Kafka整合
    kafka相关知识点总结
    kafka中生产者和消费者API
    Kafka集群环境搭建
    Storm消息容错机制(ack-fail机制)
    Storm通信机制(了解)
  • 原文地址:https://www.cnblogs.com/javazxy/p/7230696.html
Copyright © 2011-2022 走看看