【知识分享】easyExcel导出表格调整表格样式

easyExcel作为开发人员常用的导出导出的工具,会遇到导出的单元格需要加边框、调整字体大小等需求,下面直接上代码。

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
import com.alibaba.excel.write.merge.AbstractMergeStrategy;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.fill.FillConfig;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import org.apache.catalina.connector.Response;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.example.demo2.DemoData;
import org.springframework.util.StringUtils;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class EasyExcelMergeDemo {

    public static void main(String[] args) {
        // 准备数据
        List<DemoData1> data = getData();

        // 设置输出文件路径和名称
        String fileName = "example.xlsx";
        ExcelWriter excelWriter =null;
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = setConfigure();
        //设置请求信息(获取HttpServletResponse,可通过HttpServletResponse给导出数据命名)
        excelWriter = EasyExcel.write("测试.xlsx").build();
//        excelWriter = EasyExcelFactory.getWriter(response.getOutputStream());

        WriteSheet writeSheet =EasyExcel.writerSheet(0,"测试.xlsx").registerWriteHandler(horizontalCellStyleStrategy).build();


        // 创建 ExcelWriter 对象
//        ExcelWriterBuilder writerBuilder = EasyExcel.write(fileName).registerWriteHandler(horizontalCellStyleStrategy);
//        ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet("Sheet1");


        //创建头
        WriteTable table = new WriteTable();
        List<String> tableFirst =new ArrayList<>();
        List<String> tableSecond =new ArrayList<>();
        tableFirst.add("测试表头1");
        tableFirst.add("测试表头1");
        tableSecond.add("第二表头1");
        tableSecond.add("第二表头2");

        List<List<String>> headList = new ArrayList<List<String>>();
        if (tableFirst != null && tableFirst.size() > 0) {
            int size = tableFirst.size();
            for (int i = 0; i < size; i++) {
                List<String> headTitle = new ArrayList<String>();
                for (int j = 0; j < tableFirst.size(); j++) {
                    if (j == i) {
                        headTitle.add(tableFirst.get(j));
                        break;
                    }
                }
                if (tableSecond != null && tableSecond.size() > 0) {
                    for (int k = 0; k < tableSecond.size(); k++) {
                        if (k == i) {
                            headTitle.add(tableSecond.get(k));
                            break;
                        }
                    }
                    headList.add(headTitle);
                }
            }
        }
        table.setHead(headList);
        // 写入数据

        excelWriter.write(data,writeSheet,table);
        excelWriter.finish();
//        sheetBuilder.doWrite(data);
        // 输出完成提示
        System.out.println("Excel 导出完成!");
    }
    //配置字体,表头背景等
    private static HorizontalCellStyleStrategy setConfigure() {
        // 头的策略
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        // 背景色
        headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short) 13);
        headWriteCellStyle.setWriteFont(headWriteFont);
        headWriteCellStyle.setWrapped(false);

        // 内容的策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        // 字体策略
        WriteFont contentWriteFont = new WriteFont();
        // 字体大小
        contentWriteFont.setFontHeightInPoints((short) 10);
        contentWriteFont.setColor(IndexedColors.RED.getIndex());
        contentWriteCellStyle.setWriteFont(contentWriteFont);
        //边框
        //导出数据垂直居中
        contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        //导出数据水平居中
        contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
        contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
        contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
        contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
        contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);

        //设置 自动换行
        contentWriteCellStyle.setWrapped(true);
        //设置
        // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
        return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
    }

    private static List<DemoData1> getData() {
        List<DemoData1> data = new ArrayList<>();
        // 添加示例数据
        data.add(new DemoData1("张三", 20));
        data.add(new DemoData1("李四", 25));
        data.add(new DemoData1("王五", 30));
        return data;
    }
}

class DemoData1 {
    private String name;
    private Integer age;

    public DemoData1(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
EasyExcel是一个用于导出复杂表格的工具。它的优势在于可以通过模板导出符合项目使用习惯的表格,并且支持大数据量导出,性能较好。相比于其他导出方式,如poi方式,EasyExcel可以大大提高开发效率并简化代码。 使用EasyExcel导出复杂表格的步骤如下: 1. 首先,你需要定义一个符合要求的导出模板,模板可以包含合并行列、统计汇总等复杂的表格样式和功能。 2. 然后,你需要在代码中使用EasyExcel提供的API来实现导出功能。根据你的需求,你可以在模板中填充数据、设置样式、合并单元格等操作。 3. 最后,你可以将生成的表格保存到指定的位置,或者直接输出给用户。 EasyExcel还提供了详细的文档和示例代码,你可以参考官方网站(https://easyexcel.opensource.alibaba.com/docs/current/)获取更多使用方法和实例。通过使用EasyExcel,你可以轻松地实现复杂表格导出功能,并满足业务的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [easyexcel复杂模板导出(合并行列,列统计汇总)](https://blog.csdn.net/weixin_39172079/article/details/129500460)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [java基于模板导出Excel表格](https://download.csdn.net/download/Silenchen11/86517315)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加瓦程序设计师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值