Java EasyExcel 设置表头及内容字体大小

该篇博客介绍了如何使用Java的EasyExcel库来导出Excel文件,并详细展示了如何设置内容和头部的样式,包括字体大小、对齐方式、边框等,以便于生成美观且易读的表格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

controller

package com.gemantic.cnooc.controller;


import java.math.BigDecimal;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
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.gemantic.cnooc.model.StudentExcelDto;
import com.google.common.collect.Lists;

import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;

/**
 * @Auther: Wangtianming
 * @Date: 2021/10/27 14:35
 * @Description:
 */
@RestController
@RequestMapping(path = "/student")
@Slf4j
public class StudentExcelController {

    @PostMapping(value = "exportExcel", headers = "Accept=application/octet-stream")
    @ApiOperation(value = "导出excel", notes = "导出excel")
    public void exportExcel(HttpServletResponse response) throws Exception {

        List<StudentExcelDto> pageList = Lists.newArrayList();
        StudentExcelDto a = new StudentExcelDto();
        a.setId(1l);
        a.setStudentName("小王");
        a.setStudentClass("五年纪");
        a.setAddress("北京小学");
        a.setAdmissionDate(new Date());
        a.setScore(new BigDecimal(100));
        a.setGender(1);
        pageList.add(a);
        pageList.forEach(b -> {
            if (a.getGender() == 1) {
                a.setGenderName("男");
            } else {
                a.setGenderName("女");
            }
        });

        //内容样式策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        //垂直居中,水平居中
        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);
        // 字体策略
        WriteFont contentWriteFont = new WriteFont();
        // 字体大小
        contentWriteFont.setFontHeightInPoints((short) 12);
        contentWriteCellStyle.setWriteFont(contentWriteFont);
        //头策略使用默认 设置字体大小
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short) 12);
        headWriteCellStyle.setWriteFont(headWriteFont);
        // 导出Excel
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("班级信息", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        ExcelWriter writer = EasyExcel.write(response.getOutputStream())
                .registerWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle))
                .build();
        WriteSheet sheet = EasyExcel.writerSheet(0, "sheet").head(StudentExcelDto.class).build();
        writer.write(pageList, sheet);
        writer.finish();
    }

}

设置字体大小

 //内容样式策略
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        //垂直居中,水平居中
        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);
        // 字体策略
        WriteFont contentWriteFont = new WriteFont();
        // 字体大小
        contentWriteFont.setFontHeightInPoints((short) 12);
        contentWriteCellStyle.setWriteFont(contentWriteFont);
        //头策略使用默认 设置字体大小
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short) 12);
        headWriteCellStyle.setWriteFont(headWriteFont);
ExcelWriter writer = EasyExcel.write(response.getOutputStream())
                .registerWriteHandler(new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle))
                .build();

可参考:

Java EasyExcel 导出

导出结果

在这里插入图片描述

EasyExcel 是一款基于 Java 的轻量级开源框架,用于快速导入导出 Excel 文件。通过 EasyExcel,你可以方便地实现各种 Excel 操作,并自定义样式、包括表头的颜色、大小、字体等。 设置表头字体颜色的基本步骤如下: 1. **引入依赖**: 确保你的项目中已经包含了 EasyExcel 相关的 Maven 或者 Gradle 依赖库。如果尚未添加,可以参考官方文档来添加对应的依赖项。 2. **创建读写配置类**: 需要创建一个用于处理表格数据的类,在该类中定义需要展示的数据结构以及如何展示数据。 3. **应用样式的注解**: 使用 @Style 注解来指定单元格的样式信息。例如,为了设置字体颜色为红色,可以这么做: ```java @ColumnWidth(8) @ExportCellData(style = @Style(fontColor = Color.RED)) String columnOne; ``` 其中 `Color.RED` 是一个预定义的颜色值,代表红色。你可以使用其他预定义的颜色值或者自定义 RGB 值。 4. **实际操作示例**: 以下是一个简单的使用示例,展示了如何将设置了红色字体颜色的文本内容输出到 Excel 中: ```java import com.alibaba.excel.EasyExcel; public class ExcelDemo { public static void main(String[] args) { // 写入数据的文件路径 String fileName = "test.xlsx"; try (OutputStream out = new FileOutputStream(fileName)) { // 设置写入时的表格标题样式,包含字体颜色 Style titleStyle = new Style(); titleStyle.setFontColor(Color.RED); EasyExcel.write(out).registBeanWriter(Integer.class, IntegerWriter::new) .registerWriteHandler(new ColumnTitleHandler(titleStyle))// 注册标题样式 .sheet("SheetName") // 设置工作表名 .doWrite(List.of(1, 2, 3)); // 测试数据 } catch (IOException e) { e.printStackTrace(); } } static class IntegerWriter implements SheetDataWriter<Integer> { private final List<Integer> data; public IntegerWriter(List<Integer> data) { this.data = data; } @Override public void doWrite(List<List<Object>> listObjects) throws Exception { for (int i = 0; i < data.size(); i++) { listObjects.add(i, Arrays.asList(data.get(i))); } } } } ``` 5. **运行程序并检查结果**: 运行上述程序生成 Excel 文件后,打开查看表头字体是否如预期变为红色。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值