Easypoi模版导出excel

若您正在使用easypoi进行excel导出的话,希望这篇文章能帮到您。

该文章是使用easypoi得模版方式实现excel导出(目前是单sheet的导出),

若需要使用非模版形式导出多sheet得话,可以参考我的文章EasyPOI->非模版形式导出Excel(多Sheet)

如需使用模版形式导出多sheet,可参考我的文章:EasyPOI->模版形式导出Excel(多Sheet)

如需要导出图片到excel可参考我的文章: Easypoi模版形式导出excel导出图片

直接导出单sheet代码具体参考如下:

首先加入easypoi得依赖:

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

之后就可以书写代码啦,代码如下:

@Controller
@RequestMapping(value = "exportexcel")
public class ExportExcelTest {
    @RequestMapping(value="exportexceltest")
    @ResponseBody
    public String exportExcelTest(HttpServletResponse response){
        // 获取workbook对象
        Workbook workbook = exportSheetByTemplate() ;
        // 判断数据
        if(workbook == null) {
            return "fail";
        }
        // 设置excel的文件名称
        String excelName = "测试excel" ;
        // 重置响应对象
        response.reset();
        // 当前日期,用于导出文件名称
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateStr = "["+excelName+"-"+sdf.format(new Date())+"]";
        // 指定下载的文件名--设置响应头
        response.setHeader("Content-Disposition", "attachment;filename=" +dateStr+".xls");
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        // 写出数据输出流到页面
        try {
            OutputStream output = response.getOutputStream();
            BufferedOutputStream bufferedOutPut = new BufferedOutputStream(output);
            workbook.write(bufferedOutPut);
            bufferedOutPut.flush();
            bufferedOutPut.close();
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "success";
    }

    /**
     * 模版单sheet导出示例
     * @return
     */
    public Workbook exportSheetByTemplate(){
        // 查询数据,此处省略
        List<EasyPOIModel> list = new ArrayList<EasyPOIModel>();
        int count1 = 0 ;
        EasyPOIModel easyPOIModel11 = new EasyPOIModel(String.valueOf(count1++),"信科",new User("张三","男",20)) ;
        EasyPOIModel easyPOIModel12 = new EasyPOIModel(String.valueOf(count1++),"生工",new User("李四","男",17)) ;
        EasyPOIModel easyPOIModel13 = new EasyPOIModel(String.valueOf(count1++),"化工",new User("淑芬","女",34)) ;
        EasyPOIModel easyPOIModel14 = new EasyPOIModel(String.valueOf(count1++),"信科",new User("仲达","男",55)) ;
        list.add(easyPOIModel11) ;
        easyPOIModel11 = null ;
        list.add(easyPOIModel12) ;
        easyPOIModel12 = null ;
        list.add(easyPOIModel13) ;
        easyPOIModel13 = null ;
        list.add(easyPOIModel14) ;
        easyPOIModel14 = null ;
        // 设置导出配置
        // 获取导出excel指定模版
        TemplateExportParams params = new TemplateExportParams("d:/项目测试文件夹/easypoiExample.xlsx");
        // 标题开始行
        // params.setHeadingStartRow(0);
        // 标题行数
        // params.setHeadingRows(2);
        // 设置sheetName,若不设置该参数,则使用得原本得sheet名称
        params.setSheetName("班级信息");
        Map<String,Object> map = new HashMap<String,Object>() ;
        map.put("list",list) ;
        // 导出excel
        return ExcelExportUtil.exportExcel(params, map);
    }
}

 

 

模版文件格式如下:

 

模版使用语法如下:

下面列举下EasyPoi支持的指令以及作用,最主要的就是各种fe的用法

  • 空格分割
  • 三目运算 {{test ? obj:obj2}}
  • n: 表示 这个cell是数值类型 {{n:}}
  • le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
  • fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
  • fn: 格式化数字 {{fn:(obj;###.00)}}
  • fe: 遍历数据,创建row
  • !fe: 遍历数据不创建row
  • $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
  • #fe: 横向遍历
  • v_fe: 横向遍历值
  • !if: 删除当前列 {{!if:(test)}}
  • 单引号表示常量值 '' 比如'1' 那么输出的就是 1
  • &NULL& 空格
  • ]] 换行符 多行遍历导出
  • sum: 统计数据

 

使用上述代码导出的文件如下:

上图可以看到数据已经按照模版导出了出来,且sheet得名称由原来得"信息"变更为了"班级信息",这种变更是通过下面这句代码进行设置得

// 设置sheetName,若不设置该参数,则使用得原本得sheet名称 
params.setSheetName("班级信息");

若不想改变sheet得名称,则将上面这句代码注释即可,注释后再次导出excel后可以看到如图:

sheet得名称已经变回原本模版中写好得名称。

 

其他相关使用请参考原文章:https://gitee.com/jeecg/easypoi

 

 

 

 

 

 

 

 

如您有其他问题,希望可以通过留言得形式及时交流,有书写错误和可优化的地方也希望及时提出,感谢。

 

 

  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 31
    评论
好的,easypoi 是一款用于简化 POI 操作的工具库。它提供了一种使用注解的方式来定义表格的属性,从而简化了 Excel 的导入导出操作。下面我将通过一个实例来帮助你理解 easypoi 的使用。 假设我们有一个简单的实体类 User,包含了用户的姓名、年龄、性别和地址四个属性,如下所示: ``` public class User { @Excel(name = "姓名") private String name; @Excel(name = "年龄") private Integer age; @Excel(name = "性别") private String gender; @Excel(name = "地址") private String address; // 省略 getter 和 setter 方法 } ``` 我们要将一组 User 对象导出Excel 文件中,可以通过 easypoi 的注解来定义表格的属性。首先,我们需要创建一个 Excel 实体类,用于描述表格的结构,如下所示: ``` public class UserExcel { @Excel(name = "序号") private Integer no; @Excel(name = "姓名") private String name; @Excel(name = "年龄") private Integer age; @Excel(name = "性别", replace = {"男_1", "女_2"}) private String gender; @Excel(name = "地址") private String address; // 省略 getter 和 setter 方法 } ``` 在这个实体类中,我们使用 @Excel 注解来定义表格的各列,可以指定列名、列宽、列高、列的格式等属性。其中 replace 属性用于将指定的字符串替换为数字,用于将性别从字符串类型转换为数字类型。 接下来,我们需要编写导出方法,用于将 User 对象导出Excel 文件中。代码如下所示: ``` public void exportExcel(List<User> userList) { List<UserExcel> list = new ArrayList<>(); for (int i = 0; i < userList.size(); i++) { User user = userList.get(i); UserExcel userExcel = new UserExcel(); userExcel.setNo(i + 1); userExcel.setName(user.getName()); userExcel.setAge(user.getAge()); userExcel.setGender(user.getGender()); userExcel.setAddress(user.getAddress()); list.add(userExcel); } // 导出 Excel 文件 String fileName = "用户列表.xls"; ExportParams params = new ExportParams("用户列表", "Sheet1"); Workbook workbook = ExcelExportUtil.exportExcel(params, UserExcel.class, list); try { HttpServletResponse response = ServletActionContext.getResponse(); response.reset(); response.setContentType("application/octet-stream; charset=utf-8"); response.setHeader("Content-Disposition", "attachment; filename=" + new String(fileName.getBytes(), "iso-8859-1")); OutputStream os = response.getOutputStream(); workbook.write(os); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } } ``` 在这个方法中,我们首先将 User 对象转换为 UserExcel 对象,然后使用 easypoiExcelExportUtil 类将数据导出Excel 文件中。为了将 Excel 文件作为附件下载,我们还需要设置响应头信息,将文件的格式设置为 octet-stream,同时将文件名进行编码。 通过上述的代码,我们就可以将 User 对象导出Excel 文件中了。需要注意的是,我们只需要关注数据的转换和格式化,而无需关注 Excel 的底层实现,从而实现了一种简单、易用的 Excel 导出方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值