目录
框架选择,经官方文档,github询问,官方qq群,发现easyExcel并没有这个功能。
--------------------------------------------可跳过
框架我们选用框架是,阿里的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} ,下面是执行代码
- 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
map = MapUtils.newHashMap(); - map.put("age", "年龄");
- EasyExcel.write(rsFileName).withTemplate(templateFileName).sheet().doFill(map);
-
-
- }
- }
结果


给这个B2位置,继承B1样式(直接设置样式很容易,但是继承资料比较少)
下面告诉你如何继承,但是查阅了官方所有资料,以及github上和官方群问,并不支持继承
填充Excel | Easy Excel (alibaba.com)
这里放弃使用阿里的excel,我们采用最原生的apache poi,功能最全。像阿里的是封装easy poi,而easy 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
-
- 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的值)
结果成功

你如果想在线编辑用luckeysheet