精华内容
下载资源
问答
  • java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
  • JAVA使用poi导出EXCEL

    千次阅读 2020-04-23 15:29:51
    前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码 后端:上面的地址为图片中的地址,如图 @GetMapping(value = "/export") public void ...

    前端:如果你使用的是ajax类型的跨域导出,则无法出现弹框,所以直接选择window.location.href,具体操作看代码

    后端:上面的地址为图片中的地址,如图

    @GetMapping(value = "/export")
        public void exportSysTest(HttpServletRequest request, HttpServletResponse response) {
            try {
                List<Map<String,Object>> rows = sysTestService.selectRows();
                String [][] columnNames = {
                        {"序号","名字","手机号码","地址","性别","说明"},   {"ID","NAME","MOBILE","ADDRESS","SEX","EXPLAIN"}};
                String [] columnWidth ={"5","20","20","20","20","20"};
                String excelName = "测试管理";
                HSSFWorkbook wb = ExportExcelUtil.createSXSSFWorkbook(columnNames,columnWidth, rows, excelName);
                OutputStream ouputStream = response.getOutputStream();
                response.reset();
                response.setHeader("Content-disposition", "attachment;filename=book.xls");
                response.setContentType("application/octet-stream; charset=utf-8");
                wb.write(ouputStream);
                ouputStream.flush();
                ouputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

    Excel工具类:

    package com.brilliance.core.utils;
    
    import java.util.List;
    import java.util.Map;
    
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.ss.util.CellRangeAddress;
    import org.apache.poi.xssf.usermodel.XSSFFont;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    
    /**
     * 导出到excel表工具
     * wuzk
     * 2020-04-25
     */
    
    public class ExportExcelUtil  {
    
    
        public ExportExcelUtil() {
            super();
        }
    
        public static HSSFWorkbook createSXSSFWorkbook(String[][] columnNames, String[] columnWidth, List<Map<String, Object>> rows, String excelName){
            HSSFWorkbook workbook = new HSSFWorkbook(); // 创建工作薄,相当于一个文件
    
            Sheet sheet = workbook.createSheet(); // 创建一个表
            //sheet.setDefaultColumnWidth((short) 3); // 设置默认列宽
            //sheet.setColumnWidth(0, 18 * 256); // 设置单位列列宽
    
            sheet.setMargin(XSSFSheet.TopMargin, 0.64); // 页边距(上)
            sheet.setMargin(XSSFSheet.BottomMargin, 0.64); // 页边距(下)
            sheet.setMargin(XSSFSheet.LeftMargin, 0.64); // 页边距(左)
            sheet.setMargin(XSSFSheet.RightMargin, 0.64); // 页边距(右)
    
            PrintSetup ps = sheet.getPrintSetup();
            ps.setPaperSize(PrintSetup.A4_PAPERSIZE); // 设置纸张大小
            ps.setLandscape(true); // 打印方向,true:横向,false:纵向(默认)
    
            // 标题样式
            CellStyle titleStyle = workbook.createCellStyle();
            titleStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中
            titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            // 标题字体
            Font titleFont = workbook.createFont();
            titleFont.setFontHeightInPoints((short) 12); // 字体大小
            titleFont.setFontName("宋体");
            titleStyle.setFont(titleFont);
    
            // 填报单位的样式
            CellStyle titleStyle_2 = workbook.createCellStyle();
            titleStyle_2.setAlignment(HorizontalAlignment.RIGHT); // 水平居右
            titleStyle_2.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            // 标题字体
            Font titleFont_2 = workbook.createFont();
            titleFont_2.setFontHeightInPoints((short) 11);
            titleFont_2.setFontName("宋体");
            titleStyle_2.setFont(titleFont_2);
    
            // 填报单位的样式
            CellStyle titleStyle_u = workbook.createCellStyle();
            titleStyle_u.setAlignment(HorizontalAlignment.LEFT); // 水平居左
            titleStyle_u.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            // 标题字体
            Font titleFont_u = workbook.createFont();
            titleFont_u.setUnderline(XSSFFont.U_SINGLE);
            titleFont_u.setFontHeightInPoints((short) 11);
            titleFont_u.setFontName("宋体");
            titleStyle_u.setFont(titleFont_u);
    
            // 表头样式
            CellStyle headerStyle = workbook.createCellStyle();
            headerStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中
            headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            headerStyle.setBorderBottom(BorderStyle.THIN); // 下边框
            headerStyle.setBorderLeft(BorderStyle.THIN); // 左边框
            headerStyle.setBorderTop(BorderStyle.THIN); // 上边框
            headerStyle.setBorderRight(BorderStyle.THIN); // 右边框
            headerStyle.setWrapText(true); // 设置多行显示
            //这两句话是表示将表头单元格格式设置为文本型,在后面只要调用-----.setDataFormat(format.getFormat("@"))的方法就可以将数据设置为文本型。
            DataFormat format = workbook.createDataFormat();
            headerStyle.setDataFormat(format.getFormat("@"));
            // 表头字体
            Font headerFont = workbook.createFont();
            headerFont.setFontHeightInPoints((short) 9);
            headerFont.setFontName("宋体");
            headerStyle.setFont(headerFont);
    
            // 数据样式
            CellStyle dataStyle = workbook.createCellStyle();
            dataStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中
            dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            dataStyle.setBorderBottom(BorderStyle.THIN); // 下边框
            dataStyle.setBorderLeft(BorderStyle.THIN); // 左边框
            dataStyle.setBorderTop(BorderStyle.THIN); // 上边框
            dataStyle.setBorderRight(BorderStyle.THIN); // 右边框
            dataStyle.setDataFormat(format.getFormat("@"));      //将数据单元格格式设置为文本类型
            // 数据字体
            Font dataFont = workbook.createFont();
            dataFont.setFontHeightInPoints((short) 9);
            dataFont.setFontName("宋体");
            dataStyle.setFont(dataFont);
    
            // 尾部样式
            CellStyle footStyle = workbook.createCellStyle();
            footStyle.setAlignment(HorizontalAlignment.CENTER); // 水平居中
            footStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 垂直居中
            // 尾部字体
            Font footFont = workbook.createFont();
            footFont.setFontHeightInPoints((short) 11);
            footFont.setFontName("宋体");
            footStyle.setFont(footFont);
    
            CellStyle commonStyle = workbook.createCellStyle();
            commonStyle.setBorderBottom(BorderStyle.THIN); // 下边框
            commonStyle.setBorderLeft(BorderStyle.THIN); // 左边框
            commonStyle.setBorderTop(BorderStyle.THIN); // 上边框
            commonStyle.setBorderRight(BorderStyle.THIN); // 右边框
    
            // 表格标题行
            Row row0 = sheet.createRow(0);
            row0.setHeight((short)(3 * 256));
            Cell cell0_0 = row0.createCell(0); // 创建单元格,参数说明的是第几个单元格
            cell0_0.setCellStyle(titleStyle);
            cell0_0.setCellValue(excelName); // 设置单元格 和里面的内容
    
            if(columnWidth.length>0){
                Integer clWidth;
                for(int i =0;i<columnWidth.length;i++){
                    if(columnWidth[i]!=null &&!"".equals(columnWidth[i])){
                        clWidth = Integer.valueOf(columnWidth[i]);
                        sheet.setColumnWidth(i, clWidth*256);
                    }
                }
            }
    
    
    
            Row row = null;
            Cell cell = null;
            for(int i = 1 ; i<=columnNames.length ; i++){
                row = sheet.createRow(i);
                row.setHeight((short)(2 * 256));
                for(int j = 0 ;j < columnNames[i-1].length;j++){
                    cell = row.createCell(j);
                    cell.setCellValue(columnNames[i-1][j]);
                    cell.setCellStyle(headerStyle);
    
                }
            }
    
            sheet.getRow(columnNames.length).setZeroHeight(true);
            // 合并单元格
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, columnNames[0].length-1)); // 合并大标题行
            String[] names = columnNames[columnNames.length-1];
    
            // 数据填充,标题占一行,columnNames占columnNames.length行,之后才到数据行
            Object obj = null;
    
            for (int i = 0; i < rows.size(); i++) {
                Row dataRow = sheet.createRow(columnNames.length+1+ i);
                Map<String,Object> project = rows.get(i);
                for (int j = 0; j <names.length; j++) {
                    Cell dataCell = dataRow.createCell(j);
                    dataCell.setCellStyle(dataStyle);
                    obj = project.get(names[j]);
                    dataCell.setCellValue(obj==null?"":obj.toString());
                }
            }
    
            return workbook;
        }
    }
    

    页面原图:

    点击导出:

    Excel:

    展开全文
  • java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
  • Java利用poi导出excel表格
  • Java使用POI导出Excel

    万次阅读 2019-06-09 13:05:46
    不管是Web开发还是桌面开发,对办公软件...在java操作Excel可以使用POI组件或JXL组件。 POI全称PoorObfuscation Implementation ,是Apache组件的一个开源项目,可以对微软的Office一系列办公软件进行读写操作。 ...

    不管是Web开发还是桌面开发,对办公软件的操作是常有的需求,如对微软Excel电子表格的操作,经常需要对一些数据导出到Excel文件,或将一个Excel文件的数据读取到数据库。在java操作Excel可以使用POI组件或JXL组件。

    POI全称PoorObfuscation Implementation ,是Apache组件的一个开源项目,可以对微软的Office一系列办公软件进行读写操作。

    下载jar

    官方下载地址:http://poi.apache.org/download.html,目前最新版本为POI 4.1.0。

    Apache POI发行版支持多种文档文件格式。这种支持在几个Jar文件中提供。并非每种格式都需要所有jar。可到下面的网址看详细的说明,看需求导入需要的jar包

    Apache POI -Component Overviewhttp://poi.apache.org/components/index.html

    使用之前导入jar包

    使用POI组件创建Excel,主要使用的是org.apache.poi.hssf.usermodel.HSSFWorkbook类和org.apache.poi.hssf.usermodel.HSSFSheet类。HSSFWorkbook表示为Excel工作簿,是最为重要的类,获取HSSFWorkbook对象,再从HSSFWorkbook中获取工作表对象。

    HSSFWorkbook类常用方法如下

    createSheet():创建Excel工作表 返回类型为HSSFSheeet

    setSheetName():设置Excel工作表的名称,语法结构如下

    public void setSheetName(int sheetIx,String name)

    参数sheetLx:指定需要修改名称的工作表的索引,索引是从0开始

    参数 name:设置工作表的名称

    setSelectTab():设置Excel文件中哪一个工作表为选择状态,语法如下

    public void setSelectedTab(int index) 参数 index 设置选择状态的工作表的索引(从0开始)

    writer()方法:将缓存中创建的Excel文件对象以流的形式写入文件中

    public void writer(OutputStream out)参数:stream 文件输出流的对象,将数据写入之前,需要创建此文件输出流的对象。

    导出Excel:(为了方便演示,下面代码写在Servlet中的doGet方法中,数据也是手动添加的,如数据需要从数据库中取,可以向从数据库查询数据,返回List集合,遍历集合从而产生数据行,注意如果使用Map来存放数据,应使用LinkedHashMap来保证有序,使标题和数据对应)

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
     HSSFWorkbook wb = new HSSFWorkbook();//创建HSSFWorkbook对象
    
        HSSFSheet sheet=wb.createSheet("成绩表");//建立sheet对象
    
        HSSFRow row1=sheet.createRow(0); //在sheet里创建第一行,参数为行索引
    
        HSSFCell cell=row1.createCell(0); //创建单元格
    
        cell.setCellValue("学生成绩表");        //设置单元格内容
    
        //合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
    
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,3));
    
        //在sheet里创建第二行
    
        HSSFRow row2=sheet.createRow(1);   
    
              //创建单元格并设置单元格内容
    
              row2.createCell(0).setCellValue("姓名");
    
              row2.createCell(1).setCellValue("班级");   
    
              row2.createCell(2).setCellValue("语文成绩");
    
              row2.createCell(3).setCellValue("数学成绩");    
    
              row2.createCell(4).setCellValue("英语成绩");   
    
              //在sheet里创建第三行
    
              HSSFRow row3=sheet.createRow(2);
    
              row3.createCell(0).setCellValue("小明");
    
              row3.createCell(1).setCellValue("1班");
    
              row3.createCell(2).setCellValue(80);    
    
              row3.createCell(3).setCellValue(75);   
    
              row3.createCell(4).setCellValue(88);   
    
              HSSFRow row4=sheet.createRow(3);
    
              row4.createCell(0).setCellValue("小红");
    
              row4.createCell(1).setCellValue("1班");
    
              row4.createCell(2).setCellValue(82);   
    
              row4.createCell(3).setCellValue(70);   
    
              row4.createCell(4).setCellValue(90);
    
           //输出Excel文件
    
            OutputStream output=response.getOutputStream();
    
            response.reset();
    
    //设置响应头,
    
            response.setHeader("Content-disposition", "attachment; filename=Student.xls");
    
            response.setContentType("application/msexcel");       
    
            wb.write(output);
    
            output.close();
    
        }

    效果

    设置样式,如字体、单元格等(详细的可以去看官方文档)

     // 设置单元格的横向和纵向对齐方式,  cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY); 
    
     cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); 
    
     //设置背景颜色 
    
    cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);

     

    展开全文
  • java使用poi导出excel的工具类

    千次阅读 2020-08-05 12:13:53
    java使用poi导出excel使用的包是 compile group: 'org.apache.poi', name: 'poi', version: '3.15' 工具类代码: import java.io.OutputStream; import java.lang.reflect.Field; import java.lang....

    java使用poi导出excel,使用的包是

    	compile group: 'org.apache.poi', name: 'poi', version: '3.15'
    

    工具类代码:

    
    
    import java.io.OutputStream;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;
    
    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;
    
    /**
     * 
     * @author vn0gv3u
     *
     * @param <T>
     */
    public class ExportExcelUtil<T> {
    
      /**
       * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
       * 
       * @param title 表格标题名
       * @param dataset 需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。
       * @param out 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
       * @param pattern 如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
       */
      @SuppressWarnings("deprecation")
      public void exportExcel(String title, List<T> dataset, OutputStream out, String pattern)
          throws Exception {
        // 声明一个工作薄
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 生成一个表格
        HSSFSheet sheet = workbook.createSheet(title);
        // 设置表格默认列宽度为20个字节
        sheet.setDefaultColumnWidth((short) 20);
        // 生成一个样式
        HSSFCellStyle style = workbook.createCellStyle();
        // 设置这些样式
        style.setFillForegroundColor(HSSFColor.SKY_BLUE.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);
    
        // 生成并设置另一个样式
        HSSFCellStyle style2 = workbook.createCellStyle();
        style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);
        style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
        style2.setBorderTop(HSSFCellStyle.BORDER_THIN);
        style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 生成另一个字体
        HSSFFont font2 = workbook.createFont();
        font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
        // 把字体应用到当前的样式
        style2.setFont(font2);
    
        if (dataset == null || dataset.size() == 0)
          return;
        T tempT = dataset.get(0);
        Field[] heads = tempT.getClass().getDeclaredFields();
        List<String> headList = new ArrayList<>();
        // 获取字段注解的表头
        for (int i = 0; i < heads.length; i++) {
          String name = heads[i].getName();
          headList.add(name);
        }
        // 产生表格标题行
        HSSFRow row = sheet.createRow(0);
        for (int i = 0; i < headList.size(); i++) {
          HSSFCell cell = row.createCell(i);
          cell.setCellStyle(style);
          HSSFRichTextString text = new HSSFRichTextString(headList.get(i));
          cell.setCellValue(text);
    
        }
        // 遍历集合数据,产生数据行
        Iterator<T> it = dataset.iterator();
        int index = 0;
        while (it.hasNext()) {
          index++;
          row = sheet.createRow(index);
          T t = (T) it.next();
          Field[] fields = t.getClass().getDeclaredFields();
          List<Field> fieldsList = new ArrayList<>();
          for (Field field : fields) {
            fieldsList.add(field);
          }
          for (Field field : fieldsList) {
            HSSFCell cell = row.createCell(fieldsList.indexOf(field));
            cell.setCellStyle(style2);
            String fieldName = field.getName();
            String getMethodName =
                "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
            Class tCls = t.getClass();
            Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
            Object value = getMethod.invoke(t, new Object[] {});
            // 判断值的类型后进行强制类型转换
            String textValue = null;
            if (value == null) {
              cell.setCellValue("");
            }
            if (value instanceof Integer) {
              int intValue = (Integer) value;
              cell.setCellValue(intValue);
            } else if (value instanceof Float) {
              float fValue = (Float) value;
              cell.setCellValue(fValue);
            } else if (value instanceof Double) {
              double dValue = (Double) value;
              cell.setCellValue(dValue);
            } else if (value instanceof Long) {
              long longValue = (Long) value;
              cell.setCellValue(longValue);
            } else if (value instanceof Date) {
              Date date = (Date) value;
              SimpleDateFormat sdf = new SimpleDateFormat(pattern);
              textValue = sdf.format(date);
              cell.setCellValue(textValue);
            } else {
              // 其它数据类型都当作字符串简单处理
              textValue = value == null ? "" : value.toString();
              cell.setCellValue(textValue);
            }
          }
        }
        workbook.write(out);
      }
    
    
    }
    

    controller调用

     @GetMapping("/test/export/excel/by/day")
      @ResponseBody
      public String exportExcelByTime(HttpServletResponse response) {
    
        String title = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
        response.reset();
        response.setHeader("Content-disposition", "attachment; filename=" + title + ".xls");
        response.setContentType("application/x-xls");
        //查询到list数据
        List<?> list = new ArrayList<>();
        if (list == null || list.size() < 1) {
          return "没有查到数据";
        }
    
        try {
          // 输出Excel文件
          OutputStream out = response.getOutputStream();
          ExportExcelUtil util = new ExportExcelUtil();
          util.exportExcel(title, list, out, "yyyy-MM-dd");
          out.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
    
        return "导出成功";
      }

     

    展开全文
  • 今天需要写一个导出的Excel的功能,但是发现当数据量到3万条时,列数在23列时,内存溢出,CPU使用100%,测试环境直接炸掉。小编给大家分享基于java使用POI导出大数据量Excel的方法,感兴趣的朋友一起看看吧
  • poi导出excel有两种方式: 第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加样式,数据等。 第二种:通过excel.xls 模板的方式,...

    poi导出excel有两种方式:

    第一种:从无到有的创建整个excel,通过HSSFWorkbook,HSSFSheet HSSFCell, 等对象一步一步的创建出工作簿,sheet,和单元格,并添加样式,数据等。

    第二种:通过excel.xls 模板的方式,自己在桌面创建一个excel, 然后修改这个excel为模板,复制到项目中(我是放在根目录下),再然后读取模板,修改模板,给模板填充数据,最后把模板写入到另外一个excel2.xls中(硬盘中的)。 按我自己的理解,这种方式只适合,需要导出的内容是固定格式的,只需要填充一次数据的 情况。比如简历。

    本文内容如下:

        1. 使用 HSSFWorkbook 对象 实现excel导出。一般是导出excel2003
    
        2. 使用 XSSFWorkbook 对象实现excel导出。 一般是导出excel2007
    
        3. 使用 SXSSFWorkbook 对象实现excel导出。 一般是导出百万级数据的excel
    
        4. 使用 template.xls 格式模板,实现excel导出。 一般是导出有固定字段的excel
    

    本文介绍 XSSFWorkbook 导出Excel多行表头、合并单元格的表格
    引入pom依赖

    <!-- 构建Excel -->
    <dependency>
    	<groupId>org.apache.poi</groupId>
    	<artifactId>poi-ooxml</artifactId>
    	<version>3.9</version>
    </dependency>
    

    主要的方法如下:

    XSSFWorkbook workBook = new XSSFWorkbook(); //新建一个Excel文件
    XSSFSheet sheet = workBook.createSheet();  //新建一个sheet,index为sheet的页码
    XSSFRow row = sheet.createRow(int index);  //新建一行,index为行号
    XSSFCell cell = row.createCell(int index)  //新建一个单元格,index为单元格的列号
    cell.setCellValue(String str);  //给单元格赋值
    

    简单示例

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import com.elasticsearch.pojo.Student;
    import org.apache.poi.xssf.usermodel.*;
    
    /**
     * @Author:刘德安
     * @Date: 2021/1/11 10:37
     */
    public class TestExcelDemo {
    
        public static void main(String[] args) {
            Student student =new Student();
            student.setName("XXX ");
            student.setResult("95");
            student.setClazz("二班");
            student.setGrade("五年级");
            student.setNumber("66");
            List<Student> list =new ArrayList<>();
            list.add(student);
            list.add(student);
            list.add(student);
            testExcelDemo(list);
        }
        /**
         *
         * @param list 需要写入excel的数据 从数据库或者其他途径读取
         */
        public static void testExcelDemo(List<Student> list) {
            XSSFWorkbook workBook = new XSSFWorkbook();
            XSSFSheet sheet = workBook.createSheet();
            // 表头
            XSSFRow row = sheet.createRow(0);
            row.createCell(0).setCellValue("学号");
            row.createCell(1).setCellValue("姓名");
            row.createCell(2).setCellValue("年级");
            row.createCell(3).setCellValue("班别");
            row.createCell(4).setCellValue("成绩");
            for (int i = 0; i < list.size(); i++) {
                row = sheet.createRow(i+1);
                row.createCell(0).setCellValue(list.get(i).getNumber());
                row.createCell(1).setCellValue(list.get(i).getName());
                row.createCell(2).setCellValue(list.get(i).getGrade());
                row.createCell(3).setCellValue(list.get(i).getClazz());
                row.createCell(4).setCellValue(list.get(i).getResult());
            }
            String filePath = "D:\\Demo\\";
            String fileName = "testExcelDemo.xlsx";
            File file = new File(filePath + fileName);
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                // 写入磁盘
                workBook.write(fos);
                fos.close();//记得关闭
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    

    复杂示例(多行表头、合并单元格)

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.elasticsearch.pojo.Student;
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.ss.util.CellRangeAddress;
    import org.apache.poi.xssf.usermodel.*;
    
    /**
     * @Author:刘德安
     * @Date: 2021/1/11 10:37
     */
    public class TestExcelDemo {
    
        public static void main(String[] args) {
            Student student =new Student();
            student.setName("XXX ");
            student.setResult("95");
            student.setClazz("二班");
            student.setGrade("五年级");
            student.setNumber("66");
            List<Student> list =new ArrayList<>();
            list.add(student);
            list.add(student);
            list.add(student);
            testExcelDemo(list);
        }
        /**
         *
         * @param list 需要写入excel的数据 从数据库或者其他途径读取
         */
        public static void testExcelDemo(List<Student> list) {
            /** 第一步,创建一个Workbook,对应一个Excel文件  */
            XSSFWorkbook wb = new XSSFWorkbook();
            /** 第二步,在Workbook中添加一个sheet,对应Excel文件中的sheet  */
            XSSFSheet sheet = wb.createSheet("excel导出标题");
            /** 第三步,设置样式以及字体样式*/
            XSSFCellStyle titleStyle = createTitleCellStyle(wb);
            XSSFCellStyle headerStyle = createHeadCellStyle(wb);
            XSSFCellStyle contentStyle = createContentCellStyle(wb);
            /** 第四步,创建标题 ,合并标题单元格 */
            // 行号
            int rowNum = 0;
            // 创建第一页的第一行,索引从0开始
            XSSFRow row0 = sheet.createRow(rowNum++);
            row0.setHeight((short) 800);// 设置行高
    
            String title = "excel导出标题";
            XSSFCell c00 = row0.createCell(0);
            c00.setCellValue(title);
            c00.setCellStyle(titleStyle);
            // 合并单元格,参数依次为起始行,结束行,起始列,结束列 (索引0开始)
            sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 4));//标题合并单元格操作,6为总列数
            //第二行
            XSSFRow row2 = sheet.createRow(rowNum++);
            row2.setHeight((short) 700);
            String[] row_third = {"学号", "姓名", "年级", "班级", "成绩"};
            for (int i = 0; i < row_third.length; i++) {
                XSSFCell tempCell = row2.createCell(i);
                tempCell.setCellValue(row_third[i]);
                tempCell.setCellStyle(headerStyle);
            }
            for (Student student : list) {
                XSSFRow tempRow = sheet.createRow(rowNum++);
                tempRow.setHeight((short) 500);
                // 循环单元格填入数据
                for (int j = 0; j < 5; j++) {
                    XSSFCell tempCell = tempRow.createCell(j);
                    tempCell.setCellStyle(contentStyle);
                    String tempValue = "";
                    if (j == 0) {
                        // 学号
                        tempValue = student.getNumber();
                    } else if (j == 1) {
                        // 姓名
                        tempValue = student.getName();
                    } else if (j == 2) {
                        // 年级
                        tempValue = student.getGrade();
                    } else if (j == 3) {
                        // 班级
                        tempValue = student.getClazz();
                    } else if (j == 4) {
                        // 成绩
                        tempValue = student.getResult();
                    }
                    tempCell.setCellValue(tempValue);
                }
            }
            String filePath = "D:\\Demo\\";
            String fileName = "testExcelDemo.xlsx";
            File file = new File(filePath + fileName);
            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(file);
                // 写入磁盘
                wb.write(fos);
                fos.close();//记得关闭
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    
    
        /**
         * 创建标题样式
         * @param wb
         * @return
         */
        private static XSSFCellStyle createTitleCellStyle(XSSFWorkbook wb) {
            XSSFCellStyle cellStyle = wb.createCellStyle();
            cellStyle.setAlignment(HorizontalAlignment.CENTER);//水平居中
            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直对齐
            cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            cellStyle.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());//背景颜色
    
            XSSFFont headerFont1 = (XSSFFont) wb.createFont(); // 创建字体样式
            headerFont1.setBold(true); //字体加粗
            headerFont1.setFontName("黑体"); // 设置字体类型
            headerFont1.setFontHeightInPoints((short) 15); // 设置字体大小
            cellStyle.setFont(headerFont1); // 为标题样式设置字体样式
            return cellStyle;
        }
    
        /**
         * 创建表头样式
         * @param wb
         * @return
         */
        private static XSSFCellStyle createHeadCellStyle(XSSFWorkbook wb) {
            XSSFCellStyle cellStyle = wb.createCellStyle();
            cellStyle.setWrapText(true);// 设置自动换行
            cellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());//背景颜色
            cellStyle.setAlignment(HorizontalAlignment.CENTER); //水平居中
            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); //垂直对齐
            cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            cellStyle.setBottomBorderColor(IndexedColors.BLACK.index);
            cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
            cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
            cellStyle.setBorderRight(BorderStyle.THIN); //右边框
            cellStyle.setBorderTop(BorderStyle.THIN); //上边框
    
            XSSFFont headerFont = (XSSFFont) wb.createFont(); // 创建字体样式
            headerFont.setBold(true); //字体加粗
            headerFont.setFontName("黑体"); // 设置字体类型
            headerFont.setFontHeightInPoints((short) 12); // 设置字体大小
            cellStyle.setFont(headerFont); // 为标题样式设置字体样式
    
            return cellStyle;
        }
    
        /**
         * 创建内容样式
         * @param wb
         * @return
         */
        private static XSSFCellStyle createContentCellStyle(XSSFWorkbook wb) {
            XSSFCellStyle cellStyle = wb.createCellStyle();
            cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
            cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
            cellStyle.setWrapText(true);// 设置自动换行
            cellStyle.setBorderBottom(BorderStyle.THIN); //下边框
            cellStyle.setBorderLeft(BorderStyle.THIN); //左边框
            cellStyle.setBorderRight(BorderStyle.THIN); //右边框
            cellStyle.setBorderTop(BorderStyle.THIN); //上边框
    
            // 生成12号字体
            XSSFFont font = wb.createFont();
            font.setColor((short)8);
            font.setFontHeightInPoints((short) 12);
            cellStyle.setFont(font);
    
            return cellStyle;
        }
    }
    
    
    展开全文
  • 最近做项目遇到的坑,百度了半天导出都为货币类型、自定义类型和常规类型,,,最后终于解决,在此记录一下 ... * 设置Excel单元格为数值类型便于公式运算 * * @param workbook * @param contextstyle
  • HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setWrapText(true); //文本内容自动换行
  • 主要为大家详细介绍了java使用poi导出Excel的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java利用poi导出excel表格.zipJava利用poi导出excel表格.zip
  • 要把表格导出后,对id信息进行修改后再导回,修改过程中输入的都是数值类型的尝试使用两种方法设置单元格的文本格式后,任然单元格会在被双击后变成科学技术法。 使用的两种设置方式,第一种如下: // 生成一个(带...
  • Java使用POI导出excel文件

    千次阅读 2021-03-18 22:29:10
    Java使用POI导出excel文件前言需要的jar包上代码使用JDBC连接数据库获取导出的数据MySQL数据库表结构实体类代码DBHelper连接MySQL数据库数据操作Dao类导出excel文件的工具类代码运行测试代码运行结果总结 ...
  • java poi导出excel

    2018-04-09 09:51:15
    里面是完整的java程序,导入可执行,根据数据生成excel文件,http://localhost:8080/poi/export
  • import com.maidanli.common.utils.DateUtil; import ... import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import org.apache.poi....
  • * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上 * * @param title * 表格标题名 * @param headers * 表格属性列名数组 ...
  • Java使用POI导出Excel工具类(反射)

    千次阅读 2017-11-24 14:19:54
    pom.xml: <groupId>org.apache.poi <artifactId>poi <version>3.6 工具类:package com.taiji.jilin.common.util;import org.apac
  • NULL 博文链接:https://wjsqiuqiu201305143544.iteye.com/blog/1870663
  • 创建工作薄 response.setContentType("application/vnd.ms-excel"); response.addHeader("Content-Disposition", "attachment;filename=fileName"+".xls"); 来源:https://www.cnblogs.com/songyaru/p/12894357.html
  • 1、poi导出Excel 2、合并单元,根据自己业务进行处理 3、设置自动列宽 ExportExcelUtils import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org....
  • 利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...
  • Java POI 导入导出Excel简单实例源代码

    千次下载 热门讨论 2014-08-28 16:25:39
    Java POI 导入导出Excel简单实例源...Java POI导出EXCEL经典实现 Java导出Excel弹出下载框 http://blog.csdn.net/evangel_z/article/details/7332535 web页面导出Excel文档,路径:http://localhost:8080/poi/export
  • java使用poi导出excel太慢

    千次阅读 2020-03-16 10:28:46
    场景是查询数据然后导出excel,接口响应太慢。 打日志看各环节花费时间,10W条数据 关联查询出来 3s,导出excel花费5S。 网上导出框架 在网上查了一些资料,发现EasyPoi框架中所谓的导出大文件,其实是为了防止...
  • <groupId>org.apache.poi <artifactId>poi-ooxml <version>3.10-FINAL 利用3.10-FINAL版本的poi导出逻辑主要在FileDownloadUtils的createExcelFile方法
  • 本人在网上找了好多资源,下了50多个积分的资源,就这一个能够实现弹窗口导入下载excel,骗积分的太多了,挑选出来的这个比较完整,并且可以使用,大家放心下载
  • 主要介绍了Java Web使用POI导出Excel的方法,结合实例形式详细分析了Java Web使用POI导出Excel的具体操作步骤、实现技巧与相关注意事项,需要的朋友可以参考下
  • NULL 博文链接:https://jjxliu306.iteye.com/blog/2383610
  • 记录一个开发过程中遇到的poi导出excel问题 一般的poi导出格式为以下这种 这种实现起来也简单, 只需要配置好格式, 写好标题, 将数据循环导出到excel就行了 , 可是下面这种就比较难搞了 由于第一列需要根据日期合并...
  • Java使用poi实现excel导入导出,导入导出已做成通用方法,内附说明文档

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,374
精华内容 9,749
关键字:

java使用poi导出excel

java 订阅
友情链接: Copy-of-AudioPlayer.rar