首页 > 其他分享 >Excel导出

Excel导出

时间:2023-12-23 17:32:55浏览次数:32  
标签:String Excel 导出 private ApiModelProperty mv

Excel导出——POI

本次工具类的封装主要依赖于阿里巴巴的 JSON 包,以及表格处理的 POI 包,所以我们需要导入这两个库的依赖包,另外,我们还需要文件上传的相关包,毕竟我们在浏览器页面,做Excel 导入时,是上传的 Excel 文件。

详细内容参考:https://blog.csdn.net/sunnyzyq/article/details/121994504

Excel导出——EasyExcel

老项目主要采用的POI框架来进行Excel数据的导入和导出,但经常会出现OOM的情况,导致整个服务不可用。后续逐步转移到 EasyExcel,简直不能太好用了。

EasyExcel是阿里巴巴开源插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。

详细内容参考:https://juejin.cn/post/7126677222034767886

其它

https://juejin.cn/post/6844903779167535117

碳排放单车明细-数据导出

  • 接口
@ApiOperation(value = "碳排放单车明细-数据导出", notes = "碳排放单车明细-数据导出")
@GetMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, SingleBusDetailExcelDto singleBusDetailDto) {
    SingleBusDetailSearchDto singleBusDetailSearchDto = new SingleBusDetailSearchDto();
    BeanUtils.copyProperties(singleBusDetailDto, singleBusDetailSearchDto);
    List<BusSingleEmissionVo> li =  singleBusDetailsService.getListByConditions(singleBusDetailSearchDto);
    return excelUtil.exportXls(li,BusSingleEmissionVo.class,"碳排放单车明细数据", singleBusDetailDto.getExportFields());
}
  • 实体
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(description = "碳排放单车查询导出参数")
public class SingleBusDetailExcelDto extends SingleBusDetailSearchDto {

    @ApiModelProperty("导出字段集")
    private String exportFields;
}
@Data
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(description = "碳排放单车明细查询参数")
public class SingleBusDetailSearchDto {

    @ApiModelProperty("车辆vin码")
    private String vin;

    @ApiModelProperty("分公司")
    private String branchCompany;

    @ApiModelProperty("车队")
    private String busTeam;

    @ApiModelProperty("生产厂家")
    private String oemName;

    @ApiModelProperty("开始时间")
    private String startTime;

    @ApiModelProperty("结束时间")
    private String endTime;

}
  • sql
<select id="getListByConditions" resultType="com.ewsmp.module.carbonasset.vo.BusSingleEmissionVo">
    select vin, data_time dataTime,
           carbon_emission_day carbonEmissionDay, carbon_reduction_day carbonReductionDay,
           carbon_emission_online carbonEmissionOnline, carbon_reduction_online carbonReductionOnline,
           oem_name oemName, bus_team busTeam, branch_company branchCompany
    from carbonasset_bus_single_emission
    <where>
        <if test="vin!=null and vin!=''"> and vin = #{vin}</if>
        <if test="branchCompany!=null and branchCompany!=''"> and branch_company like concat('%', #{branchCompany}, '%')</if>
        <if test="busTeam != null and busTeam !=''"> AND bus_team = #{busTeam}</if>
        <if test="oemName!=null and oemName!=''"> and oem_name like concat('%', #{oemName}, '%')</if>

        <if test="startTime != null and startTime !=''">AND data_time &gt;=toDate(#{startTime})</if>
        <if test="endTime != null and endTime !=''">AND data_time &lt;=toDate(#{endTime})</if>
    </where>
    ORDER BY data_time DESC
</select>
  • 导出工具类
@Component
@Slf4j
public class ExcelUtil<T> {

    /**
     * 导出excle:支持选择导出指定字段
     *
     * @param exportList   要导出的数据
     * @param clazz        要导出的实体类
     * @param title        要导出的标题
     * @param exportFields 要导出的字段集合:已逗号分隔
     * @return
     */
    public ModelAndView exportXls(List<T> exportList, Class<T> clazz, String title, String exportFields) {

        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String realname = sysUser != null ? sysUser.getRealname() : "";

        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject("fileName", title);
        mv.addObject("entity", clazz);
        if (StringUtils.isNotEmpty(exportFields)) {
            log.info("导出excle字段:{}", exportFields);
            mv.addObject(NormalExcelConstants.EXPORT_FIELDS, exportFields);
        }

        ExportParams exportParams = new ExportParams(title + "报表", "导出人:" + realname, title);
        mv.addObject("params", exportParams);
        mv.addObject("data", exportList);
        return mv;
    }
}

前端导出 Excel 的方式

这本来是后端的工作,前端只需要一个 a 标签,就可以下载文件,但不巧的是,正好遇到后端请假,而且项目比较着急,那么前端是否可以实现呢?

可以。

实现方式:

  • react-csv
  • xlsx 进入 xlsx 官网,官网称为 SheetJS,它支持浏览器、nodejs、deno、和 react-native,浏览器兼容 ie10+。

参考:https://juejin.cn/post/7114234898461753381

标签:String,Excel,导出,private,ApiModelProperty,mv
From: https://blog.51cto.com/u_15473389/8945571

相关文章

  • Excel: Python 如何干掉 VBA 系列 丙
    以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/FgoU8CxofwY90f3IX2Tpww获取网络动态数据本文开始之前夸过海口,说要演示一下喂养家畜的饲料动态成本,其实由于行业数据具有一定的商业属性,调用这类接口费钱,所以不打算展开了。......
  • Net 按照列名的自定义顺序导出Excel
    第一步定义导出Excel的表头一个特性,继承自Attribute,包含列头的名字和列的顺序publicclassExportHeaderAttribute:Attribute{publicExportHeaderAttribute(stringname):this(name,-1){}publicExportHeaderAttribute(stringname,shortorder){......
  • java接口自动化测试实战002----测试数据封装及ExcelUtil优化
    一、利用testNG测试框架进行封装1、封装实现新建测试类,类中新增多个方法,每个方法存储一条测试数据并调用HttpUtl类中的doGet或doPost方法。缺点:代码复杂、繁琐,且不适用测试数据量大的情况。2、封装步骤(1)maven的pom.xml文件中添加testNG测试框架的依赖,如下所示:<!--https://......
  • oracle 增量导入导出参考链接
    https://www.cnblogs.com/hsz1124/p/11648109.htmlhttps://blog.csdn.net/valkyrja110/article/details/121215821https://blog.csdn.net/csdnss1111/article/details/100321510https://blog.csdn.net/csdnss1111/article/details/100321510https://zhuanlan.zhihu.com/p/......
  • 将excel数据导入到SQL server数据库的详细过程
    原文链接:https://www.xjx100.cn/news/415146.html?action=onClick1.将要导入的excel表格数据如下,第一行数据默认为数据库表中的字段,所以这个必须要有,否则无法映射导入。如下图(只截部分数据) 2.打开MicrosoftSQLServerManagementStudio17数据库管理软件,选中要导入的mydb数......
  • pandas to_excel 添加一个新的工作表到存在的excel文件中
    EverytimeyouwanttosaveaPandasDataFrametoanExcel,youmaycallthisfunction:importosdefsave_excel_sheet(df,filepath,sheetname,index=False):#Createfileifitdoesnotexistifnotos.path.exists(filepath):df.to_excel(......
  • [问题记录] C# 使用NPOI操作Excel模版写入数据 - 生成文件打开时提示 "发现 XXX.xlsx
    解决方案:1.先确保原来的模版文件打开是正常的,没有提示要恢复2.用Office打开这个模版文件,另存为一个文件。用这个文件来作为模版使用。 问题描述:使用C#NPOI操作Excel模版(模版用office打开是正常的),写入数据,导出的文件打开时提示是否尝试恢复,点击“是”后,发现Excel内......
  • Excel导入导出
    POI--------》Workbook接口HSSFWorkbook:这个实现类是我们早期使用最多的对象,它可以操作Excel2003以前(包含2003)的所有Excel版本。在2003以前Excel的版本后缀还是.xlsXSSFWorkbook:这个实现类现在在很多公司都可以发现还在使用,它是操作的Excel2003--Excel2007......
  • Excel-做抽奖、报告分组
    还在为了公司抽奖、报告分组做籤筒吗?来试试看Excel的随机函数吧Randbetween(最小值,最大值):从最小值和最大值的范围内产生一个整数Choose(序号,可供选择的选项):根据序号选择对应选项Rand():产生0到1的随机数Roundup(数值,位数):无条件进位函数例子:=INDEX(C3:C14,RANDBETWEEN(......
  • Excel-表格有重复资料该怎麽办?
    1.标注重复信息框选单元格——开始——条件格式——突出显示单元格规则——重复值——确定框选单元格——开始——条件格式——新建规则——使用公式确定要设置格式的单元格——输入公式——修改后一参数值为相对参照——格式——填充——选择颜色——确定注:公式例子:=countif($E$......