POI操作常用方法_第1頁(yè)
POI操作常用方法_第2頁(yè)
POI操作常用方法_第3頁(yè)
POI操作常用方法_第4頁(yè)
POI操作常用方法_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、 POI簡(jiǎn)介             Apache POI是Apache軟件基金會(huì)的開(kāi)放源碼函式庫(kù),POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫(xiě)的功能。 二、 HSSF概況             HSSF 是Horrible SpreadSheet Format的縮寫(xiě),通過(guò)HSSF,你可以用純Java代碼來(lái)讀

2、取、寫(xiě)入、修改Excel文件。HSSF 為讀取操作提供了兩類API:usermodel和eventusermodel,即“用戶模型”和“事件-用戶模型”。 三、 POI EXCEL文檔結(jié)構(gòu)類             HSSFWorkbook excel文檔對(duì)象             HSSFSheet excel的sheet HSSFRow ex

3、cel的行             HSSFCell excel的單元格 HSSFFont excel字體             HSSFName 名稱 HSSFDataFormat 日期格式             HSSFHeader

4、 sheet頭             HSSFFooter sheet尾             HSSFCellStyle cell樣式             HSSFDateUtil 日期   

5、0;         HSSFPrintSetup 打印             HSSFErrorConstants 錯(cuò)誤信息表 四、 EXCEL常用操作方法 1、 得到Excel常用對(duì)象            Java代碼  1. PO

6、IFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls");     2. /得到Excel工作簿對(duì)象      3. HSSFWorkbook wb = new HSSFWorkbook(fs);    4. /得到Excel工作表對(duì)象    &

7、#160; 5. HSSFSheet sheet = wb.getSheetAt(0);     6. /得到Excel工作表的行      7. HSSFRow row = sheet.getRow(i);    8. /得到Excel工作表指定行的單元格      9. HSSFCell cell

8、0;= row.getCell(short) j);    10. cellStyle = cell.getCellStyle();/得到單元格樣式    11. POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls");   12. /得到Excel工作簿對(duì)象   13. HSSFWork

9、book wb = new HSSFWorkbook(fs);  14. /得到Excel工作表對(duì)象   15. HSSFSheet sheet = wb.getSheetAt(0);   16. /得到Excel工作表的行   17. HSSFRow row = sheet.getRow(i);  18. /得到Excel工作表指定行的單元格  

10、 19. HSSFCell cell = row.getCell(short) j);  20. cellStyle = cell.getCellStyle();/得到單元格樣式  2、建立Excel常用對(duì)象 Java代碼  1. HSSFWorkbook wb = new HSSFWorkbook();/創(chuàng)建Excel工作簿對(duì)象     2. HSSFSheet&#

11、160;sheet = wb.createSheet("new sheet");/創(chuàng)建Excel工作表對(duì)象       3. HSSFRow row = sheet.createRow(short)0); /創(chuàng)建Excel工作表的行     4. cellStyle = wb.createCellStyle();/創(chuàng)建單元格樣式   &#

12、160; 5. row.createCell(short)0).setCellStyle(cellStyle); /創(chuàng)建Excel工作表指定行的單元格     6. row.createCell(short)0).setCellValue(1); /設(shè)置Excel工作表的值    7. HSSFWorkbook wb = new HSSFWorkbook();/創(chuàng)建Excel工作簿對(duì)象  8. HSSFSheet&#

13、160;sheet = wb.createSheet("new sheet");/創(chuàng)建Excel工作表對(duì)象    9. HSSFRow row = sheet.createRow(short)0); /創(chuàng)建Excel工作表的行  10. cellStyle = wb.createCellStyle();/創(chuàng)建單元格樣式  11. row.createCell(short)0).setCellStyle(ce

14、llStyle); /創(chuàng)建Excel工作表指定行的單元格  12. row.createCell(short)0).setCellValue(1); /設(shè)置Excel工作表的值  3、設(shè)置sheet名稱和單元格內(nèi)容 Java代碼  1. wb.setSheetName(1, "第一張工作表",HSSFCell.ENCODING_UTF_16);           &

15、#160;2. cell.setEncoding(short) 1);        3. cell.setCellValue("單元格內(nèi)容");    4. wb.setSheetName(1, "第一張工作表",HSSFCell.ENCODING_UTF_16);          5. cell.setEncod

16、ing(short) 1);      6. cell.setCellValue("單元格內(nèi)容");   4、取得sheet的數(shù)目 Java代碼  1. wb.getNumberOfSheets()     2. wb.getNumberOfSheets()   5、  根據(jù)index取得sheet對(duì)象 Java代碼  1. H

17、SSFSheet sheet = wb.getSheetAt(0);    2. HSSFSheet sheet = wb.getSheetAt(0);  6、取得有效的行數(shù) Java代碼  1. int rowcount = sheet.getLastRowNum();    2. int rowcount = sheet.getLastRowN

18、um();  7、取得一行的有效單元格個(gè)數(shù) Java代碼  1. row.getLastCellNum();      2. row.getLastCellNum();     8、單元格值類型讀寫(xiě) Java代碼  1. cell.setCellType(HSSFCell.CELL_TYPE_STRING); /設(shè)置單元格為STRING類型     

19、;2. cell.getNumericCellValue();/讀取為數(shù)值類型的單元格內(nèi)容    3. cell.setCellType(HSSFCell.CELL_TYPE_STRING); /設(shè)置單元格為STRING類型  4. cell.getNumericCellValue();/讀取為數(shù)值類型的單元格內(nèi)容  9、設(shè)置列寬、行高 Java代碼  1. sheet.setColumnWidth(short)column,(short)width);  

20、;      2. row.setHeight(short)height);      3. sheet.setColumnWidth(short)column,(short)width);      4. row.setHeight(short)height);   10、添加區(qū)域,合并單元格 Java代碼  1. Region region&#

21、160;= new Region(short)rowFrom,(short)columnFrom,(short)rowTo    2. ,(short)columnTo);/合并從第rowFrom行columnFrom列     3. sheet.addMergedRegion(region);/ 到rowTo行columnTo的區(qū)域        4. /得到所有區(qū)域  &#

22、160;      5. sheet.getNumMergedRegions()     6. Region region = new Region(short)rowFrom,(short)columnFrom,(short)rowTo  7. ,(short)columnTo);/合并從第rowFrom行columnFrom列  8. sheet.addMergedRegion(region);/

23、60;到rowTo行columnTo的區(qū)域     9. /得到所有區(qū)域      10. sheet.getNumMergedRegions()   11、保存Excel文件 Java代碼  1. FileOutputStream fileOut = new FileOutputStream(path);     2. wb.write

24、(fileOut);     3. FileOutputStream fileOut = new FileOutputStream(path);   4. wb.write(fileOut);   12、根據(jù)單元格不同屬性返回字符串?dāng)?shù)值 Java代碼  1. public String getCellStringValue(HSSFCell cell)   

25、      2.         String cellValue = ""        3.         switch (cell.getCellType()      &

26、#160;  4.         case HSSFCell.CELL_TYPE_STRING:/字符串類型     5.            cellValue = cell.getStringCellValue();       &

27、#160;6.            if(cellValue.trim().equals("")|cellValue.trim().length()<=0)        7.                 cellVa

28、lue=" "        8.             break;        9.         case HSSFCell.CELL_TYPE_NUMERIC: /數(shù)值類型&#

29、160;    10.             cellValue = String.valueOf(cell.getNumericCellValue();        11.             break;&#

30、160;       12.         case HSSFCell.CELL_TYPE_FORMULA: /公式     13.             cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); 

31、;       14.             cellValue = String.valueOf(cell.getNumericCellValue();        15.            

32、; break;        16.         case HSSFCell.CELL_TYPE_BLANK:        17.             cellValue=" "

33、        18.             break;        19.         case HSSFCell.CELL_TYPE_BOOLEAN:     

34、60;  20.            break;        21.         case HSSFCell.CELL_TYPE_ERROR:        22.    

35、0;        break;        23.         default:        24.             break; 

36、       25.                 26.         return cellValue;        27.      &#

37、160;     28. public String getCellStringValue(HSSFCell cell)       29.         String cellValue = ""      30.    &#

38、160;    switch (cell.getCellType()       31.         case HSSFCell.CELL_TYPE_STRING:/字符串類型  32.             cellValue =&

39、#160;cell.getStringCellValue();      33.             if(cellValue.trim().equals("")|cellValue.trim().length()<=0)      34.        &#

40、160;        cellValue=" "      35.             break;      36.         case HSSF

41、Cell.CELL_TYPE_NUMERIC: /數(shù)值類型  37.             cellValue = String.valueOf(cell.getNumericCellValue();      38.             br

42、eak;      39.         case HSSFCell.CELL_TYPE_FORMULA: /公式  40.             cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);     

43、; 41.             cellValue = String.valueOf(cell.getNumericCellValue();      42.             break;      

44、;43.         case HSSFCell.CELL_TYPE_BLANK:      44.             cellValue=" "      45.      &#

45、160;      break;      46.         case HSSFCell.CELL_TYPE_BOOLEAN:      47.             break;  

46、;    48.         case HSSFCell.CELL_TYPE_ERROR:      49.             break;      50.      

47、   default:      51.             break;      52.               53.     

48、0;   return cellValue;      54.          13、常用單元格邊框格式 Java代碼  1. HSSFCellStyle style = wb.createCellStyle();        2. style.setBorderB

49、ottom(HSSFCellStyle.BORDER_DOTTED);/下邊框          3. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);/左邊框          4. style.setBorderRight(HSSFCellStyle.BORDER_THIN);/右邊框     

50、     5. style.setBorderTop(HSSFCellStyle.BORDER_THIN);/上邊框      6. HSSFCellStyle style = wb.createCellStyle();      7. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);/下邊框    &#

51、160;  8. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);/左邊框       9. style.setBorderRight(HSSFCellStyle.BORDER_THIN);/右邊框       10. style.setBorderTop(HSSFCellStyle.BORDER_THIN);/上邊框    14、設(shè)置字體和內(nèi)容位

52、置 Java代碼  1. HSSFFont f  = wb.createFont();        2. f.setFontHeightInPoints(short) 11);/字號(hào)         3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);/加粗    

53、     4. style.setFont(f);        5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);/左右居中         6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);/上下居中    

54、60;    7. style.setRotation(short rotation);/單元格內(nèi)容的旋轉(zhuǎn)的角度         8. HSSFDataFormat df = wb.createDataFormat();        9. style1.setDataFormat(df.getFormat("0.00%");/

55、設(shè)置單元格數(shù)據(jù)格式         10. cell.setCellFormula(string);/給單元格設(shè)公式         11. style.setRotation(short rotation);/單元格內(nèi)容的旋轉(zhuǎn)的角度     12. HSSFFont f  = wb.createFont();

56、0;     13. f.setFontHeightInPoints(short) 11);/字號(hào)      14. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);/加粗      15. style.setFont(f);      16. style.setAlignment(HSSFCellStyle.ALIG

57、N_CENTER);/左右居中      17. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);/上下居中      18. style.setRotation(short rotation);/單元格內(nèi)容的旋轉(zhuǎn)的角度      19. HSSFDataFormat df = wb.createDataFor

58、mat();      20. style1.setDataFormat(df.getFormat("0.00%");/設(shè)置單元格數(shù)據(jù)格式      21. cell.setCellFormula(string);/給單元格設(shè)公式      22. style.setRotation(short rotation);/單元格內(nèi)容的旋轉(zhuǎn)的角度   15、插入圖

59、片 Java代碼  1. /先把讀進(jìn)來(lái)的圖片放到一個(gè)ByteArrayOutputStream中,以便產(chǎn)生ByteArray         2.       ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();       

60、60;3.       BufferedImage bufferImg = ImageIO.read(new File("ok.jpg");        4.       ImageIO.write(bufferImg,"jpg",byteArrayOut);     

61、;   5. /讀進(jìn)一個(gè)excel模版         6. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");         7. fs = new POIFSFileSystem(fos); 

62、       8. /創(chuàng)建一個(gè)工作薄         9. HSSFWorkbook wb = new HSSFWorkbook(fs);        10. HSSFSheet sheet = wb.getSheetAt(0);     

63、;   11. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();        12. HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);       

64、      13. patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG);      14. /先把讀進(jìn)來(lái)的圖片放到一個(gè)ByteArrayOutputStream中,以便產(chǎn)生ByteArray      15.   

65、60;   ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();      16.       BufferedImage bufferImg = ImageIO.read(new File("ok.jpg");     

66、 17.       ImageIO.write(bufferImg,"jpg",byteArrayOut);      18. /讀進(jìn)一個(gè)excel模版      19. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt"); &

67、#160;     20. fs = new POIFSFileSystem(fos);      21. /創(chuàng)建一個(gè)工作薄      22. HSSFWorkbook wb = new HSSFWorkbook(fs);      23. HSSFSheet sheet =&#

68、160;wb.getSheetAt(0);      24. HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      25. HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);  

69、0;        26. patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG);   16、調(diào)整工作表位置 Java代碼  1. HSSFWorkbook wb = new HSSFWorkbook();   

70、    2. HSSFSheet sheet = wb.createSheet("format sheet");       3. HSSFPrintSetup ps = sheet.getPrintSetup();       4. sheet.setAutobreaks(true);   

71、60;   5. ps.setFitHeight(short)1);       6. ps.setFitWidth(short)1);     7. HSSFWorkbook wb = new HSSFWorkbook();     8. HSSFSheet sheet = wb.createSheet("forma

72、t sheet");     9. HSSFPrintSetup ps = sheet.getPrintSetup();     10. sheet.setAutobreaks(true);     11. ps.setFitHeight(short)1);     12. ps.setFitWidth(short)1);  &

73、#160;  17、設(shè)置打印區(qū)域 Java代碼  1. HSSFSheet sheet = wb.createSheet("Sheet1");       2. wb.setPrintArea(0, "$A$1:$C$2");      3. HSSFSheet sheet = wb.createSheet(

74、"Sheet1");     4. wb.setPrintArea(0, "$A$1:$C$2");    18、標(biāo)注腳注 Java代碼  1. HSSFSheet sheet = wb.createSheet("format sheet");       2. HSSFFooter fo

75、oter = sheet.getFooter()       3. footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );     4. HSSFSheet sheet = 

76、wb.createSheet("format sheet");     5. HSSFFooter footer = sheet.getFooter()     6. footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter

77、.numPages() );   19、在工作單中清空行數(shù)據(jù),調(diào)整行位置 Java代碼  1. HSSFWorkbook wb = new HSSFWorkbook();       2. HSSFSheet sheet = wb.createSheet("row sheet");      

78、60;3. / Create various cells and rows for spreadsheet.        4. / Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)    

79、;    5. sheet.shiftRows(5, 10, -5);      6. HSSFWorkbook wb = new HSSFWorkbook();     7. HSSFSheet sheet = wb.createSheet("row sheet");     

80、8. / Create various cells and rows for spreadsheet.     9. / Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)     10. sheet.shif

81、tRows(5, 10, -5);    20、選中指定的工作表 Java代碼  1. HSSFSheet sheet = wb.createSheet("row sheet");       2. heet.setSelected(true);       3. HSSFSheet sheet&#

82、160;= wb.createSheet("row sheet");     4. heet.setSelected(true);     21、工作表的放大縮小 Java代碼  1. HSSFSheet sheet1 = wb.createSheet("new sheet");       2.

83、sheet1.setZoom(1,2);   / 50 percent magnification      3. HSSFSheet sheet1 = wb.createSheet("new sheet");     4. sheet1.setZoom(1,2);   / 50 percent magnif

84、ication   22、頭注和腳注 Java代碼  1. HSSFSheet sheet = wb.createSheet("new sheet");       2. HSSFHeader header = sheet.getHeader();       3. header.setCenter(&quo

85、t;Center Header");       4. header.setLeft("Left Header");       5. header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +       6. H

86、SSFHeader.fontSize(short) 16) + "Right w/ Stencil-Normal Italic font and size 16");    7. HSSFSheet sheet = wb.createSheet("new sheet");     8. HSSFHeader heade

87、r = sheet.getHeader();     9. header.setCenter("Center Header");     10. header.setLeft("Left Header");     11. header.setRight(HSSFHeader.font("Stencil-Normal", "It

88、alic") +     12. HSSFHeader.fontSize(short) 16) + "Right w/ Stencil-Normal Italic font and size 16");  23、自定義顏色 Java代碼  1. HSSFCellStyle style = wb.createCellStyle()

89、;       2. style.setFillForegroundColor(HSSFColor.LIME.index);       3. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);       4. HSSFFont font = wb.createFont();  &

90、#160;    5. font.setColor(HSSFColor.RED.index);       6. style.setFont(font);       7. cell.setCellStyle(style);       8. HSSFCellStyle style = wb.createCellSty

91、le();     9. style.setFillForegroundColor(HSSFColor.LIME.index);     10. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     11. HSSFFont font = wb.createFont();     12. font.setC

92、olor(HSSFColor.RED.index);     13. style.setFont(font);     14. cell.setCellStyle(style);    24、填充和顏色設(shè)置 Java代碼  1. HSSFCellStyle style = wb.createCellStyle();       

93、2. style.setFillBackgroundColor(HSSFColor.AQUA.index);       3. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);       4. HSSFCell cell = row.createCell(short) 1);       5. cell

94、.setCellValue("X");       6. style = wb.createCellStyle();       7. style.setFillForegroundColor(HSSFColor.ORANGE.index);       8. style.setFillPattern(HSSFCellStyle.SOLID_FOR

95、EGROUND);       9. cell.setCellStyle(style);     10. HSSFCellStyle style = wb.createCellStyle();     11. style.setFillBackgroundColor(HSSFColor.AQUA.index);     12. style.setF

96、illPattern(HSSFCellStyle.BIG_SPOTS);     13. HSSFCell cell = row.createCell(short) 1);     14. cell.setCellValue("X");     15. style = wb.createCellStyle();     

97、;16. style.setFillForegroundColor(HSSFColor.ORANGE.index);     17. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     18. cell.setCellStyle(style);   25、強(qiáng)行刷新單元格公式 Java代碼  1. HSSFFormulaEvaluator eval=new 

98、;HSSFFormulaEvaluator(HSSFWorkbook) wb);      2. private static void updateFormula(Workbook wb,Sheet s,int row)       3.         Row r=s.getRow(row); 

99、      4.         Cell c=null;       5.         FormulaEcaluator eval=null;       6.         if(wb instanceof HSSFWorkbook)       7.             eval=n

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論