版權(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ù),POI提供API給Java程序?qū)icrosoft Office格式檔案讀和寫的功能。 二、 HSSF概況 HSSF 是Horrible SpreadSheet Format的縮寫,通過(guò)HSSF,你可以用純Java代碼來(lái)讀
2、取、寫入、修改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、單元格值類型讀寫 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中介代理辦公租賃合同
- 人事管理外包合同細(xì)則
- 個(gè)人二手房買賣合同擔(dān)保協(xié)議
- 個(gè)人汽車租賃標(biāo)準(zhǔn)合同
- 個(gè)人貸款使用的標(biāo)準(zhǔn)借款合同范本
- 人力資源公司勞務(wù)派遣合同全文
- 二手房買賣合同示范文本
- 二手商品交易合同模板大全
- 云計(jì)算中心建設(shè)與運(yùn)營(yíng)合同(計(jì)算機(jī)行業(yè))
- 中外員工培訓(xùn)合同模板大全
- 2025年方大萍安鋼鐵招聘筆試參考題庫(kù)含答案解析
- AQ6111-2023個(gè)體防護(hù)裝備安全管理規(guī)范
- 閱讀理解特訓(xùn)卷-英語(yǔ)四年級(jí)上冊(cè)譯林版三起含答案
- 國(guó)庫(kù)集中支付培訓(xùn)班資料-國(guó)庫(kù)集中支付制度及業(yè)務(wù)操作教學(xué)課件
- 屋面及防水工程施工(第二版)PPT完整全套教學(xué)課件
- 2023年上海青浦區(qū)區(qū)管企業(yè)統(tǒng)一招考聘用筆試題庫(kù)含答案解析
- 2023年高一物理期末考試卷(人教版)
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 空氣能熱泵安裝示意圖
- 最新《工會(huì)基礎(chǔ)知識(shí)》試題庫(kù)及答案1000題【完美打印版】
- 辦公家具項(xiàng)目實(shí)施方案、供貨方案
評(píng)論
0/150
提交評(píng)論