pom
<dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-web</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-annotation</artifactId> <version>3.2.0</version> </dependency>
import cn.afterturn.easypoi.excel.annotation.ExcelCollection; import com.huitian.mine.domain.SurveyDetailComplete; import lombok.Data; import cn.afterturn.easypoi.excel.annotation.Excel; import java.io.Serializable; import java.util.List; @Data public class ExportTemplateExcelOne implements Serializable { private static final long serialVersionUID = 1L; @Excel(name = "序号",needMerge = true,width = 20) private String id; @Excel(name = "统一编号",needMerge = true,width = 20) private String mineNumber; @Excel(name = "历史遗留矿山名称",needMerge = true,width = 20) private String mineName; //@Excel(name = "遥感图斑编号",needMerge = true) private String remoteSensingSpotNumber; @Excel(name = "主要开采矿种",needMerge = true,width = 20) private String mineType; @Excel(name = "开采方式",needMerge = true,width = 20) private String miningWay; @Excel(name = "废弃原因",needMerge = true,width = 20) private String abandonReason; @Excel(name = "矿山地址",needMerge = true,width = 20) private String villageTown; @Excel(name = "经度",needMerge = true,width = 20) private String centerPositionLongitude; @Excel(name = "纬度",needMerge = true,width = 20) private String centerPositionLatitude; @ExcelCollection(name = "") private List<SurveyDetailComplete> surveyDetailCompleteList; }
import cn.afterturn.easypoi.excel.annotation.Excel;
@Data public class SurveyDetailComplete { /**系统生成ID*/ @TableId(type = IdType.ID_WORKER_STR) private String id; /**矿山ID*/ //@Excel(name = "矿山ID", width = 15) private String mineId; /**图斑号*/ @Excel(name = "图斑号", width = 25) private String remoteSensingSpotNumber; /**修复方式及面积-自然修复*/ @Excel(name = "修复方式及面积-自然修复", width = 15) private String naturalRepair; /**修复方式及面积-人工修复*/ @Excel(name = "修复方式及面积-人工修复", width = 15) private String artificialRepairArea; /**修复方式及面积-投入资金(万元)*/ @Excel(name = "修复方式及面积-投入资金(万元)", width = 15) private String investedCapital; /**修复土地资源-耕地*/ @Excel(name = "修复土地资源-耕地", width = 15) private String arableLand; /**修复土地资源-种植园用地*/ @Excel(name = "修复土地资源-种植园用地", width = 15) private String plantationLand; /**修复土地资源-林地*/ @Excel(name = "修复土地资源-林地", width = 15) private String woodLand; /**修复土地资源-草地*/ @Excel(name = "修复土地资源-草地", width = 15) private String grassLand; /**修复土地资源-建设用地*/ @Excel(name = "修复土地资源-建设用地", width = 15) private String constructionLand; /**修复土地资源-其他用地*/ @Excel(name = "修复土地资源-其他用地", width = 15) private String otherLand; /**修复土地资源-小计*/ @Excel(name = "修复土地资源-小计", width = 15) private String landSubtotal; }
@RequestMapping(value = "/complete", method = RequestMethod.POST) public Result exportXlsComplete(@RequestParam(name = "selectRegionCode", defaultValue = "") String selectRegionCode, @RequestParam(name = "selectRegionType", defaultValue = "") String selectRegionType, HttpServletResponse response) throws Exception { Map<String, Object> paramsMap = this.getRegionCodeAndFileName(selectRegionCode, selectRegionType); //查询一对多数据 List<ExportTemplateExcelOne> list = exportExcelMapper.exportExcelOne(String.valueOf(paramsMap.get("selectRegionCode"))); // 简单模板导出方法 cn.afterturn.easypoi.excel.entity.ExportParams params = new cn.afterturn.easypoi.excel.entity.ExportParams(); params.setTitle("历史遗留矿山调查基本情况表(已治理的)");//设置表头 params.setSheetName("已治理(含自然修复)");//设置sheet名 Workbook workbook = ExcelExportUtil.exportExcel(params, ExportTemplateExcelOne.class, list); this.setExportExcelFormat(response, workbook, "历史遗留矿山调查基本情况表(已治理的)"); return new Result().ok(); }
/**
* 响应数据
* @param response
* @param workbook
* @param fileName
* @throws Exception
*/
public void setExportExcelFormat(HttpServletResponse response, Workbook workbook, String fileName) throws Exception {
response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes(), "ISO8859-1"));
response.setHeader("Pargam", "no-cache");
response.setHeader("Cache-Control", "no-cache");
ServletOutputStream outStream = null;
try {
outStream = response.getOutputStream();
workbook.write(outStream);
} finally {
outStream.flush();
outStream.close();
}
}
List<ExportTemplateExcelOne> exportExcelOne(@Param("regionCode") String regionCode);
<resultMap id="completeBean" type="com.xxxxx.mine.domain.vo.ExportTemplateExcelOne"> <id column="id" property="id"></id> <result column="mine_number" property="mineNumber"></result> <result column="mine_name" property="mineName"></result> <result column="remote_sensing_spot_number" property="remoteSensingSpotNumber"></result> <result column="mine_type" property="mineType"></result> <result column="mining_way" property="miningWay"></result> <result column="abandon_reason" property="abandonReason"></result> <result column="village_town" property="villageTown"></result> <result column="center_position_longitude" property="centerPositionLongitude"></result> <result column="center_position_latitude" property="centerPositionLatitude"></result> <collection property="surveyDetailCompleteList" ofType="com.xxxx.mine.domain.SurveyDetailComplete"> <id column="cid" property="id"></id> <result column="mine_id" property="mineId"></result> <result column="natural_repair" property="naturalRepair"></result> <result column="artificial_repair_area" property="artificialRepairArea"></result> <result column="invested_capital" property="investedCapital"></result> <result column="arable_land" property="arableLand"></result> <result column="plantation_land" property="plantationLand"></result> <result column="wood_land" property="woodLand"></result> <result column="grass_land" property="grassLand"></result> <result column="construction_land" property="constructionLand"></result> <result column="other_land" property="otherLand"></result> <result column="land_subtotal" property="landSubtotal"></result> <result column="spotNumber" property="remoteSensingSpotNumber"></result> </collection> </resultMap> <select id="exportExcelOne" parameterType="java.lang.String" resultMap="completeBean"> select t.* ,tc.id cid, tc.*,tc.remote_sensing_spot_number spotNumber FROM t_o_mines_data t LEFT JOIN t_o_survey_detail_complete tc ON t.id=tc.mine_id WHERE t.sys_org_code <if test="regionCode.length()==2"> like CONCAT(#{regionCode},'%') </if> <if test="regionCode.length()==4"> like CONCAT(#{regionCode},'%') </if> <if test="regionCode.length()==6"> = #{regionCode} </if> and del_flag='0' order by t.id asc; </select>
vue 前端
fileSaver.saveAs(response.data, '附表1-云南省历史遗留矿山调查基本情况表(已治理的).xls', true)
导出效果