我想在第三行插入数据库的数据,这里假如数据库有10条,并且继承第二行的格式

数据库数据

{"clark",25},我写个json对象,10条这个

造数据代码

        JSONArray jsonArray = new JSONArray();for (int i = 0; i < 10; i++) {JSONObject jsonObject = new JSONObject();jsonObject.put("name","clark");jsonObject.put("age",i+10);jsonArray.add(jsonObject);}

poi依赖

读xls,xlsx,io流,fastJson

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version>
</dependency>
<!-- 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>

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>

模板文件(测试.xlsx)

代码逻辑,读模板,插行,同时继承第二行样式,填数据

整体,可直接复制

public static void main(String[] args) {JSONArray jsonArray = new JSONArray();for (int i = 0; i < 10; i++) {JSONObject jsonObject = new JSONObject();jsonObject.put("name","clark");jsonObject.put("age",i+10);jsonArray.add(jsonObject);}//读取模板try {FileInputStream inputStream =new FileInputStream("C:\\Users\\shiao\\Desktop\\测试.xlsx");XSSFWorkbook workbook = new XSSFWorkbook(inputStream);XSSFSheet sheet = workbook.getSheetAt(0);//获取表中的第一个sheetXSSFRow row = sheet.getRow(1);XSSFCell cell = row.getCell(0);//姓名的样式XSSFCellStyle nameStyle = cell.getCellStyle();System.out.println(cell.getStringCellValue());//字符串用string//年龄的样式cell= row.getCell(1);XSSFCellStyle ageStyle = cell.getCellStyle();System.out.println(cell.getRawValue());//数字用rawValue//获取后进行遍历数据库for (int i = 0; i < jsonArray.size(); i++) {JSONObject jsonObject = jsonArray.getJSONObject(i);//新增行XSSFRow rowNew = sheet.createRow(3+i);//参数代表从第几行新增//给新增行增加样式XSSFCell cellName = rowNew.createCell(0);//第1列,代表name的位置XSSFCell cellAge = rowNew.createCell(1);//第2列,代表age的位置cellName.setCellStyle(nameStyle);cellAge.setCellStyle(ageStyle);cellName.setCellValue(jsonObject.getString("name"));cellAge.setCellValue(jsonObject.getInteger("age"));}workbook.write(new FileOutputStream("C:\\Users\\shiao\\Desktop\\测试结果.xlsx"));} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}
}

结果

但是很明显看到,之前的第五行被覆盖了,如果不让他覆盖怎么办,那就让插入位置的,到最后的其他整体下移动一行

//先全部下移动1行,这样才能保证不覆盖
// (参数1是开始,参数2是结束,参数3是正数代表,开始-结束范围内的单元格下移动1行)
sheet.shiftRows(3+i,sheet.getLastRowNum(),1);

结果

POI在指定excel插入行java相关推荐

  1. POI Excel插入行,下面的行动态移动

    直接上代码 package com.ll.controller; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.po ...

  2. Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 poi excel copy

    Java Excel 复制单元格 poi Excel 复制单元格 Java Excel 复制行 Java Excel 复制 sheet 页 一.前言 1.本文记录 poi excel 实现 单元格ce ...

  3. NPOI使用ShiftRows向excel插入行,并复制原有样式

    使用excel模板导出数据时,模板可填充的数据行有限,可通过ShiftRows插入行,如图,在第七行后插入新行,要求新行包含原有样式 插入后 首先添加npoi类库引用 /// <summary& ...

  4. JAVA判断sheet有效行数_Java 利用POI 读取指定excel的真实行数

    Java 使用poi包 读excel文件时,获取指定sheet页中数据行数可以通过调用 sheet.getLastRowNum() ;但这种方法仅限于当前sheet页中没有带格式的空白行时.如果其中一 ...

  5. POI操作Word中的表格XWPFTable,在指定位置插入行

    最近由于客户使用Word文档展示表格中的数据,我TM...Excel它不香嘛,为什么要用Word去展示表格呢??? 但是呢.客户就是上帝,上帝让我们干嘛我们就要干嘛. 1:有这样一个需求,在已有的Wo ...

  6. poi在指定位置插入图片,图片可以浮动内容上方下方

    在使用poi操作docx模板文件时,总会出现需要插入类似印章签名的图片.poi直接插入图片是插入内嵌图片 这个图片是占位置的. 会撑高当前的那一行类似效果 行使得制作出来的word样式辣眼睛. 一般印 ...

  7. c语言数组指定位置插入和删除_Apache POI在指定位置插入表格

    接到的需求是在模板表格的指定位置再插入表格.比如在模板的${proTable}处插入表格. 依赖的包 org.apache.poi poi 3.15org.apache.poi poi-ooxml 3 ...

  8. python列表增加行_openpyxl追加行、指定位置插入行

    本篇文章讲解openpyxl在sheet底部追加一行数据.在指定位置插入一行 1.openpyxl追加一行 append()方法,是在sheet中追加一行数据,参数可以使列表.元祖.range对象.字 ...

  9. excel html 列宽,POI精确设置Excel的行高和列宽

    EXCEL的行高度和列宽度单位是不一样的. 1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip): 1英寸=72磅=25.4毫米=1440缇 1磅=0.353毫米=20缇 ...

最新文章

  1. 通俗易懂的讲解区块链
  2. awstats 安装与配置
  3. 树、森林与二叉树的相互转换
  4. VS Web.config 密码加密加密
  5. Docker核心原理之namespace
  6. hdu 2563
  7. 5.RabbitMQ 客户端控制消息
  8. mysql的锁是公平的么_lock 默认公平锁还是非公平锁?公平锁是如何定义?如何实现...
  9. IBM量子计算新突破:成功构建50个量子比特原型机
  10. pve 加大local容量_proxmox ve (PVE) 增加 local 目录的大小即扩容
  11. iPhone 手机烧号的一些概念:五码烧号 vs OTA烧号
  12. Vue(二十三)vuex + axios + 缓存 运用 (以登陆功能为例)
  13. POJ3068 Shortest pair of paths 【费用流】
  14. 沙箱环境和测试环境区别_带你一图了解iOS应用内购买流程,掌握测试环境搭建与测试方法...
  15. 算法48---原子的数量【栈】
  16. 计算机设计大赛答辩ppt
  17. asymptotic notation and recursion
  18. 【小白渗透入门系列】补充:信息搜集工具
  19. 我想不通,MySQL 为什么使用 B+ 树来作索引?
  20. 基于O-RAN的无线云网络

热门文章

  1. 数字图像处理学习之路:图像变换(一)
  2. 基于Hi3861的听话的狗子
  3. 原生js或者jquery获取父级元素/同级元素/下级元素
  4. 关于markdown图片显示
  5. UML-九种基本图形
  6. python画厢式图_用matplotlib画箱体图(boxplot)
  7. 微信商户号25位招商银行号
  8. 杰里之AC695N/AC696N 蓝牙耳机PCB LAYOUT 说明【篇3】
  9. xxxx is not translated in zh-rCN, zh-rTW
  10. 教你从零开始用WebSocket打造一个IM聊天室