java 向已存在的excel中追加資料
阿新 • • 發佈:2019-01-27
package createExcel; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class AddExcel { public static void main(String[] args) throws Exception { FileInputStream fs=new FileInputStream(System.getProperty("user.dir") + "\\head.xls"); //獲取head.xls POIFSFileSystem ps=new POIFSFileSystem(fs); //使用POI提供的方法得到excel的資訊 HSSFWorkbook wb=new HSSFWorkbook(ps); HSSFSheet sheet=wb.getSheetAt(0); //獲取到工作表,因為一個excel可能有多個工作表 HSSFRow row=sheet.getRow(0); //獲取第一行(excel中的行預設從0開始,所以這就是為什麼,一個excel必須有欄位列頭),即,欄位列頭,便於賦值 System.out.println(sheet.getLastRowNum()+" "+row.getLastCellNum()); //分別得到最後一行的行號,和一條記錄的最後一個單元格 FileOutputStream out=new FileOutputStream(System.getProperty("user.dir") + "\\head.xls"); //向head.xls中寫資料 row=sheet.createRow((short)(sheet.getLastRowNum()+1)); //在現有行號後追加資料 row.createCell(0).setCellValue("hello"); //設定第一個(從0開始)單元格的資料 row.createCell(1).setCellValue(1); //設定第二個(從0開始)單元格的資料 out.flush(); wb.write(out); out.close(); System.out.println(row.getPhysicalNumberOfCells()+" "+row.getLastCellNum()); } }