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

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

[java] view plain copy

  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. }
时间: 2024-12-09 03:44:24

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

(2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?

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

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

如果POI-3.10往一个工作表(sheet)里面插入数据的话,需要注意了,其有一个不太被容易发现的bug. 被插入的工作表(sheet)里面的单元格没有包含任何的注解(comment)的时候,插入一行数据,不会有任何问题.但是如果被插入的工作表(sheet)里面的单元格只要包含任何的注解(comment)的时候,这个时候插入一行数据的时候,就会破坏这个文件.当程序执行完后,如果打开被插入数据的Excel文件,我们将会发现,其会弹出下面的对话框. 程序代码如下, package com.tibc

(5) 如何用Apache POI操作Excel文件-----发现Apache的POI的Bug后,如何给Apache的POI报Bug?

在我上篇文章中,(4) 如何用Apache POI操作Excel文件-----发现了POI-3.12一个回归,通过测试POI-3.12的版本,我发现了一个bug,那么发现bug后,该如何处理.我们有2种处理方式,首先我们到Apache POI的bug库里面搜索,看别人有没有创建类似的bug,如果有创建的,这个是最好的结果,我们只需要关注这个bug什么时候被修复.如果没有搜索不到,这个时候我们就需要给Apache POI报bug了.那么,如何给Apache报Bug? 第一步: 打开https://

(1) 如何用Apache POI操作Excel文件-----入门

Apache POI项目的目标就是可以用Java API来创建和维护各种Office文件(MS Word,MS PowerPoint和MS Excel). 本系列文章主要是针对Excel文件的操作.对于Excel的操作,Apache POI提供两种模型:HSSF和XSSF. 其区别,请参考下面的图1.截止到2015年5月28日,当前的最新版本是3.12. 具体信息,我们可以访问其官方网站:http://poi.apache.org/ 1.下面是用Apache POI创建一个工作薄的基本的代码 i

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

有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就用Apache POI官方提供的例子,然后加上一些注解,给大家看一下.本例子的测试代码是基于POI-3.12的. 执行完后,将会生成上图所示的Excel工作表单(sheet) [java] view plain copy import org.apache.poi.ss.usermodel.*; i

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

有的时候,我们需要通过操作Apache POI,在生成Cell数据的同时,能对其生成的Cell,加上注解(comments),类似于下面的. 那么对于这种情况,我们的代码应该如何写呢? 借花献佛,我就用Apache POI官方提供的例子,然后加上一些注解,给大家看一下.本例子的测试代码是基于POI-3.12的. 执行完后,将会生成上图所示的Excel工作表单(sheet) import org.apache.poi.ss.usermodel.*; import org.apache.poi.xs

(7) 如何用Apache POI操作Excel文件-----如何用Apache POI 画一个离散图

有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图的.下面是一个最终的效果图.然后分别给大家解释每段代码的作用和意义. 代码如下, import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.*; impor

(4) 如何用Apache POI操作Excel文件-----发现了POI-3.12一个回归bug

好不容易盼望POI-3.12的最终版本能出来,这个月终于出来,于是先堵为快,从这个的地址(https://poi.apache.org/download.html#POI-3.12)下载最新的POI-3.12版本. 然后,跑了一个程序,对一个Excel的第一个单元格(A0)加上注解(comments),不幸的是,其抛出了下面的错误, Exception in thread "main" java.lang.IllegalArgumentException: Multiple cell

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

有的时候,我们需要Excel中的数据,通过一个图画,可视化的表现出来. 那么这个时候,应该如何做呢?现在就借花献佛,以Apache POI自己提供的一个例子为例,给大家演示一下POI的API 如何画图的.下面是一个最终的效果图.然后分别给大家解释每段代码的作用和意义. 代码如下, [java] view plain copy import java.io.FileOutputStream; import org.apache.poi.ss.usermodel.*; import org.apac