首页 > 其他分享 >生成excel文件(有备注和表头的情况)

生成excel文件(有备注和表头的情况)

时间:2024-12-27 10:59:23浏览次数:3  
标签:String Excel EasyExcel ExcelProperty excel private 表头 import 备注

要使用 Java 导出 Excel 文件,并且通过 @ExcelProperty 注解进行列的映射,可以利用 EasyExcel 库。EasyExcel 是阿里巴巴开源的一款高性能 Excel 读写工具,它支持通过注解将类与 Excel 的列进行映射,简化了 Excel 操作的复杂性。

前提准备

  • 添加 EasyExcel 依赖到 pom.xml 文件中:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.0</version> <!-- 请根据需要选择合适的版本 -->
</dependency>

Excel 导出实现

  1. 定义导出数据的 Java 类 首先,需要定义一个类来映射 Excel 表格中的每一列。
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.WriteStyle;

import java.io.Serializable;

public class EmployeeExcel implements Serializable {

    // 第一行备注信息
    @ExcelProperty("工号")
    private String employeeId;  // 工号(6位文本)

    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("操作类型")
    private String operationType;

    @ExcelProperty("部门全称")
    private String departmentName;

    @ExcelProperty("汇报上级")
    private String supervisor;

    @ExcelProperty("工作城市")
    private String workCity;

    @ExcelProperty("社保城市")
    private String socialSecurityCity;

    @ExcelProperty("职位全称")
    private String positionTitle;

    @ExcelProperty("HC编码")
    private String hcCode;

    @ExcelProperty("群组")
    private String group;

    @ExcelProperty("一级部门")
    private String firstLevelDepartment;

    @ExcelProperty("二级部门")
    private String secondLevelDepartment;

    @ExcelProperty("三级部门")
    private String thirdLevelDepartment;

    @ExcelProperty("四级部门")
    private String fourthLevelDepartment;

    @ExcelProperty("五级部门")
    private String fifthLevelDepartment;

    @ExcelProperty("六级部门")
    private String sixthLevelDepartment;

    @ExcelProperty("七级部门")
    private String seventhLevelDepartment;

    @ExcelProperty("汇报上级工号")
    private String supervisorEmployeeId;

    @ExcelProperty("汇报上级姓名")
    private String supervisorName;

    @ExcelProperty("工作城市")
    private String workCity2;  // 注意列名可以重复,需要做区分

    @ExcelProperty("社保城市(无需填写)")
    private String socialSecurityCity2;

    @ExcelProperty("岗位ID编号")
    private String positionId;

    @ExcelProperty("是否带编调整")
    private String isAdjustment;

    @ExcelProperty("HC编码(非带编调整则该项是必填)")
    private String hcCodeForAdjustment;

    @ExcelProperty("校验未通过原因")
    private String validationFailureReason;

    // Getter and Setter methods
    public String getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(String employeeId) {
        this.employeeId = employeeId;
    }

    // 其他字段的 Getter 和 Setter 方法

}
  1. 使用 EasyExcel 导出数据 然后,可以利用 EasyExcel 库来导出数据。接下来是 Excel 导出的核心代码。
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.style.AbstractCellStyleStrategy;
import com.alibaba.excel.write.style.FillPatternType;
import com.alibaba.excel.write.style.HorizontalAlignmentStyleStrategy;
import org.apache.poi.ss.usermodel.*;

import java.util.ArrayList;
import java.util.List;

public class ExcelExportExample {

    public static void main(String[] args) {
        // 数据列表
        List<EmployeeExcel> employeeExcelList = new ArrayList<>();
        
        // 模拟添加数据
        EmployeeExcel employee = new EmployeeExcel();
        employee.setEmployeeId("123456");
        employee.setName("张三");
        employee.setOperationType("新增");
        // 填充其他字段...
        
        employeeExcelList.add(employee);

        // 导出 Excel 文件
        exportExcel(employeeExcelList);
    }

    public static void exportExcel(List<EmployeeExcel> data) {
        // Excel 文件路径
        String fileName = "员工信息.xlsx";
        
        // 创建 ExcelWriter
        EasyExcel.write(fileName, EmployeeExcel.class)
                .sheet("员工信息")
                .doWrite(data);
    }
}
  1. 添加备注信息 如果 Excel 的第一行是备注信息(如工号为6位文本格式等),可以在写入 Excel 时手动插入备注行。备注行可以通过自定义样式进行设置,如背景颜色。

  2. 设置单元格合并和背景颜色 如果需要合并单元格或者设置背景颜色,你可以使用 WriteStyleCellStyle 来设置样式。示例如下:


java

import com.alibaba.excel.write.style.AbstractCellStyleStrategy;
import org.apache.poi.ss.usermodel.*;

import java.util.List;

public class CustomCellStyleStrategy extends AbstractCellStyleStrategy {

    @Override
    protected void initCellStyle(Workbook workbook) {
        super.initCellStyle(workbook);
        // 设置备注行的背景颜色
        Sheet sheet = workbook.getSheetAt(0);
        Row row = sheet.createRow(0);
        row.createCell(0).setCellValue("工号为6位文本格式");
        row.createCell(1).setCellValue("变更前信息(不用填写,系统自动填充)");

        // 合并单元格
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 1));

        // 设置背景颜色
        CellStyle cellStyle = workbook.createCellStyle();
        cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        row.getCell(0).setCellStyle(cellStyle);
        row.getCell(1).setCellStyle(cellStyle);
    }

    @Override
    protected void setColumnWidth(Sheet sheet) {
        super.setColumnWidth(sheet);
        sheet.setColumnWidth(0, 6000); // 设置列宽
    }
}

EasyExcel.write() 方法中加入该自定义样式:

EasyExcel.write(fileName, EmployeeExcel.class)
          .sheet("员工信息")
          .registerWriteHandler(new CustomCellStyleStrategy())
          .doWrite(data);

总结

  • @ExcelProperty 注解用于将 Java 类的字段映射到 Excel 的列。
  • 通过 EasyExcel,可以轻松实现 Excel 文件的导出,支持数据模型与表格列的直接绑定。
  • 在导出时,可以添加备注行、合并单元格、设置背景颜色等自定义样式。

标签:String,Excel,EasyExcel,ExcelProperty,excel,private,表头,import,备注
From: https://blog.csdn.net/weixin_44060488/article/details/144758836

相关文章

  • 导出 Swagger 接口到 Excel
       importjsonimportxlwtapi_excel=xlwt.Workbook(encoding='utf-8')#创建一个文档api_sheet=api_excel.add_sheet('CRM接口')#添加一个sheetjson_file=open('D:/Test/api-docs.txt',encoding='utf-8')#打开保存的swagge......
  • vxe-table表格自定义表头(必填加*)
    <vxe-tableref="table":show-header-overflow="true":show-overflow="true":data="chooseAttributes"border:header-cell-style="{background:'#......
  • jExcel-类似Excel的jquery电子表格插件
    jexcel.js是一款轻量级的类似Excel的jquery电子表格插件。你可以同js数组、json数据或CSV文件来为jexcel表格提供数据,你甚至可以直接从一个Excel表格中直接复制粘贴数据到jexcel表格中。在线预览  下载  使用方法在页面中引入jquery、jquery.jexcel.js和jquery.jexcel.c......
  • 300+ Excel可视化图表模板:13种分类助你轻松制作专业图表
    正文:在职场中,专业的数据可视化能力是一项非常重要的技能。而使用高质量的Excel图表模板,可以让你的数据分析和展示工作更加高效!今天为大家推荐一份300+Excel可视化图表模板合集,涵盖13种图表分类,适用于多种办公场景。无论是数据分析、项目管理,还是日常汇报,这些模板都能帮助你快速......
  • EasyExcel-读取多个sheet的方法
    管方文档https://easyexcel.opensource.alibaba.com/docs/current/读取多个sheet的方法参考:https://www.cnblogs.com/huangjinyong/p/15994442.html主要代码下面的is:是你导入的excel文件ByteArrayInputStreamis=newByteArrayInputStream(newbyte[1024]);EasyE......
  • 使用Excel制作通达信自定义“序列数据“
    序列数据的视频教程演示Excel制作通达信自定义序列数据1.序列数据的制作方法:删掉没有用的数据(行与列)和股代码格式处理,是和外部数据的制作方法是相同,自己上面看历史博文。只需要判断一下,股代码跟随的字符串,是前缀(字符串+股代码)还是后缀(股代码+字符串),然后对应的Excel命......
  • 勤哲Excel服务器自动生成进出口企业个性化ERP管理系统
    近年来,随着产业信息化、数字化发展加速,尤其政策要求和疫情影响,生产贸易产业作为数字技术和机械行业的集大成者,正在发生深刻变革。同时,5G、物联网、大数据、人工智能等协同融合,成为贸易企业宝贵资产,有助于内外部、供应链之间资源整合和提效降本。在此背景下,无论贸易头部企业还是......
  • EasyExcel,被救了!
    11月6日消息,阿里巴巴旗下的JavaExcel工具库EasyExcel近日宣布,将停止更新,未来将逐步进入维护模式,将继续修复Bug,但不再主动新增功能。EasyExcel以其快速、简洁和解决大文件内存溢出的能力而著称,官方测试显示,仅需16M内存即可读取75M(46万行25列)的Excel文件,且耗时仅23秒。目前项目......
  • Python 在Excel单元格中应用数据条
    在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值。这种表示方式可以让大量的数字信息一目了然。本文将介绍如何使用Python在Excel中的指定单元格区域添加数据条。PythonExcel库Spire.XLSfor......
  • 视频设备轨迹回放平台EasyCVR:模拟设备注册EasyCVR无法上线问题的排查与解决
    在视频监控系统的部署和管理中,确保各个设备和平台之间的兼容性和顺畅通信是至关重要的。最近,我们接到用户反馈,他们在尝试将GB28181模拟工具注册到EasyCVR平台时遇到了问题,设备无法成功上线。为了解决这一问题,技术支持团队迅速介入,开始了一系列排查工作。以下是排查和解决问题的详......