posts - 5,  comments - 7,  trackbacks - 0

          讀取和重寫 Workbooks

              

           1POIFSFileSystem fs      =
           2
           3            new POIFSFileSystem(new FileInputStream("workbook.xls"));
           4
           5    HSSFWorkbook wb = new HSSFWorkbook(fs);
           6
           7    HSSFSheet sheet = wb.getSheetAt(0);
           8
           9    HSSFRow row = sheet.getRow(2);
          10
          11    HSSFCell cell = row.getCell((short)3);
          12
          13    if (cell == null)
          14
          15        cell = row.createCell((short)3);
          16
          17    cell.setCellType(HSSFCell.CELL_TYPE_STRING);
          18
          19    cell.setCellValue("a test");
          20
          21    // 寫入文件
          22
          23    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          24
          25    wb.write(fileOut);
          26
          27    fileOut.close();
          28
          29

                             

          在單元格中換行

             

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet s = wb.createSheet();
           4
           5    HSSFRow r = null;
           6
           7    HSSFCell c = null;
           8
           9    HSSFCellStyle cs = wb.createCellStyle();
          10
          11    HSSFFont f = wb.createFont();
          12
          13    HSSFFont f2 = wb.createFont();
          14
          15    cs = wb.createCellStyle();
          16
          17    cs.setFont( f2 );
          18
          19    //開啟Word Wrap
          20
          21    cs.setWrapText( true );
          22
          23    r = s.createRow( (short2 );
          24
          25    r.setHeight( (short0x349 );
          26
          27    c = r.createCell( (short2 );
          28
          29    c.setCellType( HSSFCell.CELL_TYPE_STRING );
          30
          31    c.setCellValue( "Use "n with word wrap on to create a new line" );
          32
          33    c.setCellStyle( cs );
          34
          35    s.setColumnWidth( (short2, (short) ( ( 50 * 8 ) / ( (double1 / 20 ) ) );
          36
          37    FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );
          38
          39    wb.write( fileOut );
          40
          41    fileOut.close();
          42
          43

          數據格式化

             

           1 HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("format sheet");
           4
           5    HSSFCellStyle style;
           6
           7    HSSFDataFormat format = wb.createDataFormat();
           8
           9    HSSFRow row;
          10
          11    HSSFCell cell;
          12
          13    short rowNum = 0;
          14
          15    short colNum = 0;
          16
          17    row = sheet.createRow(rowNum++);
          18
          19    cell = row.createCell(colNum);
          20
          21    cell.setCellValue(11111.25);
          22
          23    style = wb.createCellStyle();
          24
          25    style.setDataFormat(format.getFormat("0.0"));
          26
          27    cell.setCellStyle(style);
          28
          29    row = sheet.createRow(rowNum++);
          30
          31    cell = row.createCell(colNum);
          32
          33    cell.setCellValue(11111.25);
          34
          35    style = wb.createCellStyle();
          36
          37    style.setDataFormat(format.getFormat("#,##0.0000"));
          38
          39    cell.setCellStyle(style);
          40
          41    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          42
          43    wb.write(fileOut);
          44
          45    fileOut.close();
          46
          47

                             

          使得一個Sheet適合一頁

              

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("format sheet");
           4
           5    HSSFPrintSetup ps = sheet.getPrintSetup();
           6
           7    sheet.setAutobreaks(true);
           8
           9    ps.setFitHeight((short)1);
          10
          11ps.setFitWidth((short)1);
          12
          13    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          14
          15    wb.write(fileOut);
          16
          17    fileOut.close();
          18
          19

                             

          設置打印區域

              

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("Sheet1");
           4
           5    wb.setPrintArea(0"$A$1:$C$2");
           6
           7    //為第一個Sheet頁設置打印區域
           8
           9    //也可以這樣
          10
          11    //wb.setPrintArea(0, 0, 1, 0, 0) ,詳細參考java doc
          12
          13    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          14
          15    wb.write(fileOut);
          16
          17    fileOut.close();        
          18

                     

          設置頁腳的頁數

             

           1 HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("format sheet");
           4
           5    HSSFFooter footer = sheet.getFooter()
           6
           7    footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );
           8
           9    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          10
          11    wb.write(fileOut);
          12
          13    fileOut.close();
          14
          15

                             

          使用簡便的函數

          這些函數保存在contrib并且提供了一些使用特征功能,例如設置合并單元格的邊框,不用創建新樣式改變樣式屬性。

              

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet1 = wb.createSheet( "new sheet" );
           4
           5    // 合并單元格
           6
           7    HSSFRow row = sheet1.createRow( (short1 );
           8
           9    HSSFRow row2 = sheet1.createRow( (short2 );
          10
          11    HSSFCell cell = row.createCell( (short1 );
          12
          13    cell.setCellValue( "This is a test of merging" );
          14
          15    Region region = new Region( 1, (short14, (short4 );
          16
          17    sheet1.addMergedRegion( region );
          18
          19    // 設置邊框和顏色.
          20
          21    final short borderMediumDashed = HSSFCellStyle.BORDER_MEDIUM_DASHED;
          22
          23    HSSFRegionUtil.setBorderBottom( borderMediumDashed,
          24
          25        region, sheet1, wb );
          26
          27    HSSFRegionUtil.setBorderTop( borderMediumDashed,
          28
          29        region, sheet1, wb );
          30
          31    HSSFRegionUtil.setBorderLeft( borderMediumDashed,
          32
          33        region, sheet1, wb );
          34
          35    HSSFRegionUtil.setBorderRight( borderMediumDashed,
          36
          37        region, sheet1, wb );
          38
          39    HSSFRegionUtil.setBottomBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
          40
          41    HSSFRegionUtil.setTopBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
          42
          43    HSSFRegionUtil.setLeftBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
          44
          45    HSSFRegionUtil.setRightBorderColor(HSSFColor.AQUA.index, region, sheet1, wb);
          46
          47    // 展示HSSFCellUtil類的用法
          48
          49    HSSFCellStyle style = wb.createCellStyle();
          50
          51    style.setIndention((short)4);
          52
          53    HSSFCellUtil.createCell(row, 8"This is the value of the cell", style);
          54
          55    HSSFCell cell2 = HSSFCellUtil.createCell( row2, 8"This is the value of the cell");
          56
          57    HSSFCellUtil.setAlignment(cell2, wb, HSSFCellStyle.ALIGN_CENTER);
          58
          59    // 寫入文件
          60
          61    FileOutputStream fileOut = new FileOutputStream( "workbook.xls" );
          62
          63    wb.write( fileOut );
          64
          65    fileOut.close();
          66
          67

                             

          在Sheet頁中上下移動行

             

           1 HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("row sheet");
           4
           5    //創建不同的行列
           6
           7    // 將6-11行移動到0-5行
           8
           9    sheet.shiftRows(510-5);
          10
          11    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          12
          13    wb.write(fileOut);
          14
          15    fileOut.close();
          16
          17

                             

          設置一個Sheet頁為被選中的

              

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("row sheet");
           4
           5    sheet.setSelected(true);
           6
           7    // 創建不同的行列。。。
           8
           9    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          10
          11    wb.write(fileOut);
          12
          13    fileOut.close();
          14
          15

                             

          設置放大屬性

           

           1The zoom is expressed as a fraction. For example to express a zoom of 75% use 3 for the numerator and 4 for the denominator. 
           2
           3Zoom被明確為一個分數,例如下面的75%使用3作為分子,4作為分母。
           4
           5    HSSFWorkbook wb = new HSSFWorkbook();
           6
           7    HSSFSheet sheet1 = wb.createSheet("new sheet");
           8
           9    sheet1.setZoom(3,4);   // 75%放大
          10
          11    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          12
          13    wb.write(fileOut);
          14
          15    fileOut.close();
          16

           

                             

          拆分和凍結窗口

          這里有你創建的兩種窗口:凍結窗口和拆分窗口。

          一個凍結窗口是被行和列拆分開的,可以按照如下設置創建凍結窗口。

           

          1sheet1.createFreezePane( 3232 ); 

           

          前兩個參數是你要用來拆分的列數和行數。后兩個參數是下面窗口的可見象限,其中第三個參數是右邊區域可見的左邊列數,第四個參數是下面區域可見的首行。

          拆分可以將區域分成四個工作區。拆分發生在像素級別而且用戶可以通過拖拽到新的位置來判斷。

          用如下方式拆分窗口:

           

          1sheet2.createSplitPane( 2000200000, HSSFSheet.PANE_LOWER_LEFT ); 

           

          The first parameter is the x position of the split. This is in 1/20th of a point. A point in this case seems to equate to a pixel. The second parameter is the y position of the split. Again in 1/20th of a point.

          第一個參數是拆分的x位置。這里單位是一個點的1/20,在這種比例下點看起來是一個像素。第二個參數是拆分的y位置,也是一個點的1/20。第三、四個參數同上。最后一個參數說明當前哪個窗口有焦點,四個選擇HSSFSheet.PANE_LOWER_LEFT, PANE_LOWER_RIGHT, PANE_UPPER_RIGHT or PANE_UPPER_LEFT。

                                

          反復的行和列(設置打印標題)

          在打印輸出的時候需要使用HSSFWorkbook類的setRepeatingRowsAndColumns()方法反復的設置行和列。

          這個方法包含5個參數,第一個參數是Sheet頁的索引(從0開始算),第二、三個參數是重寫的列的范圍。不使用重寫功能的話可以設置-1代替。第四、五個參數是重寫的行的范圍。不使用重寫功能的話可以設置-1代替。

              

           1HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet1 = wb.createSheet("new sheet");
           4
           5    HSSFSheet sheet2 = wb.createSheet("second sheet");
           6
           7    // 第一個Sheet設置從0到2的列
           8
           9    wb.setRepeatingRowsAndColumns(0,0,2,-1,-1);
          10
          11    // 第二個Sheet設置行和列
          12
          13    wb.setRepeatingRowsAndColumns(1,4,5,1,2);
          14
          15    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          16
          17    wb.write(fileOut);
          18
          19    fileOut.close();
          20
          21

                             

          頁眉和頁腳

          這是個頁眉的例子,但是頁腳也同樣適用.

             

           1 HSSFWorkbook wb = new HSSFWorkbook();
           2
           3    HSSFSheet sheet = wb.createSheet("new sheet");
           4
           5    HSSFHeader header = sheet.getHeader();
           6
           7    header.setCenter("Center Header");
           8
           9    header.setLeft("Left Header");
          10
          11    header.setRight(HSSFHeader.font("Stencil-Normal""Italic"+
          12
          13                    HSSFHeader.fontSize((short16+ "Right w/ Stencil-Normal Italic font and size 16");
          14
          15    FileOutputStream fileOut = new FileOutputStream("workbook.xls");
          16
          17    wb.write(fileOut);
          18
          19    fileOut.close();
          posted on 2008-11-25 12:01 Vincent-chen 閱讀(1196) 評論(0)  編輯  收藏 所屬分類: POIPrint
          主站蜘蛛池模板: 佛坪县| 平利县| 溧阳市| 南丹县| 台南县| 南雄市| 青浦区| 留坝县| 平山县| 新丰县| 甘泉县| 巴楚县| 喀喇沁旗| 襄城县| 遂川县| 宝山区| 包头市| 汤原县| 商都县| 明光市| 克什克腾旗| 田林县| 高邮市| 东辽县| 西城区| 平武县| 林甸县| 炉霍县| 宝鸡市| 瑞昌市| 宁晋县| 陆河县| 巨鹿县| 京山县| 比如县| 尼勒克县| 云阳县| 财经| 青海省| 焉耆| 东光县|