POI在指定excel插入行java

news2024/12/28 18:33:58

我想在第三行插入数据库的数据,这里假如数据库有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);//获取表中的第一个sheet
        XSSFRow 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);

 

结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65471.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mac 安装mysql8.0

1. 确认下载的版本 并下载dmg文件 官网下载dmg安装文件 &#xff0c;查看自己电脑用的是什么芯片 选择对应版本的安装包&#xff0c;终端命令&#xff1a; uname -a 参考&#xff1a;http://www.yaotu.net/biancheng/13817.html 系统偏好设置里是 英特尔的i7处理器 并且查询…

可观测性-Metrics-Tomcat连接数、线程数理解以及压测记录

文章目录背景原理压测5个并发压测10个并发压测60个并发压测61个并发压测背景 为了搞懂Tomat的连接线程模型&#xff0c;搞清楚每个配置参数的作用&#xff0c;实际压测看一下是否与预期一致。 Tomcat配置如下&#xff1a; server:# tomcat配置tomcat:# 允许最大连接数,默认8…

磁盘和文件系统管理(一)

检测并确认新硬盘 fdisk命令 查看或管理磁盘分区 fdisk -l [磁盘设备] 或 fdisk [磁盘设备] 交互模式中的常用指令 m、p、n、d、t、w、q d delete a partition * 删除分区 g create a new empty GPT partition table 创建一个新的空的GPT分区表(可以对大于2T磁盘进行分区) l…

Java - Object#finalize在JDK9中被标记废弃了!

Java - Object#finalize在JDK9中被标记废弃了&#xff01; 时间&#xff1a;2022年12月6日01:34:10 目录&#xff1a; ① 为什么要废弃&#xff1f; ② 废弃后&#xff0c;使用什么方式主动监测对象是否被回收&#xff1f; 一、为什么要废弃&#xff1f; ⚡注意&#xff1a;废…

ChatGPT成精了!

最近几天&#xff0c;朋友圈、公众号都被 ChatGPT 刷屏了。 更有不少标题党吹嘘 “谷歌要完&#xff0c;百度也危了”。 那么它到底有没有网上吹的这么神奇呢&#xff1f; 我亲测了一把&#xff0c;感觉确实非常惊艳&#xff01; 例如&#xff1a; 看着还不错&#xff0c;每…

20221206英语学习

今日新词&#xff1a; outwards adv.向外, 朝外 outrage n.义愤&#xff0c;愤慨&#xff1b;暴行&#xff0c;骇人听闻的事件 drown v.淹没, 溺死, 浸透, 浸泡 visit n.访问, 参观, 看望, 游览 setting n.环境, 背景, &#xff08;戏剧、小说等的&#xff09;情节背景&am…

面试题: Hive-SQL查询连续活跃登录用户思路详解

文章目录创造数据登录日志去重一、思路一1.1、分组排序1.2、日期减去计数值得到结果, 用户连续登陆情况下&#xff0c;每次相减的结果都相同1.3、根据 user_id 和 dis 分组&#xff0c;得到用户的 开始、结束时间、连续登录天数1.4、连续登录超过两天用户二、思路二&#xff1a…

【Rust日报】2022-12-05 探索 docker 的 WASM 技术预览

探索 docker 的 WASM 技术预览docker于近日发布了支持 WASM 容器的预览版本,本文带你体验使用 Rust 编写代码,并且编译成 WASM 最终运行于 docker 的过程.原文链接: https://medium.com/shyamsundarb/exploring-docker-hubs-wasm-technical-preview-76de28c3b1b4使用 Rust 破解…

Matlab学习——变量与档案存取

一、变量 1. char和string MATLAB里面的字符和字符串都是用单引号括起来的。 % 示例&#xff1a;aI like China; n0; for n1:1:size(a,2)b(size(a,2)-n1)a(n); end disp(a); disp(b);% 输出&#xff1a;>> work I like China anihC ekil I >> % 示例&#xff…

Dockerfile的常用指令和构建案例

一、Dockerfile操作常用的指令 (1) FROM 镜像 指定新镜像所基于的基础镜像&#xff0c;第一条指令必须为FROM指令&#xff0c;每创建一个镜像就需要一条FROM指令 (2) MAINTAINER 名字 说明新镜像的维护人信息 (3) RUN命令 在所基于的镜像上执行命令&#xff0c;并提交到新的…

B2B商城交易平台搭建方案为专用设备行业注入新动力,加快产业数字化转型升级

专用设备是指设备的结构、性能专门针对某一种或一类对象&#xff0c;实现一项或几项功能的工业&#xff0c;包括工程机械、光伏设备、锂电设备、3C设备、半导体设备等。近年来&#xff0c;受市场对专用设备的应用需求不断扩大、产业技术升级趋势加快等影响&#xff0c;我国专用…

直播回顾:Coremail校园邮件安全防护交流会暨新技术应用分享

11月23日&#xff0c;Coremail校园邮件安全防护交流会暨新技术应用分享直播举办。 Coremail作为国内TOP级邮件系统厂商&#xff0c;服务上百家高校&#xff0c;特邀以下重磅嘉宾参与了本次圆桌讨论。 本次圆桌会主要探讨校园典型钓鱼邮件防范与新技术在校园邮件中的应用。 高校…

mysql 查询在一张表不在另外一张表的记录

SQL Join子句&#xff0c;主要用在select语句中&#xff0c;把两个或多个表的行结合起来&#xff0c;基于这些表之间的共同字段(往往是id字段)来查询&#xff0c;从多个表中返回满足条件的所有行。 常见join子句类型 常见join子句类型有INNER JOIN(同JOIN)、LEFT JOIN、RIGHT…

【Java学习Note】第8章 多线程

8. 多线程 文章目录8. 多线程8.1 程序、进程、线程8.2 线程的创建8.2.1 继承Thread类-创建线程方法之一8.2.2 Thread常用方法8.2.3 实现Runnable接口-创建线程方法之二8.2.4 两种多线程的区别8.3 线程得调度8.4 线程的生命周期8.5 线程的同步8.5.1 线程同步--Synchronized8.5.2…

html网页设计与制作:基于html设计整套招聘网站求职前端模板页面 静态网页HTML代码 学生网页课程设计期末作业下载

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

联通边缘AI:打造“职业技能”,助力行业高质量发展

内容来源&#xff1a;2022年11月12日&#xff0c;由边缘计算社区主办的全球边缘计算大会上海站圆满落幕。我们非常荣幸邀请到了联通数科首席AI科学家廉士国博士来分享&#xff0c;廉博士是中国图像图形学会三维视觉专委会委员、IEEE智能计算及多媒体通信委员会委员、国家工业互…

WSL VSCode运行C++项目

WSL VSCode运行C项目collect2: error: ld returned 1 exit statusboost库的链接安装并编译boost库&#xff1a;链接库(&#xff01;&#xff01;这一步有错误&#xff0c;下面会改正)/usr/include/boost/python/detail/wrap_python.hpp:57:11: fatal error: pyconfig.h: No suc…

RK3588平台开发系列讲解(SARADC篇)SARADC的工作流程

平台内核版本安卓版本RK3588Linux 5.10Android12🚀返回专栏总目录 文章目录 一、SARADC驱动二、SARADC常用接口三、SARADC源码分析1、SARADC驱动注册2、用例分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍SARADC的源码分析和工作流程。 一、SARADC驱…

【Flink】需求实现之独立访客数量的计算 和 布隆过滤器的原理及使用

文章目录一 独立访客数量计算二 布隆过滤器1 什么是布隆过滤器2 实现原理&#xff08;1&#xff09;HashMap 的问题&#xff08;2&#xff09;布隆过滤器数据结构3 使用布隆过滤器去重一 独立访客数量计算 public static void main(String[] args) throws Exception{StreamExe…

Locust学习记录3-用户类属性【host attribute,tasks attribute】

host attribute(主机属性) host属性是家长主机的URL前缀&#xff08;即“https://www.baidu.com”&#xff09;。 这是在Locust的web UI 或命令行上指定的&#xff0c;在Locust【--host】启动时使用该选项 【--host】如果在用户类中声明了一个host属性&#xff0c;那么在命令…