一直想寫一個poi的使用的總結,話說我第一份正式工做接到的第一個工做就是當時TL讓我去整理項目的數據字典,即把內容插入到CSV上,而後把csv的內容插入到數據庫中,並且我印象極深的當時使用的就是poi。 html
今天翻之前的筆記,正好是我當時學POI的一些筆記。這裏整理一下。 java
這裏提一下,java操做excel的組件除了apache的poi,還有jexcelapi(jxl),其中poi組件的獲取地址爲poi.apache.org。 數據庫
poi組件中經常使用的類有HSSFworkbook表示一個完整的excel表格,HSSFsheet表示excel中的一個工做薄,HSSFRow表示工做薄中的一行,HSSFCell表示一個單元格 apache
下面是一個簡單的寫入的demo api
public static void main(String [] args){ try { HSSFWorkbook workbook= new HSSFWorkbook(); HSSFSheet sheet= workbook.createSheet("test"); HSSFRow row = sheet.createRow(1); HSSFCell cell= row.createCell(2); cell.setCellValue("test"); FileOutputStream os= null; os = new FileOutputStream("fisrtExcel.xls"); workbook.write(os); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); } System.out.println("ok"); }下面是一個簡單的讀取demo
try { FileInputStream file= new FileInputStream("fisrtExcel.xls"); POIFSFileSystem ts= new POIFSFileSystem(file); HSSFWorkbook wb=new HSSFWorkbook(ts); HSSFSheet sh= wb.getSheetAt(0); HSSFRow ro=null; for (int i = 0; sh.getRow(i)!=null; i++) { ro=sh.getRow(i); for (int j = 0; ro.getCell(j)!=null; j++) { System.out.print(ro.getCell(j)+""); } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } System.out.println("ok");下面是幾個經常使用的api
//使用公式 cell2.setCellFormula("B2"); //設置列寬 sheet.setColumnWidth(columnIndex, width); //設置行高 row.setHeight(height); //設這樣式: HSSFFont font= workbook.createFont(); font.setFontHeightInPoints(height); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("黑體"); HSSFCellStyle style= workbook.createCellStyle(); style.setFont(font); //style能夠設置對齊樣式,邊框,和格式化日期。 cell.setCellStyle(style); //合併單元格 sheet.addMergedRegion(region);
咱們以前提到了一個jxl的使用。當時在網上也找到了一個使用的demo,能夠參考這裏: excel
public static void main(String [] args){ try { WritableWorkbook wwb = null; //首先要使用Workbook類的工廠方法建立一個可寫入的工做薄(Workbook)對象 wwb = Workbook.createWorkbook(new File("jxlexcel")); if(wwb!=null){ //建立一個可寫入的工做表 WritableSheet ws = wwb.createSheet("sheet1", 0); for(inti=0;i<10;i++){ for(intj=0;j<5;j++){ Label labelC = new Label(j, i, "這是第"+(i+1)+"行,第"+(j+1)+"列"); ws.addCell(labelC); } } wwb.write(); wwb.close(); } } catch (Exception e) { e.printStackTrace(); } System.out.println("ok"); }對於更復雜的內容這裏有幾個參考文檔:
http://www.newxing.com/Tech/Java/Web/Excel_186.html code
http://www.yesky.com/18/1886018.shtml orm
總結一下,poi的使用比較簡單,主要是寫入和讀取的時候計算好讀取的位置。並且如今項目中已經封裝了一個現成的類,幾乎幾行代碼就能夠把結果輸出到一個excel中並提供下載,PS:很懷念剛工做時的那段日子。 htm