当前位置: 移动技术网 > IT编程>开发语言>Java > springboot整合jxl导出

springboot整合jxl导出

2020年07月30日  | 移动技术网IT编程  | 我要评论

注:本案例是写在单元测试中

创建数据库sql

/*
Navicat MySQL Data Transfer

Source Server         : 我的连接
Source Server Version : 50717
Source Host           : 127.1.1.1:3306
Source Database       : mybatis

Target Server Type    : MYSQL
Target Server Version : 50717
File Encoding         : 65001

Date: 2020-07-29 15:05:21
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `department_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of department
-- ----------------------------
INSERT INTO `department` VALUES ('1', 'AA');
INSERT INTO `department` VALUES ('2', 'BB');
INSERT INTO `department` VALUES ('3', 'CC');

测试类

import cn.baisee.sbdatamybatis.entity.Department;
import cn.baisee.sbdatamybatis.mapper.DepartmentMapper;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import org.springframework.beans.factory.annotation.Autowired;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

@SpringBootTest
class SbdataMybatisApplicationTests {
    @Autowired(required = false)
    DepartmentMapper departmentMapper;
    @Test
    void contextLoads() throws Exception {
        //从数据库查出id为1的department
        Department department = departmentMapper.getDeptById(1);
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("id",department.getId());
        map.put("name",department.getDepartmentName());
        List<HashMap<String, Object>> maps = new ArrayList<>();
        maps.add(map);
        write(maps);
    }
     @Test
    void contextLoads2() throws Exception {
        //从数据库查出多个department下面map.put(...,...);循环list添加
        List<Department> department = departmentMapper.getDepts();
        List<HashMap<String, Object>> maps = new ArrayList<>();
        for (Department dep:department) {
            HashMap<String, Object> map = new HashMap<String, Object>();
            map.put("name",dep.getDepartmentName());
            map.put("id",dep.getId());
            maps.add(map);
        }
        write(maps);
    }
    //导出
    public void write(List<HashMap<String, Object>> maps) throws Exception {
        //导出到哪个位置
        File file = new File("C:/Users/lenovo/Desktop/报表.xls");
        //如果不存在
        if(!file.exists()){
            //就创建
            file.createNewFile();
        }
        //使用jxl写入数据需要createWorkbook
        WritableWorkbook workbook = Workbook.createWorkbook(file);
        //添加工作表
        WritableSheet sheet = workbook.createSheet("测试表", 0);
        //为第一行添加表头,我直接添加字段名,具体使用根据实际情况
        if(maps.size()>0){
            int i = 0;
            for(String key:maps.get(0).keySet()){
                sheet.addCell(new Label(i, 0, key));
                i++;
            }
        }
        String key = null;
        String value = null;
        for(int i=0;i<maps.size();i++){
            for(int j=0;j<sheet.getColumns();j++){
                key = sheet.getCell(j, 0).getContents();
                value = maps.get(i).get(key).toString();
                sheet.addCell(new Label(j, i+1, value));
            }
        }
        workbook.write();
        workbook.close();
    }

}

本文地址:https://blog.csdn.net/weixin_44805174/article/details/107664868

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网