@Excel注解如下:按需处理
属性 | 类型 | 用途 | 示例 |
---|---|---|---|
name | String | 定义Excel列的名称,用于Excel表头。 | @Excel(name = “学生姓名”) |
width | double | 定义列宽度,单位为字符。 | @Excel(width = 20) |
height | double | 定义行高,单位为磅。仅对导出有效。 | @Excel(height = 10) |
orderNum | String | 定义列的显示顺序。 | @Excel(orderNum = “1”) |
needMerge | boolean | 表示是否需要合并单元格。 | @Excel(needMerge = true) |
mergeVertical | boolean | 表示是否纵向合并单元格。 | @Excel(mergeVertical = true) |
mergeRely | int[] | 指定合并单元格时依赖的列,数组中的数字为列的索引。 | @Excel(mergeRely = {1}) |
isImportField | String | 定义是否为导入字段,“true"或"false”。 | @Excel(isImportField = “true”) |
isWrap | boolean | 定义是否自动换行。 | @Excel(isWrap = true) |
exportFormat | String | 定义导出时的格式化模式,如日期格式。 | @Excel(exportFormat = “yyyy-MM-dd”) |
importFormat | String | 定义导入时的格式化模式。 | @Excel(importFormat = “yyyy-MM-dd”) |
imageType | int | 定义图片类型(如1表示从文件导入,2表示从数据库导入)。 | @Excel(imageType = 1) |
suffix | String | 定义文本后缀,如在文本后添加特定的后缀。 | @Excel(suffix = “%”) |
type | int | 定义字段类型(如1表示文本,2表示图片)。 | @Excel(type = 1) |
enumExportField | String | 定义枚举导出时,调用枚举字段的哪个方法获取实际的值。 | @Excel(enumExportField = “getText”) |
savePath | String | 定义图片保存路径,仅对导入有效。 | @Excel(savePath = “/tmp”) |
dateFormat | String | 简化的日期格式设置,简化的exportFormat/importFormat。 | @Excel(dateFormat = “yyyy-MM-dd”) |
use1904windowing | boolean | 定义是否使用1904年日期窗口。 | @Excel(use1904windowing = true) |
fixedIndex | int | 指定Excel列的索引,从0开始,用于导入时准确匹配列位置。 | @Excel(fixedIndex = 0) |
groupName | String | 用于分组导出/导入时定义的组名。 | @Excel(groupName = “group1”) |
dict | String | 用于指定数据字典,将数据转换为对应的文本值。 | @Excel(dict = “sex=1_男,2_女”) |
replace | String[] | 定义要替换的值,用于导出时将字段值替换为指定的文本值。 | @Excel(replace = {“男_1”, “女_2”}) |
statistics | boolean | 定义是否进行统计,用于对数字字段进行求和统计。 | @Excel(statistics = true) |
显示:平铺
2.多对一(多个属性在一个对象中封装):@ExcelEntity
显示:嵌套
3.一对多:@ExcelCollection
显示:列表
!避雷:听话的孩子不会被恶心
!!!字段中有一对多(@ExcelCollection
)和一对一(@Excel)时候,一对一必须合并单元格!!!
否则如图:
!!!多对一时(@ExcelEntity)必须加字段,否则无法正常显示
代码如下:
@Data
public class ExportAchievement {
/\*\*
\* 主键ID
\*/
@TableId
@Excel(name = "ID", width = 10, needMerge = true)
private Long id;
/\*\*
\* 成果单位
\*/
@Excel(name = "成果单位", width = 30, needMerge = true)
private String achievementUnit;
/\*\*
\* 成果名称
\*/
@Excel(name = "成果名称", width = 30, needMerge = true)
private String achievementName;
/\*\*
\* 所属区域
\*/
@Excel(name = "所属区域", width = 30, needMerge = true)
private String region;
/\*\*
\* 细分领域
\*/
@Excel(name = "细分领域", width = 30, needMerge = true)
private String subArea;
/\*\*
\* 所属领域
\*/
@Excel(name = "所属领域", width = 30, needMerge = true)
private String domain;
/\*\*
\* 成果形式
\*/
@Excel(name = "成果形式", width = 30, needMerge = true)
private String form;
/\*\*
\* 转化内容
\*/
@Excel(name = "转化内容", width = 100, needMerge = true)
private String transformationContent;
/\*\*
\* 成果负责人
\*/
@Excel(name = "成果负责人", width = 10, needMerge = true)
private String leader;
/\*\*
\* 联系方式
\*/
@Excel(name = "联系方式", width = 30, needMerge = true)
private String contact;
/\*\*
\* 联系人
\*/
@Excel(name = "联系人", width = 10, needMerge = true)
private String contactName;
/\*\*
\* 第二联系方式
\*/
@Excel(name = "第二联系方式", width = 30, needMerge = true)
private String secondContact;
@ExcelCollection(name = "推荐需求")
private List<ExportRecommendDict> recommendDictList;
}
@Data
public class ExportDemand {
/\*\*
\* 主键ID
\*/
@TableId
@Excel(name = "ID", width = 10, needMerge = true, orderNum="0")
private Long id;
@ExcelEntity(name = "进企入校调研", show = true)
private EnterpriseInfoEntity enterpriseInvestSchool;
@ExcelEntity(name = "技术需求", show = true)
private TechniqueDemandEntity techniqueDemand;
@ExcelEntity(name = "技术人员需求", show = true)
private TechPersonEntity techPersonEntity;
@ExcelEntity(name = "服务需求", show = true)
private ServiceDemandEntity serviceDemand;
@ExcelEntity(name = "创新成果", show = true)
private InnovationProductEntity innovationProduct;
/\*\*
\* 需求标题
\*/
@Excel(name = "需求标题", width = 10, needMerge = true,orderNum="6")
private String demandTitle;
/\*\*
\* 领域指数JSON化
\*/
@TableField(exist = false)
@Excel(name = "领域指数", width = 10, needMerge = true,orderNum="7")
private String regionNumJson;
@ExcelCollection(name = "推荐成果",orderNum="8")
private List<ExportRecommendDict> recommendDictList;
}
4.service层
调用mapper基本方法进行数据库增删改查
@Override
public List<ExportDemand> getDemandlist() {
//查询enterprise\_demand表
List<EnterpriseDemandEntity> enterpriseDemands = enterpriseDemandDao.selectList(null);
List<ExportDemand> exportDemands = new ArrayList<>();
for (EnterpriseDemandEntity enterpriseDemand : enterpriseDemands) {
ExportDemand exportDemand = new ExportDemand();
// 设置主键ID和需求标题
exportDemand.setId(enterpriseDemand.getId());
EnterpriseInfoEntity enterpriseInfoEntity = enterpriseInfoDao.selectById(enterpriseDemand.getEnterpriseId());
TechPersonEntity techPersonEntity = techPersonDao.selectById(enterpriseDemand.getTechPersonId());
TechniqueDemandEntity techniqueDemandEntity = techniqueDemandDao.selectById(enterpriseDemand.getTechniqueDemandId());
InnovationProductEntity innovationProductEntity = innovationProductDao.selectById(enterpriseDemand.getInnovationProductId());
ServiceDemandEntity serviceDemandEntity = serviceDemandDao.selectById(enterpriseDemand.getServiceDemandId());
exportDemand.setEnterpriseInvestSchool(enterpriseInfoEntity);
exportDemand.setTechPersonEntity(techPersonEntity);
exportDemand.setTechniqueDemand(techniqueDemandEntity);
exportDemand.setInnovationProduct(innovationProductEntity);
exportDemand.setServiceDemand(serviceDemandEntity);
exportDemand.setRegionNumJson(Arrays.toString(enterpriseDemand.getRegionNumJson()));
exportDemand.setDemandTitle(enterpriseDemand.getDemandTitle());
exportDemand.setRecommendDictList(getExportAchievementByDemandId(exportDemand.getId()));
// 然后将每个ExportDemand对象添加到列表中
exportDemands.add(exportDemand);
}
return exportDemands;
}
5.controller层
/\*\*
\* @param response
\*/
@GetMapping(value = "/exportDemandList")
public void exportDemandList(HttpServletResponse response) {
List<ExportDemand> list = collegeAppliedPropertyService.getDemandlist();
// 使用工具类导出excel
try {
ExcelUtil.exportExcel(list, "需求", "需求", ExportDemand.class, "需求信息推荐表.xlsx", response);
} catch (Exception e) {
e.printStackTrace();
}
}
6.mind层
“选择就不要后悔,努力就不会害怕”
我一直相信你从来都不是笨小孩
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
e4e9.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)