1.创建excel工具方法(前提:导入poi-3.7-20101029.jar)
        /** 
     * 导出Excel工具方法 (注:此导出EXCEL工具方法只能创建一个工作簿)
     */
    public static HSSFWorkbook exportExcel(Object[] head, Object[] column, List<?> data) throws Exception {

HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
        HSSFSheet sheet = workbook.createSheet(); // 创建工作薄

HSSFRow row = null; // 行计录

HSSFCell cell = null; // 单元格

int rowIndex = 0;
        // 增加头文件信息
        if (head != null) {
            row = sheet.createRow(rowIndex);
            for (int i = 0; i < head.length; i++) {
                cell = row.createCell(i);
                cell.setCellValue(head[i].toString());
            }
            rowIndex++;
        }

// 写入内容
        for (int i = 0; i < data.size(); i++) {
            row = sheet.createRow(rowIndex++);
            Object obj = data.get(i);
            for (int j = 0; j < column.length; j++) {
                String col = column[j].toString();
                if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
                    col = col.substring(0, 1).toUpperCase() + col.substring(1);
                try {
                    Object result = obj.getClass().getMethod("get" + col).invoke(obj);
                    row.createCell(j).setCellValue(result == null ? "" : result.toString());
                } catch (Exception e) {
                    throw e;
                }
            }
        }

return workbook;
    }

/** 
     * 导出Excel工具方法 (注:此导出EXCEL工具方法能创建多个工作簿)
     */

public static HSSFWorkbook exportExcel(Object[] head, Object[] column,
            List<?> data) throws Exception {
                // 注:SystemContext.EXECEL_LIMIT代表规定每个工作簿存记录条数
        HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
        int sheetNum = 0;
        if(data.size()%SystemContext.EXECEL_LIMIT>0) {
            sheetNum = (data.size()/SystemContext.EXECEL_LIMIT+1);
        } else {
            sheetNum = data.size()/SystemContext.EXECEL_LIMIT;
        }

for(int x = 0; x<sheetNum; x++) {

HSSFSheet sheet = workbook.createSheet(); // 创建工作薄

HSSFRow row = null; // 行计录

HSSFCell cell = null; // 单元格

int rowIndex = 0;
            // 增加头文件信息
            if (head != null) {
                row = sheet.createRow(rowIndex);
                for (int i = 0; i < head.length; i++) {
                    cell = row.createCell(i);
                    cell.setCellValue(head[i].toString());
                }
                rowIndex++;
            }

// 写入内容
            for (int i = x*SystemContext.EXECEL_LIMIT; i < (x+1)*SystemContext.EXECEL_LIMIT && i<data.size(); 
i++) {
                row = sheet.createRow(rowIndex++);
                Object obj = data.get(i);
                for (int j = 0; j < column.length; j++) {
                    String col = column[j].toString();
                    if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
                        col = col.substring(0, 1).toUpperCase() + col.substring(1);
                    try {
                        Object result = obj.getClass().getMethod("get" + col)
                                .invoke(obj);
                        row.createCell(j).setCellValue(
                                result == null ? "" : result.toString());
                    } catch (Exception e) {
                        throw e;
                    }
                }
            }
        }

return workbook;
    }

2.构造数据调用上面方法(这里截取控制器中方法片段)

public String repealExcel(ConsumeCancelModel comsume, String[] colums,
        HttpServletRequest request, HttpServletResponse response, Model model) {

//根据条件从数据库中获得list
                List<ConsumeCancelModel> excel = (List<ConsumeCancelModel>)tservice.cancelpageBySQLList(condition.toString());
            OutputStream os = null;
            try {
                // excel文件的头部信息
                String[] head = new String[] { "商户编号", "商户名称", "订单号", "订单日期",
                        "订单金额", "订单金额币种", "cups交易流水号", "清算日期", "清算金额",
                        "清算币种", "清算汇率", "撤销发起日期", "订单状态"};
                // 对应bean字段的列写入文件内容
                String[] column = new String[] { "merchantId", "merchantName", "merchantOrderId",
                        "merchantOrderTimeStrcon", "merchantOrderAmtStr","currency", "cupsQid",
                        "settleDateStr", "setlAmtStr","square", "converRate",
                        "createdTimeStrcon", "status"};
                // 调用生成excel方法
                HSSFWorkbook hssfWorkbook = SystemUtil.exportExcel(head,
                        column, excel);
                                // 获取excel生成的路径包括文件名
                response.addHeader("Content-Disposition", "p_w_upload;filename=" + SystemUtil.dateFormatString(new Date(), "yyyyMMddhhmmss") + "repealExcel.xls");
                //写出
                os = response.getOutputStream();
                hssfWorkbook.write(os);
                         catch(Exception e) {
                               e.printstack();
                                         }
                         finally{
                              //别忘记关闭流
                                 if (null != os) {
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                      }
                                     }
                             return null;

}

/**
*创建据有标题,特定行, 特定列样式的excel
*
*/
public static HSSFWorkbook exportExcelOrder(Object[] head, Object[] column,
   List<?> data, String title) throws Exception {
  // 注:SystemContext.EXECEL_LIMIT代表规定每个工作簿存记录条数
  HSSFWorkbook workbook = new HSSFWorkbook(); // 创建Excel文件
  // 设置字体样式 1
  HSSFFont headfont = workbook.createFont();
  headfont.setFontName("黑体");
  headfont.setFontHeightInPoints((short) 22);// 字体大小
  headfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 加粗

HSSFCellStyle headstyle = workbook.createCellStyle();
  headstyle.setFont(headfont);
  headstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
  headstyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中
  headstyle.setLocked(true);
  headstyle.setWrapText(true);// 自动换行

// 设置字体样式 2
  HSSFFont columnHeadFont2 = workbook.createFont();
  columnHeadFont3.setFontName("黑体");
  columnHeadFont3.setFontHeightInPoints((short) 10);
  columnHeadFont3.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

HSSFCellStyle headstyle2 = workbook.createCellStyle();
  headstyle3.setFont(columnHeadFont2);
  headstyle3.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
  headstyle3.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 上下居中

int sheetNum = 0;
  if (data.size() % 10000 > 0) {
   sheetNum = (data.size() / 10000 + 1);
  } else {
   sheetNum = data.size() / 10000;
  }
  for (int x = 0; x < sheetNum; x++) {

HSSFSheet sheet = workbook.createSheet(); // 创建工作薄
   // 设置指定列宽 第一个参数表示 第几列 第二个参数表示 列宽
   sheet.setColumnWidth(0, 4000);
   sheet.setColumnWidth(1, 4000);
   sheet.setColumnWidth(2, 4000);
   sheet.setColumnWidth(3, 5000);
   sheet.setColumnWidth(4, 5000);
   sheet.setColumnWidth(5, 4000);
   sheet.setColumnWidth(6, 4000);
   sheet.setColumnWidth(7, 4000);
   sheet.setColumnWidth(8, 4000);
   sheet.setColumnWidth(9, 6000);
   // 创建第一行做标题行 索引从0开始
   HSSFRow row0 = sheet.createRow(0);
   row0.setHeight((short) 900);//设置第一行的高度
   // 合并行 四个参数分别为:开始行 开始列 结束行 结束列
   sheet.addMergedRegion(new Region(0, (short) 1, 0, (short) 8));
   // 在row0行里创建第二列cell1 索引从0开始
   HSSFCell cell1 = row0.createCell(1);
   // 为第二列设置样式
   cell1.setCellStyle(headstyle);
   // 为第二列赋值  title为导出的excel标题
   cell1.setCellValue(new HSSFRichTextString(title));

HSSFRow row = null; // 行计录
   HSSFCell cell = null; // 单元格
   int rowIndex = 2; //指定正文从第3行开始,下面的与上面的两个方法一样了
   // 增加头文件信息
   if (head != null) {
    row = sheet.createRow(rowIndex);
    for (int i = 0; i < head.length; i++) {
     cell = row.createCell(i);
     // 为第一列设置样式
     cell.setCellStyle(headstyle3);
     cell.setCellValue(head[i].toString());
    }
    rowIndex++;
   }
   // 写入内容
   for (int i = x * 10000; i < (x + 1) * 10000 && i < data.size(); i++) {
    row = sheet.createRow(rowIndex++);
    Object obj = data.get(i);
    for (int j = 0; j < column.length; j++) {
     String col = column[j].toString();
     if (col.charAt(1) >= 'a' && col.charAt(1) <= 'z')
      col = col.substring(0, 1).toUpperCase()
        + col.substring(1);
     try {
      Object result = obj.getClass().getMethod("get" + col)
        .invoke(obj);
      row.createCell(j).setCellValue(
        result == null ? "" : result.toString());
     } catch (Exception e) {
      throw e;
     }
    }
   }
  }
  return workbook;
 }

转载于:https://blog.51cto.com/3131854/806869

java 导出excel学习小片段相关推荐

  1. 简单的 Java 导出 Excel 表格 小例子《一抹茶CSDN》

    Java 导出 Excel 为什么要有导出Excel表格的功能呢? 因为我们在使用软件时会有,一些数据需要导出来,进行留存,大多数人使用的都是office的办公软件,就会使用常用的Excel表格.因此 ...

  2. java导出Excel增加下拉框选项,解决小数据量和大数据量下拉框选项的问题

    文章目录 java导出Excel增加下拉框选项 一.小数据量情况 二.大数据量情况 java导出Excel增加下拉框选项(java结合easyExcel) 添加传参模型ConsumablesAddDT ...

  3. Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

    原文转载:http://blog.csdn.net/evangel_z/article/details/7332535 目录(?)[+] 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数 ...

  4. jxls读取模板导出Excel学习笔记

    jxls读取模板导出Excel学习笔记 ​ jxls是一个简单的.轻量级的excel导出库,使用特定的标记在excel模板文件中来定义输出格式和布局.除此以外,java中成熟的excel导出工具有po ...

  5. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  6. java文件无法导出excel文件,【excel表格文件格式无效】java导出excel,excel打不开,报文件格式无效,怎么解决!...

    excel提示 打开的文件.xls的格式与文件扩展名不一致怎么办 如果打开文件的格式与文件的扩展名不一致,只要能够打开就不用去管他. java导出excel,excel打不开,报文件格式无效,怎么解决 ...

  7. Java导出excel文件以.xlsx后缀结尾,可设置部分单元格只读

    前言 最近在做一个小项目,有个模块的功能涉及到excel的导入导出,并且要求对导出的excel文件部分列和单元格设置为只读不可更改,在网上到处查找了一番资料,结合自己的想法,发现也并不难,这里整理记录 ...

  8. java导出excel报表_java怎样导出Excel报表呢?

    当前B/S模式已成为应用开发的主流,而在开发企业办公系统的过程中,常常有客户这样子要求:把系统数据库中的数据导出到Excel,用户查看报表时直接用Excel打开.或者是:用户已经习惯用Excel打印, ...

  9. JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)

    JAVA导出Excel通用工具--第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选.动态合并横向(纵向)单元格等多种复杂情况--保姆级别,真的不能再详细了,封装通用工具类,代码拿 ...

最新文章

  1. mysql如何导入JSON数据-navigate管理数据库,导入JSON数据不显示。需要整体关闭再打开!
  2. 打破 Google 破坏性的搜索垄断
  3. python数值型转换字符型_2.6 字符型常量
  4. Nginx学习之五:Nginx第三方模块
  5. vim常用替换表达式
  6. 科大星云诗社动态20210818
  7. Java多线程之线程池详解
  8. 数字电路数据选择器及其应用实验报告_科普|说说大数据是什么,及其特点与应用...
  9. rtsp协议_基于libVLC的视频播放器(支持RTSP协议)
  10. 开源基于Canal的开源增量数据订阅消费中间件
  11. oracle 重启后 检查,oracle常规检查有哪些,oracle RAC中的一个节点经常重启?
  12. 任意多边形的面积(转)
  13. 小学steam计算机课程案例,STEAM教育与小学信息技术课程的融合
  14. 从机器学习到深度学习
  15. Codechef:Walk on Tree/TREEWALK(Berlekamp-Massey算法)
  16. 设备功耗计算专题《低功耗实战篇,全志XR808连接AP的最低功耗研究》
  17. (生物信息学)R语言与统计学入门(九)—— 单因素cox回归分析
  18. 【动态规划】黑熊过河
  19. 【机智云专题】①:乐鑫esp8266巧用机智云自动代码生成功能,移植加入驱动单路继电器,实现智能定时插座。(附带demo)
  20. 【华为机试真题 Python实现】数大雁【2022 Q2 | 100分】

热门文章

  1. mysql保留字-关键字表
  2. 嵌入式工作笔记0005---嵌入式发展和组成
  3. 深度学习001---勾股定理
  4. 数据库零碎要点001_数据库的4大特性(原子性_持久性_隔离性_一致性)_数据库的隔离级别(脏读_幻读_不可重复读)_mysql如何设置隔离级别
  5. Open vSwitch作为openflow交换机的启动方法
  6. 从skyeye学习arm( u-boot篇)
  7. 一步一步写算法(之 算法总结)
  8. 一步一步写算法(之寻路)
  9. 计算机系统启动的加点顺序是,操作系统引导探究
  10. 计算机应用基础试题号2007,2006-2007计算机应用基础期末试题(A卷).pdf