easypoi动态列导出并设置表头样式

public class ExportEasyDemo {

    @Test
    public void test(){
        List<String> dyncCols = Arrays.asList("列1","列2","列3","列4");
        //列数组
        List<ExcelExportEntity> colList = new ArrayList<>();
        ExcelExportEntity nameEntity = new ExcelExportEntity("名称", "name", 20);
        nameEntity.setWrap(true);
        colList.add(nameEntity);
        //动态列设置:name(excel中导出的列名)、key(数据对应的属性名)
        //new ExcelExportEntity(name, key)
        dyncCols.forEach(col-> colList.add(new ExcelExportEntity(col, col)));
        List<LinkedHashMap<String, String>> result = setTestData(dyncCols);
        try {
            Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), colList, result);
            //设置表头样式
            //setHeaderStyle(workbook);
            FileOutputStream fos = new FileOutputStream("H:/测试导出结果集.xlsx");
            workbook.write(fos);
            fos.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

	//设置测试数据
    private List<LinkedHashMap<String, String>> setTestData(List<String> dyncCols){
        List<LinkedHashMap<String, String>> result = new ArrayList<>();
        for (int i = 1; i <= 10; i++) {
            LinkedHashMap<String, String> map = new LinkedHashMap<>();
            map.put("name","测试name" + i);
            int finalI = i;
            dyncCols.forEach(col-> map.put(col, col + "数据" + finalI));
            result.add(map);
        }
        return result;
    }
	
	//设置表头样式
	private void setHeaderStyle(Workbook workbook) {
        // 获取工作簿的第一个工作表
        Sheet sheet = workbook.getSheetAt(0);
        // 创建表头样式
        CellStyle headerStyle = workbook.createCellStyle();
        // 设置字体加粗
        Font headerFont = workbook.createFont();
        headerFont.setBold(true);
        headerStyle.setFont(headerFont);
        // 设置背景色为灰色
        headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
        headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        //自动换行
        headerStyle.setWrapText(true);
        headerStyle.setAlignment(HorizontalAlignment.CENTER);
        headerStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        // 设置表头高度
        sheet.getRow(0).setHeightInPoints(20);
        // 应用样式到所有表头单元格
        for (Cell cell : sheet.getRow(0)) {
            cell.setCellStyle(headerStyle);
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值