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

  1. import java.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import org.apache.poi.xssf.usermodel.XSSFCell;
  7. import org.apache.poi.xssf.usermodel.XSSFRow;
  8. import org.apache.poi.xssf.usermodel.XSSFSheet;
  9. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  10. public class CreatRowTest {
  11. //当前文件已经存在
  12. private String excelPath = "D:\\exceltest\\comments.xlsx";
  13. //从第几行插入进去
  14. private int insertStartPointer = 3;
  15. //在当前工作薄的那个工作表单中插入这行数据
  16. private String sheetName = "Sheet1";
  17. /**
  18. * 总的入口方法
  19. */
  20. public static void main(String[] args) {
  21. CreatRowTest crt = new CreatRowTest();
  22. crt.insertRows();
  23. }
  24. /**
  25. * 在已有的Excel文件中插入一行新的数据的入口方法
  26. */
  27. public void insertRows() {
  28. XSSFWorkbook wb = returnWorkBookGivenFileHandle();
  29. XSSFSheet sheet1 = wb.getSheet(sheetName);
  30. XSSFRow row = createRow(sheet1, insertStartPointer);
  31. createCell(row);
  32. saveExcel(wb);
  33. }
  34. /**
  35. * 保存工作薄
  36. * @param wb
  37. */
  38. private void saveExcel(XSSFWorkbook wb) {
  39. FileOutputStream fileOut;
  40. try {
  41. fileOut = new FileOutputStream(excelPath);
  42. wb.write(fileOut);
  43. fileOut.close();
  44. } catch (FileNotFoundException e) {
  45. e.printStackTrace();
  46. } catch (IOException e) {
  47. e.printStackTrace();
  48. }
  49. }
  50. /**
  51. * 创建要出入的行中单元格
  52. * @param row
  53. * @return
  54. */
  55. private XSSFCell createCell(XSSFRow row) {
  56. XSSFCell cell = row.createCell((short) 0);
  57. cell.setCellValue(999999);
  58. row.createCell(1).setCellValue(1.2);
  59. row.createCell(2).setCellValue("This is a string cell");
  60. return cell;
  61. }
  62. /**
  63. * 得到一个已有的工作薄的POI对象
  64. * @return
  65. */
  66. private XSSFWorkbook returnWorkBookGivenFileHandle() {
  67. XSSFWorkbook wb = null;
  68. FileInputStream fis = null;
  69. File f = new File(excelPath);
  70. try {
  71. if (f != null) {
  72. fis = new FileInputStream(f);
  73. wb = new XSSFWorkbook(fis);
  74. }
  75. } catch (Exception e) {
  76. return null;
  77. } finally {
  78. if (fis != null) {
  79. try {
  80. fis.close();
  81. } catch (IOException e) {
  82. e.printStackTrace();
  83. }
  84. }
  85. }
  86. return wb;
  87. }
  88. /**
  89. * 找到需要插入的行数,并新建一个POI的row对象
  90. * @param sheet
  91. * @param rowIndex
  92. * @return
  93. */
  94. private XSSFRow createRow(XSSFSheet sheet, Integer rowIndex) {
  95. XSSFRow row = null;
  96. if (sheet.getRow(rowIndex) != null) {
  97. int lastRowNo = sheet.getLastRowNum();
  98. sheet.shiftRows(rowIndex, lastRowNo, 1);
  99. }
  100. row = sheet.createRow(rowIndex);
  101. return row;
  102. }
  103. }

如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?的更多相关文章

  1. 使用Apache POI操作Excel文件---在已有的Excel文件中插入一行新的数据

    package org.test; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundEx ...

  2. (6) 如何用Apache POI操作Excel文件-----POI-3.10的一个和注解(comment)相关的另外一个bug

    如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug. 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插入一 ...

  3. 如何用Apache POI操作Excel文件-----如何对一个单元格加注解?

    有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就 ...

  4. 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图

    有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图 ...

  5. 利用Apache POI操作Excel

    最近在做接口,有个功能是利用Excel导入汽车发动机所需零件信息到线上系统中.简单回顾一下之前学过的用java操作Excel. 1.maven配置Apache POI pom.xml中配置POIjar ...

  6. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  7. 关于 HSSF 和 XSSF 功能的开发者入门指南 (Apache POI 操作 Excel)

    关于 HSSF 和 XSSF 功能的开发者入门指南 笔者深夜无眠,特此对本文翻译一部分,未完成部分待后续更新 本文源文地址 意欲使用 HSSF 和 XSSF 功能快熟读写电子表格?那本文就是为你而写的 ...

  8. apache POI 操作excel<导入导出>

    1.首先导入maven依赖 <!-- POI核心依赖 --> <dependency> <groupId>org.apache.poi</groupId> ...

  9. Apache POI操作pptx基本使用

    最近有一个ppt操作的需求,因此查了下相关的资料 ppt分类 (1)2007版之前的 是基于二进制的文件格式 细节没有完全公开,第三方厂商多是用单向工程方法猜测和分析出来的.WPS做得好一些,但开源的 ...

随机推荐

  1. your password has expired.to log in you must change it

    今天应用挂了,log提示密码过期.客户端连接不上. 打开mysql,执行sql语句提示密码过期 执行set password=new password('123456'); 提示成功,但客户端仍然连接 ...

  2. ASP.NET探讨:技术的学习顺序问题

    作者: シtearシ  来源: 博客园  发布时间: 2011-09-27 08:40  阅读: 7675 次  推荐: 25   原文链接   [收藏]   摘要:很多人对于ASP.NET的入门和学 ...

  3. Android成长日记-数据存储之SharedPreferences

    数据篇-SharedPreferences Android的四种存储方式 1. SharedPreferences 2. SQLite 3. Content Provider 4. File ---- ...

  4. **bootstrap常见常用样式总结

    1.水平居中 用 .text-center 类

  5. Jenkins 安装与配置

    1. 软件准备 a. 下载 jenkins.war:https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins. 本文以 Jenkins 为演示版 ...

  6. Adaline网络识别印刷体数字0到9-java实现

    本篇只给出实现的代码,下一篇将讲一讲实现的原理,及其Adline网络中的LMS算法原理. 包含两个类: package com.cgjr.com; import java.security.Diges ...

  7. poj2886(线段树求序列第k小)

    题目链接:https://vjudge.net/problem/POJ-2886 题意:n个人围成一个圈,每个人有姓名s和权值val两个属性,第一轮序号为k的人退出,并根据其val指定下一个人,val ...

  8. linux文件与目录管理笔记

    ### Linux文件与目录管理 ---------- 绝对路径: / 相对路径:不以/开头的 当前目录 . 上一个工作目录 - 用户主目录 ~ root账户的主目录是/root 其他用户是/home ...

  9. LOJ#2095 选数

    给定n,k,l,r 问从[l, r]中选出n个数gcd为k的方案数. 解:稍微一想就能想到反演,F(x)就是[l, r]中x的倍数个数的n次方. 后面那个莫比乌斯函数随便怎么搞都行,当然因为这是杜教筛 ...

  10. html5-文本属性

    /*p{color: red;width: 50%;text-align: center;background: blue;}p{text-align: end;}p{text-align: end; ...