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

package com.csair.oas.utils.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 = "D:\\code\\oasdata\\相关航线导入\\数据导出\\query-impala-32273.xlsx";
    //从第几行插入进去  
    private int insertStartPointer = 0;
    //在当前工作薄的那个工作表单  (sheet页名称)
    private String sheetName = "sheet";
  
    /** 
     * 总的入口方法 
     */  
    public static void main(String[] args) {  
        PoiTesst crt = new PoiTesst();
        //用for添加多个行
        //for(int i=0;i<3;i++) {
            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("string");
         row.createCell(1).setCellValue("string");
         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;  
    }  

  
      
  
}

转发:https://www.cnblogs.com/sunhaoyu/p/7672630.html

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

上一篇:json数据key值的大小写问题


下一篇:.NET性能调优 ---- 使用Visual Studio进行代码度量