Poi操作Excel,保留格式的情况下插入行

使用POI向Excel模板动态添加内容 一、功能的需求以及实现的效果 1、首先先交代一下需求,需根据Excel模板中特定的值,动态的添加内容。图片如下: 2、如上图,${cls.f10}标识表示需获取对象中的字段,${cls.templateData.outSth()} 需获取对象中的方法(此处使用Java的反射原理)。 3、改模板还支持列表型标识,如${cls.templatedata[#].type},... 阅读详情

目录

2023/03/20修改bug,startRow为最后一行时无法插入新行

例1:

问:如果我想在李四下方插入一个空行该如何操作

结果

 例2

问:在例1的结果基础上,我们想要在张三后插入3行,样式拷贝张三,如何操作

结果


2023/03/20修改bug,startRow为最后一行时无法插入新行

如果复制最后一行,首先需要创建最后一行的下一行,否则无法插入

例1:

问:如果我想在李四下方插入一个空行该如何操作

我们应该在行标为3的下方插入1行

startRow = 3

row = 1



    public static void main(String[] args) {
        ExcelWriter writer = ExcelUtil.getWriter(new File("C:\\Users\\Wsong\\Desktop\\template.xlsx"),"活动信息");
        int startRow= 3;
        int rows = 1;
        XSSFSheet sheet = (XSSFSheet)writer.getSheet();

        ExcelCopyUtils.InsertRow(writer, startRow, rows, sheet,false);
    }

结果

执行后的结果,我们可以看到样式与行标为3的行一致。

 例2

问:在例1的结果基础上,我们想要在张三后插入3行,样式拷贝张三,如何操作

我们应该在行标为5的下方插入3行

startRow =5

row = 3



    public static void main(String[] args) {
        ExcelWriter writer = ExcelUtil.getWriter(new File("C:\\Users\\Wsong\\Desktop\\template.xlsx"),"活动信息");
        int startRow= 5;
        int rows = 3;
        XSSFSheet sheet = (XSSFSheet)writer.getSheet();

        ExcelCopyUtils.InsertRow(writer, startRow, rows, sheet,false);
    }

结果

 代码如下。

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>5.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.0.0</version>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.0.5</version>
        </dependency>
package com.ws.excel;


import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFSheet;

import java.io.File;
import java.util.List;

public class ExcelCopyUtils {

    public static void main(String[] args) {
        ExcelWriter writer = ExcelUtil.getWriter(new File("C:\\Users\\Wsong\\Desktop\\template.xlsx"),"活动信息");
        // startRow=5 行标为5的行后插入2行,样式拷贝第5行的样式
        int startRow= 5;
        int rows = 2;
        XSSFSheet sheet = (XSSFSheet)writer.getSheet();

        InsertRow(writer, startRow, rows, sheet,false);
    }

    /**
     *
     * @param writer ExcelWriter
     * @param startRow 插入行的行标,即在哪一行下插入
     * @param rows 插入多少行
     * @param sheet XSSFSheet
     * @param copyvalue 新行复制(startRow-1)行的样式,而且在拷贝行的时候可以指定是否需要拷贝值
     * @Author Wsong qzsoft
     */
    private static void InsertRow(ExcelWriter writer, int startRow, int rows, XSSFSheet sheet,Boolean copyvalue) {
        if(sheet.getRow(startRow+1)==null){
            // 如果复制最后一行,首先需要创建最后一行的下一行,否则无法插入,Bug 2023/03/20修复
            sheet.createRow(startRow+1);
        }

        //先获取原始的合并单元格address集合
        List<CellRangeAddress> originMerged = sheet.getMergedRegions();

        for (int i = sheet.getNumMergedRegions() - 1; i >= 0; i--) {
            CellRangeAddress region = sheet.getMergedRegion(i);
            //判断移动的行数后重新拆分
            if(region.getFirstRow()>startRow){
                sheet.removeMergedRegion(i);
            }
        }

        sheet.shiftRows(startRow,sheet.getLastRowNum(),rows,true,false);
        sheet.createRow(startRow);

        for(CellRangeAddress cellRangeAddress : originMerged) {
            //这里的8是插入行的index,表示这行之后才重新合并
            if(cellRangeAddress.getFirstRow() > startRow) {
                //你插入了几行就加几,我这里插入了一行,加1
                int firstRow = cellRangeAddress.getFirstRow() + rows;
                CellRangeAddress newCellRangeAddress = new CellRangeAddress(firstRow, (firstRow + (cellRangeAddress
                        .getLastRow() - cellRangeAddress.getFirstRow())), cellRangeAddress.getFirstColumn(),
                        cellRangeAddress.getLastColumn());
                sheet.addMergedRegion(newCellRangeAddress);
            }
        }
        writer.flush();
        CellCopyPolicy cellCopyPolicy = new CellCopyPolicy();
        cellCopyPolicy.setCopyCellValue(copyvalue);
        cellCopyPolicy.isCopyCellValue();
        for (int i = 0; i < rows; i++) {
            sheet.copyRows(startRow-1,startRow-1,startRow+i,cellCopyPolicy);
        }
        writer.close();
    }
}

poi操作Excel在原有的数据里插入一条新的数据 一、POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 结构: HSSF --提供读写Microsoft Excel格式档案的功能。 XSSF --提供读写MicrosoftExcelOOXML格式档案的功能。 HWPF --提供读写Microsoft Word格... 阅读详情

相关推荐

POI插入EXCEL图片【成功】

这几天一直在弄POI操作EXCEL,本人用的是POI3.8,本人前面的几篇关于POI的文章全部是从各个网站拷贝过来的,实验后发现都不能很好的操作EXCEL2007+的,也就是“.xlsx‘格式的文档,本人根据前面几篇文章做了部分改动,现发出代码如下,希望能够帮到和我一样遇到同类问题的童鞋。 import java.awt.image.BufferedImage; import java.io.

ggcaozheng的专栏 2048

POI Excel 如何插入新的行?

使用shifRows方法,第1个参数是指要开始插入的行,第2个参数是结尾行数 HSSFSheet sheet = workbook.getSheetAt(0); sheet.shiftRows(12, 24, 1);

ABCAA1024的博客 4724

使用POI在Excel表中插入数据

1.如图,需要用代码控制Excel数据的生成。Excel表格式如下(有13列,部分信息已码) 2、导入POI到工程中,我用的maven仓库导入的。或者直接下载导入工程也可以 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <g...

Coding&Sharing 1173

java Poi操作Excel,插入行,保留行格式

动态Excel,如何在指定行后插入一定数量的空行,并且拷贝指定行的样式

javaMylife的博客 5118

poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

NULL 博文链接:https://gojava1.iteye.com/blog/750718

深入解析MTK平台hang_detect机制:从原理到实战调试

本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。

purple的博客 1005

利用Apache POI在已有的Excel文件中插入一行新的数据

在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表。那么在这个章节里面,我将会给大家演示一下,如何用Apache POI在已有的Excel文件中插入一行新的数据。具体代码,请看下面的例子。 [java] view plain copy print?import java.io.File;  imp

付石头的博客 1万+

GNSS-RTK/INS紧组合里,那个‘杆臂改正’到底怎么算?一个公式讲清INS与天线位置的关系

本文深入解析GNSS-RTK/INS紧组合导航系统中的杆臂改正(Lever Arm Correction)原理与实现方法。详细介绍了杆臂效应的物理本质、数学建模及误差扰动分析,揭示了IMU与GNSS天线位置关系的核心公式,并提供了工程实现中的常见误区与验证方法。通过Python代码示例和紧组合量测模型处理流程,帮助开发者准确理解并应用这一关键技术。

weixin_33137081的博客 357

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

直接上代码 package com.csk.controller; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.fi

cooooooooold的博客 4122

Python实现安居客新房数据抓取简易版

本文介绍使用Python爬取安居客新房楼盘数据的方法,重点针对三四线城市。通过分析移动端H5页面结构,采用滚动加载方式获取推荐楼盘列表(class="recomm-list"),从中提取楼盘ID并拼接详情页链接。代码展示了如何解析HTML标签获取楼盘名称、状态、价格、户型等基本信息,并处理图片URL。爬取过程涉及一个一级页面和两个二级页面,同时提到可能遇到的验证码问题将在后续处理。核心代码使用BeautifulSoup解析HTML,requests发送请求,并将数据存入MySQL数据库。

qq_37604998的博客 475

《Zephyr OS 入门与实战》第3章:第一个 Zephyr 程序 - Blinky 实战

解决方法:确认设备树overlay文件已正确加载。返回值,确认驱动初始化状态。

2301_79143213的博客 541

POI操作Excel常用方法总结

一、 POI简介             Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况             HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为

huazhangena的专栏 11万+

Ultralytics 框架中 model.predict() 返回的 results 对象的详细解析

通过掌握 results 对象的使用方法,您可以快速实现模型部署、数据分析与可视化。

浩瀚之水的专栏 749

POI在指定excel插入行java

我想在第三行,插入数据库的数据,这里假如数据库有10条,并且继承第二行的格式 数据库数据{"clark",25},我写个json对象,10条这个 读xls,xlsx,io流,fastJson整体,可直接复制 结果

前方的路在刚开始 3593

电路设计仿真软件:Mentor Graphics_(1).MentorGraphics电路设计仿真软件概述

菜单栏:包含文件、编辑、视图、工具等菜单。工具栏:提供常用的工具按钮,如打开、保存、仿真等。原理图编辑区:用于绘制电路原理图。元件库:包含各种电路元件,支持拖拽操作。属性面板:显示选中元件的属性,可以进行参数设置。仿真控制区:用于设置仿真参数和控制仿真过程。输出窗口:显示仿真结果和日志信息。打开模型编辑器:点击“工具”菜单,选择“模型编辑器”。选择模型类型:在模型编辑器中选择模型类型,如SPICE模型。输入模型参数:根据需要输入模型的参数,如电阻值、电容值等。保存模型。

kkchenjj的博客 1925

Unity如何实现3D物体拆解组装

最近有一个需求,是做一个发动机的拆卸和安装功能,其实是一个很简单的功能,但是其中有一个点我觉的非常有意思,就是拖拽组装时,物体如何精准拖到目标位置,思路有了,但是我一直找不到实现方式,早晨刷牙时无意间想到了叉乘,我才有了解决方案。就凭这一次的灵光乍现,也很有必要写篇博客来记录一下。首先,我们先来看下我们要实现的效果,就是对一个发动机(任意多组件物体,如:车)的360°预览查看,手动拖拽拆解,手动拖拽组装。360°旋转视角远近拉伸视角点击拖拽拆卸拖拽组装。

TxNet 1万+

POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】

原文:http://javacrazyer.iteye.com/blog/894758 实际开发过程中通常用到的就是从数据库导出EXCEL表格了,JXL可以这样做,其实POI也可以(关于JXL与POI的异同可访问我之前总结的文章),之前写过POI对七种文档(当然也包括EXCEL)的内容读取操作的文章,这次要写的就非常重要了,就是开发中经常会用到的POI读取数据库导出EXC

Frist_huangsuli的专栏 2万+

13、基因相似性度量的相关性及特征选择研究

本文研究了基因相似性度量和特征选择在生物学中的应用,详细介绍了GO术语相似性度量的多种方法,包括语义度量和路径长度度量,并分析了不同方法在酵母和人类数据集上的表现。研究发现,Avg-sum方法和基于路径长度的度量在多数情况下效果较好。此外,通过晚期辐射毒性预测的案例研究,探讨了特征选择的重要性及可能面临的过拟合和噪声干扰问题,并提出了相应的解决策略。

js777的博客 127

POI操作Excel:插入多张图片

POI的操作Excel时,不可避免有操作图片的处理。怎么插入图片呢?网上也有不少介绍。    下面的代码是向Excel中插入多张图片的例子: public static void main(String[] args) {         FileOutputStream fileOut = null;         BufferedImage bufferImg = null;

步行者的专栏 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

POI 操作EXCEL 之插入图片 2003,2007

原文链接出自:https://silencelyn.iteye.com/blog/2170520 package com.excel; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import...

不抛弃、不放弃:Aaron莫言 1025

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

POI操作Excel文档-插入图片

转自: http://dev.firnow.com/course/3_program/java/javajs/20100412/202070.html一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等

java journey 1845

POI Excel 在已有的Excel模板上写入 不改变格式 合并单元格的也可以

POI Excel 在已有的Excel模板上写入 不改变格式 合并单元格的也可以 使用的poi的相关jar包一定版本一定要相同,maven所使用jar包,没有使用maven的话,就用poi-3.9.jar和poi-ooxml-3.9.jar(这个主要是用于Excel2007以后的版本)两个jar包就行。 &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.apach...

luluz2010的博客 2219

POI 读取excel模板,动态添加数据行和图片

需求就是生成一个excel,要求就是数据大于10行的时候动态添加,小于10行的时候,原来的模板不变,只是填充数据。 还有一些小需求比如说添加图片所以本篇文章分三部分。 目录 读取模板 动态添加行数据 这里有一个小坑 插入图片 读取模板 try (FileInputStream is = new FileInputStream(mdlpart); XSSFWorkbook work...

qq_36779436的博客 1905

poi操作 excel 中文API文档

poi操作 excel 中文API文档 依赖: <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <depende

Mr_going的博客 2382

POI 操作 EXCEL 总结

一、 POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和e

nongmin130的专栏 1676

使用POI生成Excel文件及使用POI在EXCEL文件中插入图片的方法

欢迎点击此处订阅本Blog<!--google_ad_client = "pub-7343546549496470";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "image";//2007-07-26:

小李专栏 3736
上一篇: 数仓漏斗模型,正则匹配REGEXP_EXTRACT,SORT_ARRAY
下一篇: session分割
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值