(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;
	}

	

}


版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

POI实现插入行

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

java POI 实现导出excel增加行

http://hi.baidu.com/xiangliling/item/8bacc20f4d8d2fe2f45ba638 POI实现插入行 最近用POI实现根据模...
  • yixiaotian1988
  • yixiaotian1988
  • 2012年07月05日 14:17
  • 6599

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

摘自:http://yuncode.net/code/c_50ae4105b8e0d55
  • wushuang5566110
  • wushuang5566110
  • 2015年11月12日 14:48
  • 5539

关于在文件开头添加一行内容的Java编程

首先这个问题是由于我要导入《Java编程思想》的源码所引入的。我尝试用mindview.net上所叙述的方式去build,没能成功;就先把代码直接导入项目中,然后调错。遇到的错误大都是package没...
  • ls0111
  • ls0111
  • 2017年05月22日 11:41
  • 1124

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

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

jxl 生成excel文件 采用模板 动态插入行

/* * tempPath: excel模板文件路径(包含文件名) * dataForm: 数据对象 * saveFilePath: 生成完excel文件后保存的路径(包含文件名) */ pri...
  • qq_25280443
  • qq_25280443
  • 2017年12月13日 16:53
  • 46

jxl对excel删除行

简单记录下: package com.pingan; import java.io.File; import java.util.regex.Matcher; import java.util...
  • kanlianhui
  • kanlianhui
  • 2012年03月16日 17:48
  • 3785

Java利用poi对word插入文字图片

  • 2017年04月13日 10:19
  • 7.26MB
  • 下载

poi方式写入数据到Excel

在java数据库编程中,常常会用到向excel中读写数据,一方面可以将数据从数据库导出到Excel,进行数据展示,另一方面可以批量的向数据库插入多条数据,这对于软件开发是必不可少的,今天先介绍如何使用...
  • toto1297488504
  • toto1297488504
  • 2014年05月26日 09:05
  • 5244
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(2) 如何用Apache POI操作Excel文件-----如何在已有的Excel文件中插入一行新的数据?
举报原因:
原因补充:

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