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. html表格导出Excel的一点经验心得(转载)

    最近在做统计功能,要求统计结果(表格)既能查看(BS系统,在浏览器查看),又能输出为excel文件.对于输出excel文件,在网上找到n种方案,因为还需查看,最终选择了统计结果输出为table,查看时 ...

  2. mysql5.6与mysql5.5不同

    1.编译阶段 要明白with与without的区别,选项值分1和0,或者对应为on或off,代表支持与不支持:with的1(on)与without的0(off)是同样的,with的0(off)与wit ...

  3. Android学习笔记①——安卓工具的基本安装

    安卓已经出来很长时间了,网上的教程也有很多,怕以后忘记,就把网上大牛们的分享的知识自己在学习一下,也记录一下,如果能帮到别人,那是更好不过的! 鉴于现在的IDE工具来说,IDEA已经占据了java的半 ...

  4. Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量。

    myeclipse和eclipse集成编译软件,都提供了一个快捷键用来批量重命名变量:Alt+Shift+R组合键,用来在一个java文件中批量的重命名变量.扩展知识:如果想要重命名文件名,又不想手动 ...

  5. WIFI 基础知识

    转载自:wifi基本知识 如侵犯您的版权,请联系:2378264731@qq.com 1. IE802.11简介 标准号 IEEE 802.11b IEEE 802.11a IEEE 802.11g ...

  6. L159

    Waves are the children of the struggle between ocean and atmosphere, the ongoing signatures of infin ...

  7. 使用lets encrypt证书加密

    1    git clone https://github.com/letsencrypt/letsencrypt 2     ./letsencrypt-auto certonly -d 域名

  8. 将EasyRTMP_RTSP移植到Android平台实现的RTSP拉流转推RTMP直播流功能

    本文转自EasyDarwin开源团队成员Kim的博客:http://blog.csdn.net/jinlong0603/article/details/73253044 前言 安防互联网化的需求已经越 ...

  9. 读文件名,shell

    参考文献:(忘了哪个笔记了)http://www.docin.com/p-871820919.html

  10. 【剑指offer】字符串转换为数字,C++实现

    # 题目 把字符串转换成整数 # 思路 1.功能测试 正数/复数/0 2.边界值测试 最大的正整数/最小的负整数(数据上下溢出) 3.特殊输入测试 空字符串""的处理,返回0,设置 ...