posts - 22, comments - 17, trackbacks - 0, articles - 15
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          POI 搞excell

          Posted on 2006-12-18 10:36 碼農cz 閱讀(612) 評論(0)  編輯  收藏 所屬分類: As u

          1、遍歷workbook

          代碼
          1. //?load源文件 ??
          2. POIFSFileSystem?fs?=? new ?POIFSFileSystem( new ?FileInputStream(filePath)); ??
          3. HSSFWorkbook?wb?=? new ?HSSFWorkbook(fs); ??
          4. for ?( int ?i?=? 0 ;?i?<?wb.getNumberOfSheets();?i++)?{ ??
          5. ????HSSFSheet?sheet?=?wb.getSheetAt(i); ??
          6. ???? for ?( int ?i?=?sheet.getFirstRowNum();?i?<?sheet.getLastRowNum();?i?++)?{ ??
          7. ????HSSFRow?row?=?sheet.getRow(i); ??
          8. ???????????? if ?(row?!=? null )?{ ??
          9. ????????。。。操作} ??
          10. ???????} ??
          11. ?????} ??
          12. //?目標文件 ??
          13. FileOutputStream?fos?=? new ?FileOutputStream(objectPath); ??
          14. //寫文件 ??
          15. swb.write(fos); ??
          16. fos.close();??

          2、得到列和單元格

          代碼
          1. HSSFRow?row?=?sheet.getRow(i); ??
          2. HSSFCell?cell?=?row.getCell(( short )?j);??

          3、設置sheet名稱和單元格內容為中文

          代碼
          1. wb.setSheetName(n,? "中文" ,HSSFCell.ENCODING_UTF_16);???? ??
          2. cell.setEncoding(( short )? 1 ); ??
          3. cell.setCellValue( "中文" );??

          4、單元格內容未公式或數值,可以這樣讀寫

          代碼
          1. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); ??
          2. cell.getNumericCellValue()??


          5、設置列寬、行高

          代碼
          1. sheet.setColumnWidth(( short )column,( short )width); ??
          2. row.setHeight(( short )height);??


          6、添加區域,合并單元格

          代碼
          1. Region?region?=? new ?Region(( short )rowFrom,( short )columnFrom,( short )rowTo,( short )columnTo); ??
          2. sheet.addMergedRegion(region); ??
          3. //得到所有區域 ??
          4. sheet.getNumMergedRegions()??

          7、常用方法
          根據單元格不同屬性返回字符串數值

          代碼
          1. public ?String?getCellStringValue(HSSFCell?cell)?{ ??
          2. ????????String?cellValue?=? "" ; ??
          3. ???????? switch ?(cell.getCellType())?{ ??
          4. ???????? case ?HSSFCell.CELL_TYPE_STRING: ??
          5. ????????????cellValue?=?cell.getStringCellValue(); ??
          6. ???????????? if (cellValue.trim().equals( "" )||cellValue.trim().length()<= 0 ) ??
          7. ????????????????cellValue= "?" ; ??
          8. ???????????? break ; ??
          9. ???????? case ?HSSFCell.CELL_TYPE_NUMERIC: ??
          10. ????????????cellValue?=?String.valueOf(cell.getNumericCellValue()); ??
          11. ???????????? break ; ??
          12. ???????? case ?HSSFCell.CELL_TYPE_FORMULA: ??
          13. ????????????cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); ??
          14. ????????????cellValue?=?String.valueOf(cell.getNumericCellValue()); ??
          15. ???????????? break ; ??
          16. ???????? case ?HSSFCell.CELL_TYPE_BLANK: ??
          17. ????????????cellValue= "?" ; ??
          18. ???????????? break ; ??
          19. ???????? case ?HSSFCell.CELL_TYPE_BOOLEAN: ??
          20. ???????????? break ; ??
          21. ???????? case ?HSSFCell.CELL_TYPE_ERROR: ??
          22. ???????????? break ; ??
          23. ???????? default : ??
          24. ???????????? break ; ??
          25. ????????} ??
          26. ???????? return ?cellValue; ??
          27. ????}??


          8、常用單元格邊框格式

          虛線HSSFCellStyle.BORDER_DOTTED
          實線HSSFCellStyle.BORDER_THIN

          代碼
          1. public ? static ?HSSFCellStyle?getCellStyle( short ?type) ??
          2. ????{??? ??
          3. ???????HSSFWorkbook?wb?=? new ?HSSFWorkbook(); ??
          4. ???????HSSFCellStyle?style?=?wb.createCellStyle(); ??
          5. ???????style.setBorderBottom(type); //下邊框? ??
          6. ????????style.setBorderLeft(type); //左邊框? ??
          7. ????????style.setBorderRight(type); //右邊框? ??
          8. ????????style.setBorderTop(type); //上邊框? ??
          9. ??????? return ?style; ??
          10. ????}??


          9、設置字體和內容位置

          代碼
          1. HSSFFont?f??=?wb.createFont(); ??
          2. f.setFontHeightInPoints(( short )? 11 ); //字號 ??
          3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); //加粗 ??
          4. style.setFont(f); ??
          5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //左右居中 ??
          6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //上下居中 ??
          7. style.setRotation( short ?rotation); //單元格內容的旋轉的角度 ??
          8. HSSFDataFormat?df?=?wb.createDataFormat(); ??
          9. style1.setDataFormat(df.getFormat( "0.00%" )); //設置單元格數據格式 ??
          10. cell.setCellFormula(string); //給單元格設公式 ??
          11. style.setRotation( short ?rotation); //單元格內容的旋轉的角度 ??
          12. cell.setCellStyle(style); ??


          10、插入圖片

          論壇里看到的
          代碼
          1. //先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray ??
          2. ??????ByteArrayOutputStream?byteArrayOut?=?new?ByteArrayOutputStream(); ??
          3. ??????BufferedImage?bufferImg?=?ImageIO.read(new?File("ok.jpg")); ??
          4. ??????ImageIO.write(bufferImg,"jpg",byteArrayOut); ??
          5. //讀進一個excel模版 ??
          6. FileInputStream?fos?=?new?FileInputStream(filePathName+"/stencil.xlt");? ??
          7. fs?=?new?POIFSFileSystem(fos); ??
          8. //創建一個工作薄 ??
          9. HSSFWorkbook?wb?=?new?HSSFWorkbook(fs); ??
          10. HSSFSheet?sheet?=?wb.getSheetAt(0); ??
          11. HSSFPatriarch?patriarch?=?sheet.createDrawingPatriarch(); ??
          12. HSSFClientAnchor?anchor?=?new?HSSFClientAnchor(0,0,1023,255,(short)?0,0,(short)10,10);????? ??
          13. patriarch.createPicture(anchor?,?wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));??

          最后更新:2006-10-30 20:12
          主站蜘蛛池模板: 凤翔县| 奎屯市| 凌海市| 黄大仙区| 岱山县| 德保县| 金秀| 永定县| 固镇县| 方城县| 曲阜市| 略阳县| 眉山市| 老河口市| 泾源县| 都江堰市| 新兴县| 黄冈市| 霸州市| 上林县| 邮箱| 商南县| 枝江市| 泽普县| 新余市| 贵州省| 肃宁县| 滁州市| 湄潭县| 泽普县| 云林县| 平潭县| 弥渡县| 锦屏县| 志丹县| 西乡县| 昆明市| 都昌县| 安达市| 柳河县| 阿荣旗|