使用easyExcel进行数据导出

开发大部分系统需要进行数据的导出,发现阿里的eayExcel插件极为好用,仅需一个注解,加上几行代码轻松搞定excel导出。话不多说直接贴代码
1、pom.xml 引入jar包

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>1.1.2-beta5</version>
    </dependency>

2、实体类必须继承,index为表头顺序
public class Mine extends BaseRowModel{

 /**
 * 类别
 */
@ExcelProperty(value = "类别", index = 1)
private String type;

/**
 * 名称
 */
@ExcelProperty(value = "矿山名称", index = 2)
private String name;

}

2、controller 入口类

/**
* 数据导出
* @param search
* @param response
*/

@RequestMapping(value = "/exportDateToExcel")
public void exportDateToExcel(Mine search, HttpServletResponse response) {
	//根据条件查询导出的数据
    List<Mine> list = service.findAll(search, pageable).getContent();
    try {
        Map<String, List<? extends BaseRowModel>> map = new HashMap<>();
        map.put("数据信息", list);
        ExcelUtil.createExcelStreamMutilByEaysExcel(response, map, ExcelTypeEnum.XLSX, "数据信息("+ExcelUtil.fileName()+").xlsx");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

2.Excel工具类
public class ExcelUtil {

/**
 * @Author jian
 * @Description 导出excel 支持一张表导出多个sheet
 * @Param OutputStream 输出流
 * Map<String, List>  sheetName和每个sheet的数据
 * ExcelTypeEnum 要导出的excel的类型 有ExcelTypeEnum.xls 和有ExcelTypeEnum.xlsx
 */
public static void createExcelStreamMutilByEaysExcel(HttpServletResponse response, Map<String, List<? extends BaseRowModel>> SheetNameAndDateList, ExcelTypeEnum type, String fileName) throws UnsupportedEncodingException {
    try {
        response.setContentType("multipart/form-data");
        response.setCharacterEncoding("utf-8");
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(fileName.replaceAll(" ", "").getBytes("utf-8"), "iso8859-1"));
        ServletOutputStream out = response.getOutputStream();
        ExcelWriter writer = new ExcelWriter(out, type, true);
        setSheet(SheetNameAndDateList, writer);
        writer.finish();
        out.flush();
        System.out.println("导出完成");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

/**
* 以当前时间生成文件名
* @return
*/

public static String fileName() {
    String fileName = "";
    try {
        fileName = new String(
                (new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(), "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }
    return fileName;
}

/**
 * @Author jian
 * @Description //setSheet数据
 */
private static void setSheet(Map<String, List<? extends BaseRowModel>> SheetNameAndDateList, ExcelWriter writer) {
    int sheetNum = 1;
    for (Map.Entry<String, List<? extends BaseRowModel>> stringListEntry : SheetNameAndDateList.entrySet()) {
        Sheet sheet = new Sheet(sheetNum, 0, stringListEntry.getValue().get(0).getClass());
        sheet.setSheetName(stringListEntry.getKey());
        writer.write(stringListEntry.getValue(), sheet);
        sheetNum++;

    }
}

OK! 完成啦!

使用EasyExcel导出数据的步骤如下: 1. 首先,确保已经将EasyExcel的依赖添加到项目中。可以在项目的pom.xml文件中添加以下依赖: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency> ``` 2. 创建一个实体类来表示导出数据。这个实体类中的字段将对应Excel表格中的列。 3. 在代码中,使用EasyExcel提供的API来进行数据导出。首先,创建一个`ExcelWriter`对象,指定导出的文件路径和文件名。然后,使用`Sheet`和`Row`对象来指定要导出数据所在的Sheet和行。接下来,通过设置每个单元格的值,将数据写入到Excel表格中。最后,调用`finish`方法来完成导出操作。 下面是一个示例代码,演示了如何使用EasyExcel导出数据: ```java // 1. 创建导出数据实体类 public class User { private String name; private int age; // 其他字段... // 省略构造方法、getter和setter } // 2. 导出数据 public void exportData() { // 2.1 创建ExcelWriter对象 String fileName = "导出文件.xlsx"; ExcelWriter excelWriter = EasyExcel.write(fileName).build(); // 2.2 创建Sheet对象 Sheet sheet = new Sheet(1, 0, User.class); sheet.setSheetName("用户数据"); // 2.3 查询数据库或准备数据列表 List<User> userList = userService.getUserList(); // 2.4 写入数据到Excel表格中 excelWriter.write(userList, sheet); // 2.5 完成导出操作 excelWriter.finish(); } ``` 这样,使用EasyExcel就可以轻松地将数据导出到Excel表格中了。通过设置`User`类中的字段,可以控制导出表格的列名和数据内容。 请注意,上述示例代码中的`userService.getUserList()`是一个示例方法,用于获取要导出数据列表。具体的获取数据的方式可能因项目而异。 参考资料:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

簡丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值