packageorg.test;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classPoiTesst {//当前文件已经存在
private String excelPath = "F:\\123abcdefg.xlsx";//从第几行插入进去
private int insertStartPointer = 3;//在当前工作薄的那个工作表单 (sheet页名称)
private String sheetName = "sheet1";/*** 总的入口方法*/
public static voidmain(String[] args) {
PoiTesst crt= newPoiTesst();
crt.insertRows();
}/*** 在已有的Excel文件中插入一行新的数据的入口方法*/
public voidinsertRows() {
XSSFWorkbook wb=returnWorkBookGivenFileHandle();
XSSFSheet sheet1=wb.getSheet(sheetName);
XSSFRow row=createRow(sheet1, insertStartPointer);
createCell(row);
saveExcel(wb);
}/*** 找到需要插入的行数,并新建一个POI的row对象
*@paramsheet
*@paramrowIndex
*@return
*/
privateXSSFRow 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);returnrow;
}/*** 创建要出入的行中单元格
*@paramrow
*@return
*/
privateXSSFCell 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");returncell;
}/*** 保存工作薄
*@paramwb*/
private voidsaveExcel(XSSFWorkbook wb) {
FileOutputStream fileOut;try{
fileOut= newFileOutputStream(excelPath);
wb.write(fileOut);
fileOut.close();
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}
}/*** 得到一个已有的工作薄的POI对象
*@return
*/
privateXSSFWorkbook returnWorkBookGivenFileHandle() {
XSSFWorkbook wb= null;
FileInputStream fis= null;
File f= newFile(excelPath);try{if (f != null) {
fis= newFileInputStream(f);
wb= newXSSFWorkbook(fis);
}
}catch(Exception e) {return null;
}finally{if (fis != null) {try{
fis.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}returnwb;
}
}