1. 程式人生 > 其它 >java生成 excel,動態向excel追加資料

java生成 excel,動態向excel追加資料

技術標籤:javaweb開發

public class ExcelFile {

//第一次寫入



public static void createExcel(Map<String, Object>map,OutputStream os) throws WriteException,IOException{



    int n = 0;

    int m = 0;

    //建立工作薄

    WritableWorkbook workbook = Workbook.createWorkbook(os);



    //建立新的一頁

    WritableSheet sheet =
workbook.createSheet("First Sheet",0); //建立要顯示的內容,建立一個單元格,第一個引數為列座標,第二個引數為行座標,第三個引數為內容 for (String key : map.keySet()) { Label dk = new Label(n,0,key); sheet.addCell(dk); n++; } for (Object value : map.values()) { Label dk = new
Label(m,1,value.toString()); sheet.addCell(dk); m++; } //把建立的內容寫入到輸出流中,並關閉輸出流 workbook.write(); workbook.close(); os.close(); } //向excel中追加資料[email protected]:excel所在路徑,list:資料集合.(第2,3,4,5,6.....次寫入 public static void addExcel(String excelPath,List<
Object> list ) throws IOException{ FileInputStream fs = new FileInputStream(excelPath);//獲取excel POIFSFileSystem ps = new POIFSFileSystem(fs);//獲取excel資訊 HSSFWorkbook wb = new HSSFWorkbook(ps); HSSFSheet sheet = wb.getSheetAt(0);//獲取工作表 HSSFRow row = sheet.getRow(0);//獲取第一行(即:欄位列頭,便於賦值) System.out.println(sheet.getLastRowNum()+"空"+row.getLastCellNum());//分別得到最後一行行號,和一條記錄的最後一個單元格 FileOutputStream out = new FileOutputStream(excelPath);//向excel中新增資料 row = sheet.createRow(sheet.getLastRowNum()+1);//在現有行號後追加資料 for (int i = 0; i < list.size(); i++) { String str = String.valueOf(list.get(i)); row.createCell(i).setCellValue(str);//設定單元格的資料 } out.flush(); wb.write(out); wb.close(); }

)
}