JAVA使用POI操做excel

一直想寫一個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

相關文章
相關標籤/搜索