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

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

目录

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

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

Apache Poi


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

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

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

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

java excel 设置函数 java设置excel样式_Apache

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

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

<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>3.1.2</version>
 </dependency>

2.写入

在easyExcel中,写入就是填充

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

他的写入方式是这样的

java excel 设置函数 java设置excel样式_Apache_02

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


import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.util.MapUtils;

import java.util.Map;

public class T1 {
    public static void main(String[] args) {

        String templateFileName ="E:\\测试.xlsx";
        String rsFileName = "E:\\测试结果.xlsx";
        // 这里 会填充到第一个sheet, 然后文件流会自动关闭
        Map<String, Object> map = MapUtils.newHashMap();
        map.put("age", "年龄");
        EasyExcel.write(rsFileName).withTemplate(templateFileName).sheet().doFill(map);


    }
}

结果

java excel 设置函数 java设置excel样式_excel_03

java excel 设置函数 java设置excel样式_excel_04

给这个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)

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.2</version>
</dependency>

导入依赖(这个支持 XLSX)

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency>

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

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.4</version>
        </dependency>

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.*;

import java.io.*;

public class T1 {
    public static void main(String[] args) throws FileNotFoundException {


        FileInputStream inputStream =new FileInputStream("E:\\测试.xlsx");


        try {


            XSSFWorkbook workbook = new XSSFWorkbook(inputStream);


            XSSFSheet sheet = workbook.getSheetAt(0);//获取表中的第一个sheet
            int lastRowNum = sheet.getLastRowNum();//获取最后一行


            XSSFRow head = sheet.getRow(0);//获取第一行,标题
            XSSFCell cellA1 = head.getCell(0);//获取(A1),第一列第一行
            XSSFCellStyle cellStyleA1 = cellA1.getCellStyle();//获取A1的样式

            //设置B1的样式
            XSSFCell cellB1 = head.getCell(1);
            //将A1的样式,复制给B1
            cellB1.setCellStyle(cellStyleA1);




/*            for (int i = 1; i < lastRowNum; i++) {//从第二行开始
                XSSFRow row = sheet.getRow(i);
                XSSFCell cell = row.getCell(0);//获取第一列

            }*/

            workbook.write(new FileOutputStream("E:\\测试123.xlsx"));

        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

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

结果成功

java excel 设置函数 java设置excel样式_github_05

你如果想在线编辑用luckeysheet