如何在java中的excel文件的同一张表中插入带有值的新行

2024-02-17

我想在 Excel 工作表中写入时插入新行。

这是我的代码:

public static void addValuesInWorkbook(String pathAndFileName, String sheetName,
            int rowNum, String valuesString,String delimeter) {
        if(pathAndFileName.length() > 0 && sheetName.length() > 0 && rowNum >= 0 && valuesString.length() > 0 && delimeter.length() > 0)
        {
            String[] colValues= null;
            if("|".equals(delimeter))
                colValues = valuesString.split("\\|");
            else
                colValues = valuesString.split(delimeter);
            int cellnum = 0;
            FileInputStream fsIP;
            try {
                fsIP = new FileInputStream(new File(pathAndFileName));
             //Read the spreadsheet that needs to be updated
            if(rowNum > 0)
            {
                rowNum--;               //As row indexing starts from 0
            }
            HSSFWorkbook wb = new HSSFWorkbook(fsIP); //Access the workbook
            HSSFSheet sheet = wb.getSheet(sheetName);
            HSSFRow row = sheet.getRow(((rowNum>0)?rowNum:0));
            HSSFCell cell=null;
            for(String colValue:colValues)
            {   if(row!=null){
                cell = row.getCell(cellnum);
                if(cell==null)
                    cell = row.createCell(cellnum);
                }
            else if (row == null)
                {
                    row =sheet.createRow(rowNum);                   //Create a row if it does not exist
                    cell = row.createCell(cellnum);
                }

                cell.setCellValue(colValue);
                cellnum++;
            }
            fsIP.close(); //Close the InputStream

            FileOutputStream output_file =new FileOutputStream(new File(pathAndFileName));  //Open FileOutputStream to write updates

            wb.write(output_file); //write changes

            output_file.close();  //close the stream  
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }

        }

值被插入标题(列名 )但每当插入新行时,它都会替换旧的行值。

请帮忙。


这是因为您要在已有值的行索引上创建新行。 您需要将现有行向下移动 1 行,因此您要插入行的索引是“空闲”的。

换句话说,“createRow()”将始终创建一个新行和索引 x,无论是否已经存在。

使用sheet.shiftRows(..) 看:https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFSheet.html#shiftRows(int https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFSheet.html#shiftRows(int,整数,整数)

第一个参数应该是要插入内容的行的索引,第二个参数是最后一行的编号,第三个参数应该是 1。因此从 x 开始的所有行都将向下移动一行,您可以插入您在 x 处的行。

示例:每一行都是一行内容。

1 ----------------------
2 ----------------------
3 ---------------------- < you want to insert a new row at index 3
4 ----------------------
5 ----------------------
6 ----------------------
7 ----------------------

shiftRows(3,7,1) 将执行以下操作:

1 ----------------------
2 ----------------------
3 empty row 
4 ---------------------- < your "old" row #3
5 ----------------------
6 ----------------------
7 ----------------------
8 ----------------------

createRow(3),设置单元格值:

1 ----------------------
2 ----------------------
3 ////////////////////// < your new row #3 witht he new content
4 ---------------------- < your "old" row #3
5 ----------------------
6 ----------------------
7 ----------------------
8 ----------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在java中的excel文件的同一张表中插入带有值的新行 的相关文章

  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • 在 JTable 中移动行

    我使用 MVC 模式 并且有一个如下所示的 JTable List
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • 当分配给变量时,我可以以某种方式重用 Gremlin GraphTraversals 代码吗?

    我有看起来像这样的 GraphTraversals attrGroup GraphTraversal
  • Java 页面爬行和解析之 Crawler4j 与 Jsoup

    我想获取页面的内容并提取其中的特定部分 据我所知 此类任务至少有两种解决方案 爬虫4j https github com yasserg crawler4j and Jsoup http jsoup org 它们都能够检索页面的内容并提取其
  • jdbc4.MySQLSyntaxErrorException:数据库中不存在表

    我正在使用 SpringBoot 开发一个网络应用程序 这是我的application properties文件来指定访问数据库的凭据 spring datasource driverClassName com mysql jdbc Dri
  • 如何在jsp代码中导入java库?

    我有以下jsp代码 我想添加 java io 等库 我怎样才能做到这一点
  • Microsoft Graph 身份验证 - 委派权限

    我可以使用 Microsoft Graph 访问资源无需用户即可访问 https developer microsoft com en us graph docs concepts auth v2 service 但是 此方法不允许我访问需
  • Clip 在 Java 中播放 WAV 文件时出现严重延迟

    我编写了一段代码来读取 WAV 文件 大小约为 80 mb 并播放该文件 问题是声音播放效果很差 极度滞后 你能告诉我有什么问题吗 这是我的代码 我称之为doPlayJframe 构造函数内的函数 private void doPlay f
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 从 android 简单上传到 S3

    我在网上搜索了从 android 上传简单文件到 s3 的方法 但找不到任何有效的方法 我认为这是因为缺乏具体步骤 1 https mobile awsblog com post Tx1V588RKX5XPQB TransferManage
  • 制作java包

    我的 Java 类组织变得有点混乱 所以我要回顾一下我在 Java 学习中跳过的东西 类路径 我无法安静地将心爱的类编译到我为它们创建的包中 这是我的文件夹层次结构 com david Greet java greeter SayHello
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 如何在 Maven 中显示消息

    如何在 Maven 中显示消息 在ant中 我们确实有 echo 来显示消息 但是在maven中 我该怎么做呢 您可以使用 antrun 插件
  • 将 JTextArea 内容写入文件

    我在 Java Swing 中有一个 JTextArea 和一个 提交 按钮 需要将textarea的内容写入一个带有换行符的文件中 我得到的输出是这样的 它被写为文件中的一个字符串 try BufferedWriter fileOut n
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 将2-3-4树转换为红黑树

    我正在尝试将 2 3 4 树转换为 java 中的红黑树 但我无法弄清楚它 我将这两个基本类编写如下 以使问题简单明了 但不知道从这里到哪里去 public class TwoThreeFour
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • javax.persistence.Table.indexes()[Ljavax/persistence/Index 中的 NoSuchMethodError

    我有一个 Play Framework 应用程序 并且我was使用 Hibernate 4 2 5 Final 通过 Maven 依赖项管理器检索 我决定升级到 Hibernate 4 3 0 Final 成功重新编译我的应用程序并运行它

随机推荐

  • 带有 @FocusState 和焦点更改处理的 SwiftUI 列表

    我想用一个List FocusState跟踪焦点 以及 onChanged of focus 确保当前聚焦的字段可见ScrollViewReader 问题是 当一切都设置在一起时List在滚动过程中不断重建 使得滚动不那么平滑 我发现Lis
  • 如何在 Kotlin 中从枚举创建编译时常量?

    我有一个注释需要defaultValue为编译时常数 我拿defaultValue from enum below enum class RaceType MARATHON SPRINT companion object fun apply
  • 鼠标悬停时反应改变反应图标颜色

    当我用鼠标悬停在反应图标上时 我想更改反应图标的颜色 使用下面给出的代码 只有当鼠标悬停在图标的线条上时 图标才会改变颜色 例如 对于邮件图标 只有当光标悬停在图标的线条上而不是空白处时 颜色才会改变 如果我将鼠标悬停在图标的任何部分上 如
  • 接口“递归”和引用计数

    我的接口有一个小问题 这是伪代码 type Interface1 interface end Interface2 interface end TParentClass class TInterfacedObject Interface1
  • Discord.NET 将消息发送到一台特定服务器中的一个特定通道

    所以我试图向特定频道发送消息 但我一直在寻找并发现我看不到任何可以做到这一点的方法 我可能做错了什么 或者我在错误的区域寻找 我在谷歌上查找过 但找不到答案 这是我试图找到它时的代码 discord GetGuild serverid Ge
  • 如何将图像设置为图表轴或沿图表轴设置?

    我正在尝试使用彩色光谱带作为图表的轴 这个想法是将图像上的颜色与其沿底部 x 轴相关的波长相匹配 条带需要更改大小以匹配图表区域的变化 并扩展和收缩部分以匹配图表区域中的滚动缩放 我尝试过使用图像注释 但随着图表区域的变化 注释尺寸保持固定
  • 快速更改 SSIS 包数据源参数以方便迁移

    我需要将 SQL 数据库从 Sybase 迁移到 MS SQL Server 在生产服务器上进行实际迁移之前 我首先使用 SQL Server Management Studio 的导入 导出向导创建了一个 SSIS 包 以便与其他数据库进
  • 如何计算 python 中我的列中的行的编辑比/距离?

    我有一个只有一列的数据框 该列中有 1000 行 我需要比较所有行并找到所有行的编辑距离 我如何计算Python中的比率或距离 我有一个数据框如下 Df StepDescription click confirm button when d
  • 在 django admin 中动态设置 readonly_fields

    我可以改变吗readonly fields in my TranslationAdmin类依赖于某个字段的值Translation被查看 如果是这样 我该怎么做 我唯一想到的就是制作一个小部件来查看Translation并决定是否成为只读小
  • 使用 StreamWriter 写入 MemoryStream 返回空

    我不确定我做错了什么 看过很多例子 但似乎无法让它发挥作用 public static Stream Foo var memStream new MemoryStream var streamWriter new StreamWriter
  • 删除cassandra中大型数据集的列

    我们有一个冗余列 希望从 Cassandra 数据库 版本 2 1 15 中删除 这是一个文本列 代表磁盘上的大部分数据 15 个节点 X 每个节点 1 8 TB 最简单的选择似乎是更改表来删除该列 然后让 Cassandra 压缩来处理事
  • 了解 pdo mysql 事务

    The PHP 文档 http php net manual en pdo transactions php says 如果您以前从未遇到过交易 他们提供 4 种主要的交易方式 特点 原子性 一致性 隔离性和持久性 ACID 在 通俗地说
  • JavaScript:是否定义了成员?

    在我看来 有四种不同的方法可以确定给定的对象 例如foo 具有给定的属性 例如bar 定义 if foo hasOwnProperty bar if bar in foo if typeof foo bar undefined if foo
  • C/C++ 优化数据结构、数组的数组或仅数组

    使用使用 16 字节 4v4 一字节矩阵的程序 unsigned char matrix 4 4 和一些 256bytes 16v16 一字节矩阵 unsigned char bigMatrix 16 16 很多时候 由于数据操作 我被迫在
  • Maven:如何配置native2ascii-maven-plugin

    我向你们提出这个问题 因为项目页面本身没有太多信息 基本上我设置了 native2ascii maven plugin 来处理我的一些资源 它可以很好地处理根目录中的文件 但现在我的子目录下有文件 template email 并希望将它们
  • selenium webdriver:如何在 C# 中处理 javascript onclick

    我正在使用 Selenium Web 驱动程序 C 测试一个网站 我最初的目的是检查返回 200 的 HttpWebResponse 但是 该按钮是一个 javascript onclick 事件 我想知道是否有人有过处理这种情况的经验 以
  • 从 JTable 中的行生成标准差图

    我正在尝试创建一个JTable我可以单击一行 它将显示标准偏差曲线 这是我的JTable看起来就像现在 例如 字符串的标准差screen saver action gt login login gt disclaimer ok看起来像这样
  • 如何使用枚举简化并使其更好,快速学习,枚举

    我通过以下方式定义一些范围 let range0 15 0 lt 15 let range15 30 15 lt 30 let range30 45 30 lt 45 let range45 60 45 lt 60 我真的很想用Enum为此
  • 我可以在neo4j中创建具有指定id的节点吗?

    我想在 Neo4j 中保存关系 但是 也许 我还没有决定 将对象保存在不同的数据库 类似于 Redis 中 如果要这样做 最好在存储数据库和 Neo4j 中同步 ID 那么 我可以在 Neo4j 中创建一个节点并将 ID 传递给它吗 聚苯乙
  • 如何在java中的excel文件的同一张表中插入带有值的新行

    我想在 Excel 工作表中写入时插入新行 这是我的代码 public static void addValuesInWorkbook String pathAndFileName String sheetName int rowNum S