• 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

  • 相关阅读:
    大数据实战之HDFS单机配置
    Day04-GET和POST请求
    英语语音识别,语言评测,语音打分实践与代码实现
    WebGL笔记:绘制矩形面的几种方式以及封装封装多边形对象来绘制不同图形
    什么是泛型,泛型的具体使用?
    Java/Python/Go不同开发语言基础数据结构和相关操作总结-GC篇
    C# 语法分析器(二)LR(0) 语法分析
    学会和自己相处
    ORA-01558故障恢复----惜分飞
    Qtcreator中文显示乱码问题终于解决
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/127783222