IO-导出文件(自定义标题和头以及内容)

很久之前写好的工具类 现分享给大家使用(使用超简单)

首先上工具类代码(代码可自行调整)


    public static int DEFAULT_COLOUMN_WIDTH = 17;

    static List<String> dutyList = Arrays.asList("请假", "病假", "事假", "上班", "早退", "调休", "婚假", "缺勤");


    /**
     * @param title
     * @param ja
     * @param headMap
     */
    public static ByteArrayOutputStream exportListExport(String title, JSONArray ja, Map<String, String> headMap, Map<String, Integer> lengthMap) {
        int colWidth = 0;
        // 声明一个工作薄
        SXSSFWorkbook workbook = new SXSSFWorkbook(1000);//缓存
        workbook.setCompressTempFiles(true);
        //表头样式
        CellStyle titleStyle = workbook.createCellStyle();
        titleStyle = getCellStyle(workbook, titleStyle);
        // 列头样式
        CellStyle headerStyle = workbook.createCellStyle();
        headerStyle = getCellStyle2(workbook, headerStyle);
        // 单元格样式
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle = getCellStyle1(workbook, cellStyle);
        //带颜色的单元格样式
        CellStyle cellStyleColor = workbook.createCellStyle();
        cellStyleColor = getCellStyle4(workbook, cellStyleColor);
        // 生成一个(带标题)表格
        Sheet sheet = workbook.createSheet();
        //设置列宽
        int minBytes = colWidth < DEFAULT_COLOUMN_WIDTH ? DEFAULT_COLOUMN_WIDTH : colWidth;//至少字节数
        int[] arrColWidth = new int[headMap.size()];
        // 产生表格标题行,以及设置列宽
        String[] properties = new String[headMap.size()];
        String[] headers = new String[headMap.size()];
        int ii = 0;
        for (Iterator<String> iter = headMap.keySet().iterator(); iter.hasNext(); ) {
            String fieldName = iter.next();
            properties[ii] = fieldName;
            headers[ii] = headMap.get(fieldName);
            int bytes = 0;
            if (lengthMap != null && lengthMap.get(fieldName) != null) {
                bytes = lengthMap.get(fieldName);
            } else {
       
### 使用 EasyExcel 实现导出自定义 为了实现在 EasyExcel 中导出带有自定义的数据文件,可以按照以下方法操作: #### 1. 准备依赖项 确保项目中已经引入了 EasyExcel 的 Maven 或 Gradle 依赖。 对于 Maven 用户,在 `pom.xml` 文件中添加如下配置: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>最新版本号</version> </dependency> ``` #### 2. 创建数据模型类 创建用于存储实际业务逻辑中的对象属性映射到 Excel 列上的 Java 类。如果要设置特定列作为表,则可以在该类上标注相应的注解来指定显示名称其他样式信息[^3]。 例如,假设有一个简单的员工信息列表需要被写入 Excel 文件中,那么对应的 POJO 可能看起来像这样: ```java @Data public class Employee { /** * 姓名字段对应于 Excel 表格的第一列,并且会自动成为默认的表文字。 */ @ExcelProperty(value = "姓名", index = 0) private String name; /** 邮箱地址 */ @ExcelProperty("邮箱") private String email; } ``` #### 3. 构建并填充数据集合 准备好待写出的数据集合作为参数传递给 EasyExcel 工具类来进行批量处理前的操作。 #### 4. 编写导出服务端代码片段 下面是一个完整的例子展示如何利用上述提到的功能完成一次基本但又灵活可控的导出过程: ```java import com.alibaba.excel.EasyExcel; import java.util.ArrayList; import java.util.List; // ...其他必要的包导入语句... /** * 这里我们模拟了一个简单场景下的导出功能实现方式, */ public void exportEmployeeList(String filePath, List<Employee> employeeList){ // 设置输出路径以及模板样式等全局选项... WriteSheet writeSheet = EasyExcel.writerFile(filePath).buildWriteSheet(); try (EasyExcel.Writer writer = new EasyExcel.Writer(writeSheet)){ // 将准备好的数据源传进去即可触发真正的IO流动作啦~ writer.write(employeeList); // 如果想要进一步定制化外观效果的话还可以继续追加更多个性化设定哦!比如修改字体大小、背景色之类的视觉特性都可以通过额外的方式去达成目标。 Style style = new CellStyleStrategy(); // 自定义单元格风格策略 HeaderCellStyle headerCellStyle = new HeaderCellStyle(style); // 应用至整个部区域内的所有单元格之上 writer.setHeaderCellStyle(headerCellStyle); FooterCellStyle footerCellStyle = new FooterCellStyle(style); // 同理适用于底部页脚部分 writer.setFooterCellStyle(footerCellStyle); } } class HeaderCellStyle implements CellStyleStrategy { private final CellStyle cellStyle; public HeaderCellStyle(CellStyle cellStyle) { this.cellStyle = cellStyle; } @Override public void apply(Object object, int rowIndex, int columnIndex, Sheet sheet, Row row, Cell cell) { if (rowIndex == 0 && columnIndex >= 0) { // 对应首行即标题栏位置应用特殊格式化规则 cell.setCellStyle(cellStyle.createHeaderStyle()); } } } ``` 此段程序展示了怎样基于 EasyExcel API 设计一个较为通用的服务接口函数用来执行具体的文件生成任务;其中特别注意到了有关于“表”的一些细节控制手段——既可以通过继承抽象基类 `CellStyleStrategy` 并重载其成员方法来自由调整任意一行内各元素的表现形式,也可以借助内置工具链快速搭建起满足日常需求的基础框架结构[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值