POI在指定excel插入行java
我想在第三行,插入数据库的数据,这里假如数据库有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相关推荐
- POI Excel插入行,下面的行动态移动
直接上代码 package com.ll.controller; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.po ...
- 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 ...
- NPOI使用ShiftRows向excel插入行,并复制原有样式
使用excel模板导出数据时,模板可填充的数据行有限,可通过ShiftRows插入行,如图,在第七行后插入新行,要求新行包含原有样式 插入后 首先添加npoi类库引用 /// <summary& ...
- JAVA判断sheet有效行数_Java 利用POI 读取指定excel的真实行数
Java 使用poi包 读excel文件时,获取指定sheet页中数据行数可以通过调用 sheet.getLastRowNum() ;但这种方法仅限于当前sheet页中没有带格式的空白行时.如果其中一 ...
- POI操作Word中的表格XWPFTable,在指定位置插入行
最近由于客户使用Word文档展示表格中的数据,我TM...Excel它不香嘛,为什么要用Word去展示表格呢??? 但是呢.客户就是上帝,上帝让我们干嘛我们就要干嘛. 1:有这样一个需求,在已有的Wo ...
- poi在指定位置插入图片,图片可以浮动内容上方下方
在使用poi操作docx模板文件时,总会出现需要插入类似印章签名的图片.poi直接插入图片是插入内嵌图片 这个图片是占位置的. 会撑高当前的那一行类似效果 行使得制作出来的word样式辣眼睛. 一般印 ...
- c语言数组指定位置插入和删除_Apache POI在指定位置插入表格
接到的需求是在模板表格的指定位置再插入表格.比如在模板的${proTable}处插入表格. 依赖的包 org.apache.poi poi 3.15org.apache.poi poi-ooxml 3 ...
- python列表增加行_openpyxl追加行、指定位置插入行
本篇文章讲解openpyxl在sheet底部追加一行数据.在指定位置插入一行 1.openpyxl追加一行 append()方法,是在sheet中追加一行数据,参数可以使列表.元祖.range对象.字 ...
- excel html 列宽,POI精确设置Excel的行高和列宽
EXCEL的行高度和列宽度单位是不一样的. 1,EXCEL列高度的单位是磅,Apache POI的行高度单位是缇(twip): 1英寸=72磅=25.4毫米=1440缇 1磅=0.353毫米=20缇 ...
最新文章
- 通俗易懂的讲解区块链
- awstats 安装与配置
- 树、森林与二叉树的相互转换
- VS Web.config 密码加密加密
- Docker核心原理之namespace
- hdu 2563
- 5.RabbitMQ 客户端控制消息
- mysql的锁是公平的么_lock 默认公平锁还是非公平锁?公平锁是如何定义?如何实现...
- IBM量子计算新突破:成功构建50个量子比特原型机
- pve 加大local容量_proxmox ve (PVE) 增加 local 目录的大小即扩容
- iPhone 手机烧号的一些概念:五码烧号 vs OTA烧号
- Vue(二十三)vuex + axios + 缓存 运用 (以登陆功能为例)
- POJ3068 Shortest pair of paths 【费用流】
- 沙箱环境和测试环境区别_带你一图了解iOS应用内购买流程,掌握测试环境搭建与测试方法...
- 算法48---原子的数量【栈】
- 计算机设计大赛答辩ppt
- asymptotic notation and recursion
- 【小白渗透入门系列】补充:信息搜集工具
- 我想不通,MySQL 为什么使用 B+ 树来作索引?
- 基于O-RAN的无线云网络