1. 程式人生 > >java 向已存在的excel中追加資料

java 向已存在的excel中追加資料

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());  
	}  
}