• JAVA操作Excel样式


    框架选择,经官方文档,github询问,官方qq群,发现easyExcel并没有这个功能。

    有这个功能的框架只有最原始的apache poi

    目录

    框架选择,经官方文档,github询问,官方qq群,发现easyExcel并没有这个功能。

    有这个功能的框架只有最原始的apache poi

    Apache Poi


    这里点击目录跳到Apache Poi的段落

    --------------------------------------------可跳过

    框架我们选用框架是,阿里的easyExcel(是根据apche的easyPoi修改升级后得到的)

    首先创建一个excel表格【测试.xlsx】,在其中添加下列格式

    现在需要使用easyExcel框架,继承A1的样式,填充到B1。并且在B1写入【年龄】二字 

    1.在pom文件中导入easyExcel框架



        com.alibaba
        easyexcel
        3.1.2

    2.写入

    在easyExcel中,写入就是填充

    有两种方式,1种是创建一个对象,另一个是Map。我们通常使用Map方式,因为map更加灵活。

    他的写入方式是这样的

     模板文件加一个{age} ,下面是执行代码

    1. import com.alibaba.excel.EasyExcel;
    2. import com.alibaba.excel.util.MapUtils;
    3. import java.util.Map;
    4. public class T1 {
    5. public static void main(String[] args) {
    6. String templateFileName ="E:\\测试.xlsx";
    7. String rsFileName = "E:\\测试结果.xlsx";
    8. // 这里 会填充到第一个sheet, 然后文件流会自动关闭
    9. Map map = MapUtils.newHashMap();
    10. map.put("age", "年龄");
    11. EasyExcel.write(rsFileName).withTemplate(templateFileName).sheet().doFill(map);
    12. }
    13. }

    结果

    给这个B2位置,继承B1样式(直接设置样式很容易,但是继承资料比较少)

    下面告诉你如何继承,但是查阅了官方所有资料,以及github上和官方群问,并不支持继承

    填充Excel | Easy Excel (alibaba.com)

    这里放弃使用阿里的excel,我们采用最原生的apache poi,功能最全。像阿里的是封装easy poi,而easy poi封装的apache poi。

    -----------------------------------

    Apache Poi

    他有下面的样式操作

    获取单元格样式

    XSSFCellStyle cellStyle = xssfRow.getCell(0).getCellStyle();

    设置单元格样式

    setCellStyle();

    下面我们开始进行实战测试

    导入依赖(这个支持XLS)



        org.apache.poi
        poi
        5.2.2

    导入依赖(这个支持 XLSX)

    
    
        org.apache.poi
        poi-ooxml
        5.2.2
    
    

    因为他不能直接读取文件,需要通过流的方式读取,为了方便我们使用流框架,依赖如下

           
                commons-io
                commons-io
                1.4
           

    1. import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    2. import org.apache.poi.xssf.usermodel.*;
    3. import java.io.*;
    4. public class T1 {
    5. public static void main(String[] args) throws FileNotFoundException {
    6. FileInputStream inputStream =new FileInputStream("E:\\测试.xlsx");
    7. try {
    8. XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
    9. XSSFSheet sheet = workbook.getSheetAt(0);//获取表中的第一个sheet
    10. int lastRowNum = sheet.getLastRowNum();//获取最后一行
    11. XSSFRow head = sheet.getRow(0);//获取第一行,标题
    12. XSSFCell cellA1 = head.getCell(0);//获取(A1),第一列第一行
    13. XSSFCellStyle cellStyleA1 = cellA1.getCellStyle();//获取A1的样式
    14. //设置B1的样式
    15. XSSFCell cellB1 = head.getCell(1);
    16. //将A1的样式,复制给B1
    17. cellB1.setCellStyle(cellStyleA1);
    18. /* for (int i = 1; i < lastRowNum; i++) {//从第二行开始
    19. XSSFRow row = sheet.getRow(i);
    20. XSSFCell cell = row.getCell(0);//获取第一列
    21. }*/
    22. workbook.write(new FileOutputStream("E:\\测试123.xlsx"));
    23. } catch (IOException e) {
    24. e.printStackTrace();
    25. }
    26. }
    27. }

    你只管改就行,改完他会自动调用你在内存中改后的内容,写入到表格中(他的内部逻辑都隐藏了,所以直接看起来会比较晕,分不清是哪个步骤写进去的,其实他定义的是一个全局变量,你的所有方法都会自动去修改workbook的值

    结果成功

    你如果想在线编辑用luckeysheet

  • 相关阅读:
    基于Java的汽车票网上预订系统设计与实现(源码+lw+部署文档+讲解等)
    实再高度为设备高度的100%布局
    Qt MV架构-委托类
    D. Yet Another Sorting Problem
    nacos入门案例Demo
    前端面试准备
    ChatGPT无法登录,提示我们检测到可疑的登录行为,将阻止进一步的尝试。请与管理员联系
    Windows 环境搭建 PostgreSQL 物理复制高可用架构数据库服务
    【微服务~Nacos】Nacos服务提供者和服务消费者
    Python实验项目4 :面对对象程序设计
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/127783222