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

原创 2015年05月28日 23:15:20

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class CreatRowTest {
	//当前文件已经存在
	private String excelPath = "D:\\exceltest\\comments.xlsx";
	//从第几行插入进去
	private int insertStartPointer = 3;
	//在当前工作薄的那个工作表单中插入这行数据 
	private String sheetName = "Sheet1";

	/**
	 * 总的入口方法
	 */
	public static void main(String[] args) {
		CreatRowTest crt = new CreatRowTest();
		crt.insertRows();
	}
	/**
	 * 在已有的Excel文件中插入一行新的数据的入口方法
	 */
	public void insertRows() {
		XSSFWorkbook wb = returnWorkBookGivenFileHandle();
		XSSFSheet sheet1 = wb.getSheet(sheetName);
		XSSFRow row = createRow(sheet1, insertStartPointer);
		createCell(row);
		saveExcel(wb);

	}
    /**
     * 保存工作薄
     * @param wb
     */
	private void saveExcel(XSSFWorkbook wb) {
		FileOutputStream fileOut;
		try {
			fileOut = new FileOutputStream(excelPath);
			wb.write(fileOut);
			fileOut.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
    /**
     * 创建要出入的行中单元格
     * @param row
     * @return
     */
	private XSSFCell createCell(XSSFRow row) {
		XSSFCell cell = row.createCell((short) 0);
		cell.setCellValue(999999);
		row.createCell(1).setCellValue(1.2);
		row.createCell(2).setCellValue("This is a string cell");
		return cell;
	}
   /**
    * 得到一个已有的工作薄的POI对象
    * @return
    */
	private XSSFWorkbook returnWorkBookGivenFileHandle() {
		XSSFWorkbook wb = null;
		FileInputStream fis = null;
		File f = new File(excelPath);
		try {
			if (f != null) {
				fis = new FileInputStream(f);
				wb = new XSSFWorkbook(fis);
			}
		} catch (Exception e) {
			return null;
		} finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return wb;
	}
   /**
    * 找到需要插入的行数,并新建一个POI的row对象
    * @param sheet
    * @param rowIndex
    * @return
    */
	private XSSFRow createRow(XSSFSheet sheet, Integer rowIndex) {
		XSSFRow row = null;
		if (sheet.getRow(rowIndex) != null) {
			int lastRowNo = sheet.getLastRowNum();
			sheet.shiftRows(rowIndex, lastRowNo, 1);
		}
		row = sheet.createRow(rowIndex);
		return row;
	}

	

}


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chancein007/article/details/46137277

POI ,Java 操作 Excel 实现行的插入(insert row)

POI ,Java 操作 Excel 实现行的插入(insert row)前几天,正在做一个项目,主要用 POI 来操作 Excel 其中,要使用一个,插入功能。主要是因为从数据库,返回结果集(数据明...
  • daemon_boy
  • daemon_boy
  • 2007-09-15 15:33:00
  • 10684

POI实现插入行

最近用POI实现根据模板导出excel,需要从中间行插入查询到的数据但是用creatRow生成的数据会覆盖后面的模板内容查了API没有找到插入行的方法不过找到shiftRows方法将最后的空行移到需要...
  • xiangliling
  • xiangliling
  • 2012-10-22 11:00:13
  • 1692

java操作excel在开始位置添加一列

首先说一下,我用的JXL(JXL比较简单,但是没有POI功能强大): 没有什么直接的方法可以实现这个功能,我用的是把原先的excel中的内容取出来,放入新的excel,但是从第二列开始存放,从而达到效...
  • JavaSYC
  • JavaSYC
  • 2016-11-12 16:36:05
  • 1831

java poi操作excel文件 (新建Excel文件 添加行列、单元格

摘自:http://yuncode.net/code/c_50ae4105b8e0d55
  • wushuang5566110
  • wushuang5566110
  • 2015-11-12 14:48:15
  • 6268

利用poi操作execl添加行和列

package test; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.us...
  • u010623759
  • u010623759
  • 2017-08-25 11:42:05
  • 99

java利用poi创建excel文件并写入数据

//定义表头 String[] title={"序号","姓名","年龄"}; //创建excel工作簿 HSSFWorkbook workbook=new HSSFWorkbook(); //创建工...
  • qq_33685734
  • qq_33685734
  • 2017-08-31 09:56:21
  • 2534

POI实现导入多sheet表excel实现

在项目中导入导出Excel是一件很平常的事情,采用的技术也有很多种:比如有JXL 还有POI。 下面大概介绍一下这两个开源的产品,也做一个比较: jxl是一个韩国人写的java操作...
  • qq_30641447
  • qq_30641447
  • 2016-11-23 00:17:24
  • 3687

java 向已存在的excel中追加数据

所需要的poi的jar包   import java.io.FileInputStream; import java.io.FileOutputStream; import org...
  • goodleiwei
  • goodleiwei
  • 2012-02-10 08:54:36
  • 26952

Java POI 批量导入功能升级版

Java服务端实现数据导入功能,POI 方式导入,支持批量导入,使用Jquery,Spring-mvc,Mybatis 实现数据导入,Mybatis mapper 中的 insert sql 中使用双...
  • u014266877
  • u014266877
  • 2017-01-12 15:25:24
  • 1552

java实现excel的导入导出(poi)

java实现excel的导入导出(poi) 首先我们要知道MS excel文件由什么组成,比如说sheet(一个工作表格),表格的行,单元格,单元格格式,单元格内容格式…这些都对应着poi里面的一个...
  • IT_LOSER
  • IT_LOSER
  • 2016-11-08 09:27:36
  • 1298
收藏助手
不良信息举报
您举报文章:(2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
举报原因:
原因补充:

(最多只允许输入30个字)