POI
2019-06-17 23:17:24 qian_qian_123 阅读数 52
  • 基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    1273 人正在学习 去看看 钟林森

POI

2019-08-14 21:44:51 MacWx 阅读数 50
  • 基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    1273 人正在学习 去看看 钟林森

1、什么是POI?

Apache POI 是 Apache 软件基金会的开放源码函式库,POI 提供 API 给 Java 程序对
Microsoft Office 格式档案读和写的功能。

常用的两种java操作Excel技术POi和JXL的对比:
在这里插入图片描述
POI 和 JXL 对 Excel 抽象出来的对象对比

POI JXL
Excel 文档 HSSFWorkbook Workbook
Excel 的工作表 HSSFSheet Sheet
Excel 的行 HSSFRow
Excel 中的单元格 HSSFCell Cell
Excel 字体 HSSFFont
Excel 单元格样式 HSSFCellStyle
Excel 颜色 HSSFColor
合并单元格 CellRangeAddress

2、使用POI实现Excel的导入导出

先来回忆一下window使用Excel和POi对Excel抽象出来的对象

  1. 创建一个Excel文件 HSSFWorkbook
  2. 创建一张工作表 HSSFSheet
  3. 选中一行 HSSFRow
  4. 选中一个单元格 HSSFCell
  5. 在单元格中写入数据
  6. 保存

第一个demo Excel导出

1,导入POI依赖

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.11</version>
</dependency>

2,POI工具类实现导出
案例1:

package com.macw;

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 org.junit.Test;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class PoiTest {

    @Test
    public void test1() throws IOException {
//        1.创建一个文件对象
        HSSFWorkbook hssfWorkbook = new HSSFWorkbook();

//        2.创建一个表对象 通过文件对象创建表对象
        HSSFSheet sheet = hssfWorkbook.createSheet("表名:excel数据表");

//        3.获取行对象 下标从0开始
        HSSFRow row = sheet.createRow(0);

//        4.获取第1个单元格  下标从0开始
        HSSFCell cell = row.createCell(0);

//        5.在单元格中写入数据
        cell.setCellValue("Hello Wolld");

//        6.保存在磁盘中 流  文件名的后缀必须有.xls
        hssfWorkbook.write(new FileOutputStream("E://demo.xls"));
    }
}
```java
案例2:
模拟从数据库查到的所有用户及用户信息导出到excel文件中
@RequestMapping("/exportAll")
public void exportAll(HttpServletResponse resp){
    //模拟从数据库查到的所有用户及用户信息
    List<User> users = new ArrayList<User>();
    User user = new User("1","张三 1","2019-8-10");
    User user1 = new User("2","张三 2","2019-8-10");
    User user2 = new User("3","张三 3","2019-8-10");
    User user3 = new User("4","张三 4","2019-8-10");
    User user4 = new User("5","张三 5","2019-8-10");
    User user5 = new User("6","张三 6","2019-8-10");
    User user6 = new User("7","张三 7","2019-8-10");
    User user7 = new User("8","张三 8","2019-8-10");
    users.add(user);
    users.add(user1);
    users.add(user2);
    users.add(user3);
    users.add(user4);
    users.add(user5);
    users.add(user6);
    users.add(user7);
    //创建工作薄
    HSSFWorkbook workbook = new HSSFWorkbook();
    //创建工作表
    HSSFSheet sheet = workbook.createSheet("用户信息");
    //设置列宽 第一个参数:列索引 第二个参数:列宽
    sheet.setColumnWidth(2, 4500);
    //创建导出样式
    HSSFCellStyle cellStyle = workbook.createCellStyle();
    //创建字体
    HSSFFont font = workbook.createFont();
    //设置字体颜色
    font.setColor(HSSFFont.COLOR_RED);
    //设置加粗
    font.setBold(true);
   
    //设置字体
    font.setFontName("宋体");
    //设置居中
    cellStyle.setAlignment(CellStyle.ALIGN_CENTER);
    //管理字体样式
    cellStyle.setFont(font);
    //创建标题栏
    HSSFRow row = sheet.createRow(0);
    HSSFCell cell = null;
    String[] titles = {"编号","真实姓名","出生年月"};
    for (int i = 0; i < titles.length; i++) {
        cell = row.createCell(i);
        cell.setCellValue(titles[i]);
    //标题行使用样式
        cell.setCellStyle(cellStyle);
    }
    for (int i = 1; i <= users.size(); i++) {
         //创建数据行对象
        row = sheet.createRow(i);
        //数据行第一列设值
        cell = row.createCell(0);
        cell.setCellValue(users.get(i-1).getUserId());
        //数据行第二列设值
        cell = row.createCell(1);
        cell.setCellValue(users.get(i-1).getRealname());
        //数据行第三列设值
        cell = row.createCell(2);
        cell.setCellValue(users.get(i-1).getDharmaName());
    }
    String fileName = "用户报表("+new
            SimpleDateFormat("yyyy-MM-dd").format(new Date())+").xls";
    //处理中文下载名乱码
    try {
        fileName = new  String(fileName.getBytes("utf-8"),"utf-8");
        //设置 response
        resp.setContentType("application/vnd.ms-excel");
        resp.setHeader("content-disposition","attachment;filename="+fileN
                ame);
       
        workbook.write(resp.getOutputStream());
        workbook.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

3、POI导入

 @RequestMapping("/uploadIn")
    @ResponseBody
    public Map uploadIn(MultipartFile multipartFile) throws IOException {
        //输出文件名
        logger.info("----------文件名为: "+multipartFile.getOriginalFilename());
        //1,获取流对象
        InputStream inputStream = multipartFile.getInputStream();

//        2.通过poi解析流 得到 Excel文件对象
        HSSFWorkbook workbook = new HSSFWorkbook(inputStream);

//        3.通过对象获取数据 得到表
        HSSFSheet sheet = workbook.getSheetAt(0);

//        4.通过表 得到行
        int lastRowNum = sheet.getLastRowNum();
        //定义计数器,计算批量导入多少条数据
        int sum = 0;
        for (int i = 1; i <= lastRowNum; i++) {
            Guru guru = new Guru();
            HSSFRow row = sheet.getRow(i);
//            获取单元格
            double guruId = row.getCell(0).getNumericCellValue();
            guru.setGuruId((int) guruId);

            guru.setGuruName(row.getCell(1).getStringCellValue());
            guru.setGuruImage(row.getCell(2).getStringCellValue());
            guru.setGuruNickname(row.getCell(3).getStringCellValue());
            guru.setGuruStatus((int) row.getCell(4).getNumericCellValue());
            System.out.println(guru);
			//执行添加的SQL
            int insert = guruMapper.insert(guru);
            //统计添加成功的条数
            sum+=insert;
        }
        Map map = new HashMap();
        map.put("flag", sum+"");
        return map;
    }

页面代码:

<div id="insertFile" class="easyui-dialog" data-options="closed:true">
    <form id="insertFileForm" enctype="multipart/form-data" method="post">
        上传Excel文件:<input class="easyui-filebox" name="multipartFile"
                         data-options="required:true,missingMessage:'请选择文件'"/><br/><br/>
        <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-save" onClick="insertFileConfirm()">上传</a>
    </form>
</div>


js代码:

 //批量上传的文件提交
    function insertFileConfirm() {
        $("#insertFileForm").form("submit", {
            url: "${pageContext.request.contextPath}/guru/uploadIn",
            success: function (data) {
               console.log(data);
                alert("成功添加:"+data.flag+" 条数据");
                $("#insertFile").dialog("close");
                $("#guruManager").datagrid("reload");
            }
        })
    }
2019-08-20 17:18:53 zhaihao1996 阅读数 1543
  • 基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    1273 人正在学习 去看看 钟林森
  • POI

  • 首先导入依赖
<!--poi导包-->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>4.1.0</version>
</dependency>
  • 模板
//导出
 @Test
    public void testPOIImport() {
        try {
            Workbook workbook = new HSSFWorkbook(new FileInputStream(new File("F:/user.xls")));
            Sheet sheet = workbook.getSheet("user");
            Row row = sheet.getRow(0);
            String id = row.getCell(0).getStringCellValue();
            String name = row.getCell(1).getStringCellValue();
            String sex = row.getCell(2).getStringCellValue();
            String bir = row.getCell(3).getStringCellValue();
            System.out.println(id+"====="+name+"======"+sex+"======"+bir);
            int lastRowNum = sheet.getLastRowNum();
            for (int i = 1; i <= lastRowNum; i++) {
                User user = new User();
                Row row1 = sheet.getRow(i);
                user.setId(row1.getCell(0).getStringCellValue());
                user.setUsername(row1.getCell(1).getStringCellValue());
                user.setSex(row1.getCell(2).getStringCellValue());
                user.setCreateDate(row1.getCell(3).getDateCellValue());
                System.out.println("user:             "+user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • EasyPoi

官方文档:EasyPoi使用教程

  • 实体类
//教师实体类
public class Teacher implements Serializable {
    @ExcelIgnore
    private String id;
    @Excel(name = "教师姓名",needMerge=true)
    private String name;
    @Excel(name = "性别")
    private String sex;
    @ExcelCollection(name = "java152班学员")
    private List<Student> children;
}

//学生实体类
public class Student implements Serializable {
    @Excel(name = "编号")
    private String id;

    @Excel(name = "姓名")
    private String name;

    @Excel(name = "年龄")
    private Integer age;

    @Excel(name = "生日",format = "yyyy年MM月dd日 HH时mm分ss秒",width = 30)
    private Date bir;

    @Excel(name = "头像", type = 2 ,width = 40 , height = 20)
    private String image;

}

//生成excel
@Test
    public void testEasypoi2() {

        //学生集合
        List<Student> list = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            Student student = new Student(i+"","小花花"+i,10+i,new Date(),"F:\\framework\\cmfz\\cmfz_bxy\\src\\main\\webapp\\image\\shouye.png");
            list.add(student);
        }

        //教师集合
        List<Teacher> teachers = new ArrayList<>();
        Teacher teacher1 = new Teacher("123123", "suns", "男", list);
        Teacher teacher2 = new Teacher("123123", "liucy", "男", list);
        teachers.add(teacher1);
        teachers.add(teacher2);

        //工作表
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("计算机一班学生","学生"),
                Teacher.class, teachers);
        try {
            workbook.write(new FileOutputStream(new File("F:/student.xls")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 主要还是参照官方文档进行导出
2019-08-20 21:02:56 zhang33565417 阅读数 56
  • 基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    1273 人正在学习 去看看 钟林森

一、POI

1.1  引入依赖

<!--poi导包-->
<dependency>
   <groupId>org.apache.poi</groupId>
   <artifactId>poi</artifactId>
   <version>4.1.0</version>
</dependency>

1.2  导出测试

    @Test
    public void testPOI() {
        List<User> users = userDAO.selectAll();
        //创建工作薄
        Workbook workbook = new HSSFWorkbook();
        //创建字体   楷体、加粗、倾斜 
        Font font = workbook.createFont();
        font.setBold(true);
        font.setFontName("楷体");
        font.setItalic(true);
        //创建样式
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFont(font);
        //创建日期格式的样式
        CellStyle cellStyle1 = workbook.createCellStyle();
        //创建日期格式
        DataFormat dataFormat = workbook.createDataFormat();
        short format = dataFormat.getFormat("yyyy年MM月dd日");
        cellStyle1.setDataFormat(format);
        //创建工作表
        Sheet sheet = workbook.createSheet("user");
        //第一个参数 是要给那一列设置宽度 下标    第二个参数 宽度  *256
        sheet.setColumnWidth(3,20*256);
        //创建行  参数为下标
        Row row = sheet.createRow(0);
        String[] strings = {"编号","姓名","性别","生日"};
        for (int i = 0; i < strings.length; i++) {
            //创建单元格
            Cell cell = row.createCell(i);
            //给单元格设置样式
            cell.setCellStyle(cellStyle);
            //给单元格赋值
            cell.setCellValue(strings[i]);
        }
        for (int i = 0; i < users.size(); i++) {
            Row row1 = sheet.createRow(i + 1);
            row1.createCell(0).setCellValue(users.get(i).getId());
            row1.createCell(1).setCellValue(users.get(i).getUsername());
            row1.createCell(2).setCellValue(users.get(i).getSex());
            Cell cell = row1.createCell(3);
            cell.setCellStyle(cellStyle1);
            cell.setCellValue(users.get(i).getCreateDate());
        }
        try {
            workbook.write(new FileOutputStream(new File("F:/user.xls")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

1.3  导入测试

    @Test
    public void testPOIImport() {
        try {
            Workbook workbook = new HSSFWorkbook(new FileInputStream(new File("F:/user.xls")));
            Sheet sheet = workbook.getSheet("user");
            Row row = sheet.getRow(0);
            String id = row.getCell(0).getStringCellValue();
            String name = row.getCell(1).getStringCellValue();
            String sex = row.getCell(2).getStringCellValue();
            String bir = row.getCell(3).getStringCellValue();
            System.out.println(id+"====="+name+"======"+sex+"======"+bir);
            int lastRowNum = sheet.getLastRowNum();
            for (int i = 1; i <= lastRowNum; i++) {
                User user = new User();
                Row row1 = sheet.getRow(i);
                user.setId(row1.getCell(0).getStringCellValue());
                user.setUsername(row1.getCell(1).getStringCellValue());
                user.setSex(row1.getCell(2).getStringCellValue());
                user.setCreateDate(row1.getCell(3).getDateCellValue());
                System.out.println("user:             "+user);
				//导入数据库
				userService.insert(user);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

二、EasyPoi

官方文档 -->  EasyPoi教程

2.1  引入依赖

        <!-- easypoi的jar -->
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.2.0</version>
        </dependency>

注意:引入 easypoi 的jar后就不要引 poi 的jar了,否则会冲突

2.2  导出测试

  • 实体类
//Student实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {

    @Excel(name="学生编号")
    private String id;

    @Excel(name="学生名字")
    private String name;

    @Excel(name="学生年龄")
    private Integer age;

    @Excel(name="出生年月",exportFormat = "yyyy年MM月dd日")
    private Date bir;

    @ExcelIgnore
    private Double salary;

}


//Teacher实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
@ExcelTarget(value = "teacher")
public class Teacher implements Serializable {
    @ExcelIgnore
    private String id;
    @Excel(name = "教师姓名",needMerge=true)
    private String name;
    @Excel(name = "性别",needMerge=true)
    private String sex;
    @ExcelCollection(name = "1502班学生")
    private List<Student> children;
}

  • 测试代码
    @Test
    public void myTest3() throws IOException {
        //学生集合
        List<Student> list = new ArrayList<>();
        for(int i=0;i<10;i++){
            Student student = new Student(i + "", "小黑" + i, 20 + i, new Date(), 10000.0);
            list.add(student);
        }

        //教师集合
        List<Teacher> teachers = new ArrayList<>();
        Teacher teacher1 = new Teacher("1", "教师1", "男", list);
        Teacher teacher2 = new Teacher("2", "教师2", "男", list);
        teachers.add(teacher1);
        teachers.add(teacher2);

        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("计算机1502班学生","学生"),
                    Teacher.class,teachers);

        workbook.write(new FileOutputStream("G:\\用户.xls"));
        workbook.close();
    }

2.3  导入测试

配置上与导出是一样的,只是方式反过来而已,具体见官方文档。

 

2019-07-08 13:38:25 weixin_44185666 阅读数 148
  • 基于SSM的POI导入导出Excel实战

    本课程将给大家分享如何基于SSM实现POI导入导出Excel,并讲解目前企业级JavaWeb应用mvc三层模式的开发流程,可让初学者或者职场萌新掌握如何基于SSM整合第三方框架并采用mvc三层开发模式实现自己的业务模块!

    1273 人正在学习 去看看 钟林森

POI是什么

  • POI提供API给Java程序对Microsoft Office格式档案读和写的功能
    • Microsoft Office是一套办公软件

 

POI怎么和项目结合起来使用

  • 第二步

  • 第三步

  • 下载完成将其解压,然后找到相关jar包,将其导入项目的lib目录下

导出普通的excel表

  • 前台

function downloadexcel(){

var v_movieform=document.getElementById("movieform");

v_movieform.action=" <%=request.getContextPath()%>/movie/downloadexcel.fh";

v_movieform.method="post";

v_movieform.submit();

}

 

b.后台

//查询所有电影

movielist=movieService.findAllMovie(movie);

//创建excel

////生成表

XSSFWorkbook wb = new XSSFWorkbook();

XSSFSheet sheet = wb.createSheet("电影列表");

//创建表头行

XSSFRow header = sheet.createRow(0);

//给表头行中的列赋值

header.createCell(0).setCellValue("电影名称");

header.createCell(1).setCellValue("电影类型");

header.createCell(2).setCellValue("电影地区");

header.createCell(3).setCellValue("电影评分");

header.createCell(4).setCellValue("上映时间");

header.createCell(5).setCellValue("电影年代");

//创建样式

XSSFCellStyle style = wb.createCellStyle();

//给样式添加日期格式 style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

//for循环将查询出来的值赋到excel中

for (int i = 0; i < movielist.size(); i++) {

Movie tomovie = movielist.get(i);

XSSFRow row = sheet.createRow(i+1);

XSSFCell movienameCell = row.createCell(0);

movienameCell.setCellValue(tomovie.getMovieName());

XSSFCell typecell = row.createCell(1);

typecell.setCellValue(tomovie.getMovieType().getTypeName());

XSSFCell areacell = row.createCell(2);

areacell.setCellValue(tomovie.getMovieArea().getAreaName());

XSSFCell scorecell = row.createCell(3);

scorecell.setCellValue(tomovie.getScore());

XSSFCell datecell = row.createCell(4);

datecell.setCellValue(tomovie.getShowDate());

//给这一列添加样式

datecell.setCellStyle(style);

XSSFCell agecell = row.createCell(5);

agecell.setCellValue(tomovie.getAge().getAgeName());

}

//导出excell

FileUtil.excelDownload(wb, getResponse());

 

 

 

导出带有样式的excel表

a.前台

function typeexcelstyle(){

var v_movieform=document.getElementById("movieform");

v_movieform.action="<%=request.getContextPath()%>/movie/typeexcelstyle.fh";

v_movieform.method="post";

v_movieform.submit();

}

 

b.后台

为了代码更清晰易懂将代码进行了重构

1. //查询所有电影

movielist=movieService.findAllMovie(movie);

//生成Excel

XSSFWorkbook wb = builExcel(movielist);(详细内容见一)

//下载

FileUtil.excelDownload(wb, getResponse());

一生成Excel

.private XSSFWorkbook builExcel(List<Movie> movielist) {

//生成表

XSSFWorkbook wb=new XSSFWorkbook();

XSSFSheet sheet = wb.createSheet("电影总数"+movielist.size());

//表头

builTitle(wb, sheet);(详细内容见二

//构建header

builHeader(wb, sheet);(详细内容见三

//构建主体

builbody(movielist, wb, sheet);(详细内容见四

return wb;

}

二表头.

private void builTitle(XSSFWorkbook wb, XSSFSheet sheet) {

//添加样式

XSSFCellStyle titleStyle = wb.createCellStyle();

//合并单元格

CellRangeAddress titlecellrange = new CellRangeAddress(3,5,7,12);

sheet.addMergedRegion(titlecellrange);

//居中样式

titleStyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);

titleStyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);

//字体大小

XSSFFont titlefont=wb.createFont();

titlefont.setBold(true);

titlefont.setFontHeightInPoints((short) 22);

titleStyle.setFont(titlefont);

//背景颜色

titleStyle.setFillForegroundColor(HSSFColor.GREEN.index);

titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

//创建标题行

XSSFRow titlerow = sheet.createRow(3);

//创建标题列

XSSFCell titlecell = titlerow.createCell(7);

titlecell.setCellValue("电影列表");

titlecell.setCellStyle(titleStyle);

}

三构建header

.private void builHeader(XSSFWorkbook wb, XSSFSheet sheet) {

//构建header

XSSFRow headerrow = sheet.createRow(6);

//创建样式

XSSFCellStyle headerstyle = wb.createCellStyle();

//样式居中

headerstyle.setAlignment(XSSFCellStyle.ALIGN_CENTER);

headerstyle.setVerticalAlignment(XSSFCellStyle.VERTICAL_CENTER);

//背景颜色

headerstyle.setFillForegroundColor(HSSFColor.RED.index);

headerstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

String[] headerval={"电影名称","评分","上映时间","地区","类型","电影年代"};

int start=7;

int end=start+headerval.length;

for (int i = start; i < end; i++) {

XSSFCell headerCell = headerrow.createCell(i);

headerCell.setCellValue(headerval[i-start]);

headerCell.setCellStyle(headerstyle);

}

}

四构建主体

.private void builbody(List<Movie> movielist, XSSFWorkbook wb, XSSFSheet sheet) {

//创建样式

XSSFCellStyle bodystyle = wb.createCellStyle();

//修改日期格式

bodystyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

//创建样式

XSSFCellStyle warnstyle=wb.createCellStyle();

//改变背景颜色

warnstyle.setFillForegroundColor(HSSFColor.YELLOW.index);

warnstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

//整合两个样式

XSSFCellStyle allstyle=wb.createCellStyle();

allstyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));

allstyle.setFillForegroundColor(HSSFColor.YELLOW.index);

allstyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);

//for循环赋值

for (int i = 0; i < movielist.size(); i++) {

Movie movieinfo = movielist.get(i);

XSSFRow bodyrow = sheet.createRow(i+7);

XSSFCell movienamecell = bodyrow.createCell(7);

movienamecell.setCellValue(movieinfo.getMovieName());

XSSFCell scorecell = bodyrow.createCell(8);

scorecell.setCellValue(movieinfo.getScore());

XSSFCell showdatecell = bodyrow.createCell(9);

showdatecell.setCellValue(movieinfo.getShowDate());

showdatecell.setCellStyle(bodystyle);

XSSFCell areacell = bodyrow.createCell(10);

areacell.setCellValue(movieinfo.getMovieArea().getAreaName());

XSSFCell typecell = bodyrow.createCell(11);

typecell.setCellValue(movieinfo.getMovieType().getTypeName());

XSSFCell agecell = bodyrow.createCell(12);

agecell.setCellValue(movieinfo.getAge().getAgeName());

if (movieinfo.getScore()<6) {

movienamecell.setCellStyle(warnstyle);

scorecell.setCellStyle(warnstyle);

showdatecell.setCellStyle(allstyle);

areacell.setCellStyle(warnstyle);

typecell.setCellStyle(warnstyle);

agecell.setCellStyle(warnstyle);

}

}

}

 

 

 

导出代样式分类型的excel表

  • 前台

    • function typeexcelstyle(){

var v_movieform=document.getElementById("movieform");

v_movieform.action="<%=request.getContextPath()%>/movie/typeexcelstyle.fh";

v_movieform.method="post";

v_movieform.submit();

}

  • 后台

    • public void typeexcelstyle(){

//查询类型

List<MovieType> querytypeall = movieTypeService.querytypeall();

//查询电影

movielist=movieService.findAllMovie(movie);

//生成excel

XSSFWorkbook wb = new XSSFWorkbook();

for (MovieType movieType : querytypeall) {

//调用类型相同电影的方法

List<Movie> findMovieListByType = findMovieListByType(movieType.getId(), movielist);见内容五

XSSFSheet sheet = wb.createSheet(movieType.getTypeName()+findMovieListByType.size()+"条");

表头,header,主体 ,与 导出带有样式的excel表中二三四一样

//表头

builTitle(wb, sheet);

//构建header

builHeader(wb, sheet);

//构建主体

builbody(findMovieListByType, wb, sheet);

}

//下载

FileUtil.excelDownload(wb, getResponse());

}

判断相同的类型的电影(电影的集合是从已经查询出来中的,不需要再次与数据库交汇)

private List<Movie> findMovieListByType(int typeid,List<Movie> movielist){

List<Movie> movieinfo=new ArrayList<>();

for (Movie movie : movielist) {

if (typeid==movie.getMovieType().getId()) {

movieinfo.add(movie);

}

}

return movieinfo;

}

 

 

 

导出代样式分地区的excel表

  • 前台

    • function areaexcelstyle(){

var v_movieform=document.getElementById("movieform");

v_movieform.action="<%=request.getContextPath()%>/movie/areaexcelstyle.fh";

v_movieform.method="post";

v_movieform.submit();

}

    • 后台
      • public void areaexcelstyle(){

//查询所有地区

List<MovieArea> queryareaall = movieAreaService.queryareaall();

//查询所有电影

movielist=movieService.findAllMovie(movie);

XSSFWorkbook wb = new XSSFWorkbook();

for (MovieArea area : queryareaall) {

// //调用地区相同电影的方法

List<Movie> findMovieListByArea = findMovieListByArea(area.getId(),movielist);(详细见六)

XSSFSheet sheet = wb.createSheet(area.getAreaName()+findMovieListByArea.size()+"条");

(表头,header,主体 ,与 导出带有样式的excel表中二三四一样)

//表头

builTitle(wb, sheet);

//构建header

builHeader(wb, sheet);

//构建主体

builbody(findMovieListByArea, wb, sheet);

}

//下载

FileUtil.excelDownload(wb, getResponse());

}

判断相同的地区的电影(电影的集合是从已经查询出来中的,不需要再次与数据库交汇)

private List<Movie> findMovieListByArea(int areaid,List<Movie> movielist){ List<Movie> moviearr=new ArrayList<>();

for (Movie movie : movielist) {

if (areaid==movie.getMovieArea().getId()) {

moviearr.add(movie);

}

}

return moviearr;

}

POI在使用过程中的注意事项

1.前台

注意:1.movieform与from表单中的id一致

2.由于导出需要下载所以不能使用ajax发送请求

3.条件查询需要使用from表单发送请求,并且from表单中的元素都需

要加上name属性

 

2.后台

注意:1.excel表中的下标从0开始

2.给列调节样式不能够使用一个以上的样式否则会产生覆盖

3.excel表中的单元格中的数据是有数据类型的,默认情况下字符

串靠左,数字靠右

4.如果将文件写到硬盘上就用FileOutPutStrema如果将文件直接

写到客户端浏览器就用response.getOutPutStream

5.如果需要将服务器端相应的数据发送给客户端浏览器则需要

response这个核心对象

POI2014

阅读数 4717

poi

博文 来自: qq_36637705
没有更多推荐了,返回首页