Java实现Excel导出

本文介绍了一种使用Java和Apache POI库轻松导出Excel的方法。通过创建工具类和使用注解,可以简化Excel导出的复杂性。文章提供了详细代码示例,包括如何设置实体类、导出数据以及前端Vue+axios的请求处理。同时,还展示了如何处理时间格式转换,以适应不同的展示需求。
摘要由CSDN通过智能技术生成

工作中需要用到导出Excel功能,传统的方法比较复杂,不好修改。这里介绍一种封装好的工具类写法,只需要设置好实体类,用注解的方式写好对应的列名,再传入从数据库查出的数据集合就可以导出。

先来介绍代码,如果不想看的同学可以直接点击下载链接,里面有所有相关代码。https://download.csdn.net/download/shenjuntao520/18161800

首先pom引入jar包:

        <dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.13</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>3.13</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.13</version>
		</dependency>

FileUtils.java:

    /**
     * 浏览器直接导出Excel文件
     *
     * @param filename 文件名称
     * @param list     文件内容List
     * @param clazz    List中的对象类型
     * @return ResponseBo
     */
    public static ResponseBo createExcelByPOIKit(String filename, List<?> list, Class<?> clazz,HttpServletResponse response) {
    	if (list.isEmpty()) {
            return ResponseBo.warn("导出数据为空!");
        } else {
            boolean operateSign = false;
            String fileName = filename + ".xlsx";
                operateSign = ExcelUtils.export(clazz, response)
                        // 设置每个sheet的最大记录数,默认为10000,可不设置
                        // .setMaxSheetRecords(10000)
                        .toExcel(list,"检测数据", null);
            if (operateSign) {
                return ResponseBo.ok(fileName);
            } else {
                return ResponseBo.error("导出Excel失败,请联系网站管理员!");
            }
        }
    }

主要是调用这个方法,从浏览器直接导出Excel文件,filename是文件名,list是数据集合,clazz是集合中对象的类型,response是从Controller中传入的response。

ExcelUtils.java:

    /**
     * 用于浏览器导出
     *
     * @param clazz    实体Class对象
     * @param response 原生HttpServletResponse对象
     * @return ExcelUtils
     */
    public static ExcelUtils export(Class<?> clazz, HttpServletResponse response) {
        return new ExcelUtils(clazz, response);
    }

export方法用来创建一个ExcelUtils类,其实就是个构造器。

    public boolean toExcel(List<?> data,String sheetName, OutputStream out) {

        return toExcel(data,sheetName, new ExportHandler() {

            @Override
            public CellStyle headCellStyle(SXSSFWorkbook wb) {
                CellStyle cellStyle = wb.createCellStyle();
                Font font = wb.createFont();
                cellStyle.setFillForegroundColor((short) 12);
                cellStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);// 填充模式
                cellStyle.setBorderTop(CellStyle.BORDER_THIN);// 上边框为细边框
                cellStyle.setBorderRight(CellStyle.BORDER_THIN);// 右边框为细边框
                cellStyle.setBorderBottom(CellStyle.BORDER_THIN);// 下边框为细边框
                cellStyle.setBorderLeft(CellStyle.BORDER_THIN);// 左边框为细边框
                cellStyle.setAlignment(CellStyle.ALIGN_LEFT);// 对齐
                cellStyle.setFillForegroundColor(HSSFColor.GREEN.index);
                cellStyle.setFillBackgroundColor(HSSFColor.GREEN.index);
                font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
                // font.setFontHeightInPoints((short) 12);// 字体大小
                font.setColor(HSSFColor.WHITE.index);
                // 应用标题字体到标题样式
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值