alibaba easyExcel 导出excel(解决乱码)

1.添加依赖

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.6</version>
    </dependency>

2.查询需要导出的数据

	List<HitEntity> hitEntities = fusionRecordMapper.selectHitEntity(hitNum,rangeNum);

3.处理文件名称乱码

	String fileName ="文件名称";
    response.reset();
    response.setContentType("application/octet-stream");
    response.setCharacterEncoding("utf-8");
    //解决不同浏览器压缩包名字含有中文时乱码的问题
    String agent = request.getHeader("USER-AGENT");
    try {
        if (agent.contains("MSIE")||agent.contains("Trident")) {
            fileName = java.net.URLEncoder.encode(fileName, "UTF-8");
        } else {
            fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    response.setHeader("Content-Disposition",
            String.format("attachment; filename=\"%s\"",fileName));
    try {
    	//EasyExcel导出表-调用head(获取表头信息方法)  dataList(获取表数据信息方法)
        EasyExcel.write(response.getOutputStream()).head(head(hitEntities)).
                sheet("模板").doWrite(dataList(hitEntities));
    } catch (IOException e) {
        log.error("写入浏览器异常",e);
    }

4.head(获取表头信息方法)

	  private List<List<String>> head(List<HitEntity> hitEntities) {
	        List<List<String>> list = new ArrayList<>();
	        if (ObjectUtil.isEmpty(hitEntities)){
	            return list;
	        }
	        LinkedHashMap<String, String> map = JSON.parseObject(hitEntities.get(0).getUpdateInfo(),
	                new TypeReference<LinkedHashMap<String, String>>(){} );
	        Set<String> headSet  = map.keySet();
	        HashSet<String> hashSet2 = new HashSet<>(headSet);
	        hashSet2.add("是否命中");
	        for (String headCol:hashSet2){
	            List<String> headColList = new ArrayList<>();
	            headColList.add(headCol);
	            list.add(headColList);
	        }
	        return list;
}

5.dataList(获取表数据信息方法)

	private List<List<Object>> dataList(List<HitEntity> hitEntities) {
        List<List<Object>> list = new ArrayList<>();
        if (ObjectUtil.isEmpty(hitEntities)){
            return list;
        }
        for (HitEntity hitEntity:hitEntities){
            List<Object> data = new ArrayList<>();
            Map<String, String> map = JSON.parseObject(hitEntity.getUpdateInfo(), new 			    TypeReference<Map<String, String>>(){} );
            map.put("是否命中",1==hitEntity.getIsHit()?"是":"否");
            for (String key: map.keySet()){
                data.add(map.get(key));
            }
            list.add(data);
        }
        return list;
}

6.实体类

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * @author TG
 * @create 2021-04-26 14:32
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("fusion_record")
@ApiModel(value="融合记录 ",description="融合记录 ")
public class HitEntity {
    /**
     * 更新信息 :更新的字段和值
     */
    @ApiModelProperty(value = "更新信息 :更新的字段和值")
    private String updateInfo;
    @ApiModelProperty(value = "是否命中 :0未命中,1命中")
    private Integer isHit;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
阿里巴巴的EasyExcel是一个基于Java的开源项目,用于简化Excel的读写操作。你可以通过在项目的pom.xml文件中添加以下依赖来使用EasyExcel进行Excel导出: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.1.1</version> </dependency> ``` EasyExcel的特点是在尽可能节约内存的情况下支持读写大型Excel文件。相比于其他Java领域的Excel处理框架,如Apache POI和jxl,EasyExcel在解析Excel时不会一次性加载全部数据到内存中,而是逐行读取并解析数据,从而减少内存占用。此外,EasyExcel采用了观察者模式,通过AnalysisEventListener来处理每一行的解析结果。 你可以参考EasyExcel的官方文档,了解更多关于使用EasyExcel进行Excel导出的详细信息。\[2\] #### 引用[.reference_title] - *1* *2* [alibabaeasyexcel导入导出Excel处理](https://blog.csdn.net/xiyang_1990/article/details/130832480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [1.EasyExcel读写Excel的介绍](https://blog.csdn.net/weixin_46080928/article/details/120101184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值