package org.test;

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 PoiTesst {
//当前文件已经存在
private String excelPath = "F:\\123abcdefg.xlsx";
//从第几行插入进去
private int insertStartPointer = 3;
//在当前工作薄的那个工作表单 (sheet页名称)
private String sheetName = "sheet1"; /**
* 总的入口方法
*/
public static void main(String[] args) {
PoiTesst crt = new PoiTesst();
crt.insertRows();
} /**
* 在已有的Excel文件中插入一行新的数据的入口方法
*/
public void insertRows() {
XSSFWorkbook wb = returnWorkBookGivenFileHandle();
XSSFSheet sheet1 = wb.getSheet(sheetName);
XSSFRow row = createRow(sheet1, insertStartPointer);
createCell(row);
saveExcel(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;
} /**
* 创建要出入的行中单元格
* @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;
} /**
* 保存工作薄
* @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();
} } /**
* 得到一个已有的工作薄的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;
} }

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

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

    在POI的第一节入门中,我们提供了两个简单的例子,一个是如何用Apache POI新建一个工作薄,另外一个例子是,如果用Apache POI新建一个工作表.那么在这个章节里面,我将会给大家演示一下,如 ...

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

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

  3. 利用Apache POI操作Excel

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

  4. Java下使用Apache POI生成具有三级联动下拉列表的Excel文档

    使用Apache POI生成具有三级联动下拉列表的Excel文档: 具体效果图与代码如下文. 先上效果图: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心业务处理): 此部分包含几个方面: ...

  5. 将文件从已Root Android手机中copy出来的几个cmd窗口命令

    将文件从已Root Android手机中copy出来的几个cmd窗口命令: 以shell身份登录adbadb shell进入adb后切换至root用户su更改文件的所属chown shell *更改文 ...

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

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

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

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

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

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

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

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

随机推荐

  1. Spring入门2. IoC中装配Bean

    Spring入门2. IoC中装配Bean 20131125 前言: 上一节学习了Spring在JavaProject中的配置,通过配置文件利用BeanFactory和ApplicationConte ...

  2. 同一主机,不同域名绑定不同网站(IIS主机头实现方法)

    说明: 网站A域名:www.weba.com 网站A路径:D:\website\weba 网站B域名:www.webb.com 网站B路径:D:\website\webb 公用主机IP:111.222 ...

  3. Jqeury ajax 调用C#的后台程序

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="JQueryTest.aspx. ...

  4. Java类的finalize()方法

    Java的Object类提供了一个finalize()方法,签名如下: protected void finalize() throws Throwable { } 该方法在JVM进行垃圾回收时之行, ...

  5. PostgreSQL提升为主库 时间线加一的问题

    在使用PostgreSQL高可用集群过程中发现一个很难解决的问题,先记录在这里. 我们知道在PG流复制集群中,如果主库死掉了,备库要提升为主库有两种方法: 1)pg_ctl promote 2)创建对 ...

  6. live555源码分析

    live555源代码下载(VC6工程):http://download.csdn.net/detail/leixiaohua1020/6374387 liveMedia 项目(http://www.l ...

  7. ImportError: liblapack.so.3: cannot open shared object file问题

    问题: 安装完tensorflow后,在终端输入: python import cv2 出现如下错误: ImportError: liblapack.so.3: cannot open shared ...

  8. StringUtils.isEmpty和StringUtils.isBlank的区别

    两个方法都是判断字符是否为空的.前者是要求没有任何字符,即str==null 或 str.length()==0:后者要求是空白字符,即无意义字符.其实isBlank判断的空字符是包括了isEmpty ...

  9. CUDA Samples: ripple

    以下CUDA sample是分别用C++和CUDA实现的生成的波纹图像,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第五章,各个文件内容如下 ...

  10. boost库之udp广播实例

    //UdpLinkServer.h //udp服务 #pragma once #include <boost/asio/ip/tcp.hpp> #include <boost/asi ...