亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

POI操作Excel常用方法

2019-11-11 07:14:35
字體:
來源:轉載
供稿:網友

一、 POI簡介

            Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給java程序對Microsoft Office格式檔案讀和寫的功能。

二、 HSSF概況

            HSSF 是Horrible SPReadSheet Format的縮寫,通過HSSF,你可以用純Java代碼來讀取、寫入、修改Excel文件。HSSF 為讀取操作提供了兩類API:usermodel和eventusermodel,即“用戶模型”和“事件-用戶模型”。

三、 POI EXCEL文檔結構類

            HSSFWorkbook excel文檔對象

            HSSFSheet excel的sheet HSSFRow excel的行

            HSSFCell excel的單元格 HSSFFont excel字體

            HSSFName 名稱 HSSFDataFormat 日期格式

            HSSFHeader sheet頭

            HSSFFooter sheet尾

            HSSFCellStyle cell樣式

            HSSFDateUtil 日期

            HSSFPrintSetup 打印

            HSSFErrorConstants 錯誤信息表

四、 EXCEL常用操作方法

  1、 得到Excel常用對象           [c-sharp] view plaincopyprint?POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls"));   //得到Excel工作簿對象    HSSFWorkbook wb = new HSSFWorkbook(fs);  //得到Excel工作表對象    HSSFSheet sheet = wb.getSheetAt(0);   //得到Excel工作表的行    HSSFRow row = sheet.getRow(i);  //得到Excel工作表指定行的單元格    HSSFCell cell = row.getCell((short) j);  cellStyle = cell.getCellStyle();//得到單元格樣式  

 2、建立Excel常用對象[c-sharp] view plaincopyprint?HSSFWorkbook wb = new HSSFWorkbook();//創建Excel工作簿對象   HSSFSheet sheet = wb.createSheet("new sheet");//創建Excel工作表對象     HSSFRow row = sheet.createRow((short)0); //創建Excel工作表的行   cellStyle = wb.createCellStyle();//創建單元格樣式   row.createCell((short)0).setCellStyle(cellStyle); //創建Excel工作表指定行的單元格   row.createCell((short)0).setCellValue(1); //設置Excel工作表的值  

3、設置sheet名稱和單元格內容[c-sharp] view plaincopyprint?wb.setSheetName(1, "第一張工作表",HSSFCell.ENCODING_UTF_16);          cell.setEncoding((short) 1);      cell.setCellValue("單元格內容");  
4、取得sheet的數目 [c-sharp] view plaincopyprint?wb.getNumberOfSheets()   
5、  據index取得sheet對象[c-sharp] view plaincopyprint?HSSFSheet sheet = wb.getSheetAt(0);  
6、取得有效的行數[c-sharp] view plaincopyprint?int rowcount = sheet.getLastRowNum();  
7、取得一行的有效單元格個數[c-sharp] view plaincopyprint?row.getLastCellNum();    

8、單元格值類型讀寫

[c-sharp] view plaincopyprint?cell.setCellType(HSSFCell.CELL_TYPE_STRING); //設置單元格為STRING類型   cell.getNumericCellValue();//讀取為數值類型的單元格內容  

 

9、設置列寬、行高

[c-sharp] view plaincopyprint?sheet.setColumnWidth((short)column,(short)width);      row.setHeight((short)height);    

 

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

[c-sharp] view plaincopyprint?Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo  ,(short)columnTo);//合并從第rowFrom行columnFrom列   sheet.addMergedRegion(region);// 到rowTo行columnTo的區域      //得到所有區域       sheet.getNumMergedRegions()   

 

11、保存Excel文件

[c-sharp] view plaincopyprint?FileOutputStream fileOut = new FileOutputStream(path);   wb.write(fileOut);   

 

12、根據單元格不同屬性返回字符串數值

[c-sharp] view plaincopyprint?public String getCellStringValue(HSSFCell cell) {              String cellValue = "";              switch (cell.getCellType()) {              case HSSFCell.CELL_TYPE_STRING://字符串類型               cellValue = cell.getStringCellValue();                  if(cellValue.trim().equals("")||cellValue.trim().length()<=0)                      cellValue=" ";                  break;              case HSSFCell.CELL_TYPE_NUMERIC: //數值類型               cellValue = String.valueOf(cell.getNumericCellValue());                  break;              case HSSFCell.CELL_TYPE_FORMULA: //公式               cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);                  cellValue = String.valueOf(cell.getNumericCellValue());                  break;              case HSSFCell.CELL_TYPE_BLANK:                  cellValue=" ";                  break;              case HSSFCell.CELL_TYPE_BOOLEAN:                  break;              case HSSFCell.CELL_TYPE_ERROR:                  break;              default:                  break;              }              return cellValue;          }     

 

13、常用單元格邊框格式

[c-sharp] view plaincopyprint?HSSFCellStyle style = wb.createCellStyle();      style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下邊框        style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左邊框        style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右邊框        style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上邊框    

 

14、設置字體和內容位置

[c-sharp] view plaincopyprint?HSSFFont f  = wb.createFont();      f.setFontHeightInPoints((short) 11);//字號       f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗       style.setFont(f);      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中       style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中       style.setRotation(short rotation);//單元格內容的旋轉的角度       HSSFDataFormat df = wb.createDataFormat();      style1.setDataFormat(df.getFormat("0.00%"));//設置單元格數據格式       cell.setCellFormula(string);//給單元格設公式       style.setRotation(short rotation);//單元格內容的旋轉的角度   

 

15、插入圖片

[c-sharp] view plaincopyprint?//先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray             ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();            BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));            ImageIO.write(bufferImg,"jpg",byteArrayOut);      //讀進一個excel模版       FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");       fs = new POIFSFileSystem(fos);      //創建一個工作薄       HSSFWorkbook wb = new HSSFWorkbook(fs);      HSSFSheet sheet = wb.getSheetAt(0);      HSSFPatriarch patriarch = sheet.createDrawingPatriarch();      HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10);           patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));    

 

16、調整工作表位置

[c-sharp] view plaincopyprint?HSSFWorkbook wb = new HSSFWorkbook();     HSSFSheet sheet = wb.createSheet("format sheet");     HSSFPrintSetup ps = sheet.getPrintSetup();     sheet.setAutobreaks(true);     ps.setFitHeight((short)1);     ps.setFitWidth((short)1);     

 

17、設置打印區域

[c-sharp] view plaincopyprint?HSSFSheet sheet = wb.createSheet("Sheet1");     wb.setPrintArea(0, "$A$1:$C$2");    

 

18、標注腳注

[c-sharp] view plaincopyprint?HSSFSheet sheet = wb.createSheet("format sheet");     HSSFFooter footer = sheet.getFooter()     footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() );   

 

19、在工作單中清空行數據,調整行位置

[c-sharp] view plaincopyprint?HSSFWorkbook wb = new HSSFWorkbook();     HSSFSheet sheet = wb.createSheet("row sheet");     // Create various cells and rows for spreadsheet.      // Shift rows 6 - 11 on the spreadsheet to the top (rows 0 - 5)      sheet.shiftRows(5, 10, -5);    

 

20、選中指定的工作表

[c-sharp] view plaincopyprint?HSSFSheet sheet = wb.createSheet("row sheet");     heet.setSelected(true);     

 

21、工作表的放大縮小

 

[c-sharp] view plaincopyprint?HSSFSheet sheet1 = wb.createSheet("new sheet");     sheet1.setZoom(1,2);   // 50 percent magnification    

 

22、頭注和腳注

[c-sharp] view plaincopyprint?HSSFSheet sheet = wb.createSheet("new sheet");     HSSFHeader header = sheet.getHeader();     header.setCenter("Center Header");     header.setLeft("Left Header");     header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +     HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");  

 

23、自定義顏色

[c-sharp] view plaincopyprint?HSSFCellStyle style = wb.createCellStyle();     style.setFillForegroundColor(HSSFColor.LIME.index);     style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     HSSFFont font = wb.createFont();     font.setColor(HSSFColor.RED.index);     style.setFont(font);     cell.setCellStyle(style);     

24、填充和顏色設置

[c-sharp] view plaincopyprint?HSSFCellStyle style = wb.createCellStyle();     style.setFillBackgroundColor(HSSFColor.AQUA.index);     style.setFillPattern(HSSFCellStyle.BIG_SPOTS);     HSSFCell cell = row.createCell((short) 1);     cell.setCellValue("X");     style = wb.createCellStyle();     style.setFillForegroundColor(HSSFColor.ORANGE.index);     style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);     cell.setCellStyle(style);   

25、強行刷新單元格公式

[c-sharp] view plaincopyprint?HSSFFormulaEvaluator eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);    private static void updateFormula(Workbook wb,Sheet s,int row){             Row r=s.getRow(row);             Cell c=null;             FormulaEcaluator eval=null;             if(wb instanceof HSSFWorkbook)                 eval=new HSSFFormulaEvaluator((HSSFWorkbook) wb);             else if(wb instanceof XSSFWorkbook)                 eval=new XSSFFormulaEvaluator((XSSFWorkbook) wb);             for(int i=r.getFirstCellNum();i<r.getLastCellNum();i++){                 c=r.getCell(i);                 if(c.getCellType()==Cell.CELL_TYPE_FORMULA)                     eval.evaluateFormulaCell(c);             }         }    

說明:FormulaEvaluator提供了evaluateFormulaCell(Cell cell)方法,計算公式保存結果,但不改變公式。而evaluateInCell(Cell cell) 方法是計算公式,并將原公式替換為計算結果,也就是說該單元格的類型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERIC。HSSFFormulaEvaluator提供了靜態方法evaluateAllFormu

laCells(HSSFWorkbook wb) ,計算一個Excel文件的所有公式,用起來很方便。 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------poi方法總結

-.設置不顯示excel網格線   sheet.setDisplayGridlines(false);其中sheet是Sheet對象 2.設置excel單元格中的內容換行   cellStyle.setWrapText(true);其中cellStyle是WorkBook創建的CellStyle對象,然后將cellStyle設置到要換行的Cell對象,最后在要換行的對象(一般為字符串)加入"/r/n"。如 topTile.append("/r/n" +"cellContent"); 3.單元格的合并   sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例為合并4行2列 4.設置頁眉和頁腳的頁數     HSSFHeader header = sheet.getHeader();     header.setCenter("Center Header");     header.setLeft("Left Header");     header.setRight(HSSFHeader.font("Stencil-Normal", "Italic") +     HSSFHeader.fontSize((short) 16) + "Right w/ Stencil-Normal Italic font and size 16");   HSSFFooter footer = (HSSFFooter )sheet.getFooter()   footer.setRight( "Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages() ); 5.使得一個Sheet適合一頁   sheet.setAutobreaks(true); 6.設置放大屬性(Zoom被明確為一個分數,例如下面的75%使用3作為分子,4作為分母)   sheet.setZoom(3,4);   7.設置打印   HSSFPrintSetup print = (HSSFPrintSetup) sheet.getPrintSetup();   print.setLandscape(true);//設置橫向打印   print.setScale((short) 70);//設置打印縮放70%   print.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);//設置為A4紙張   print.setLeftToRight(true);//設置打印順序先行后列,默認為先列行              print.setFitHeight((short) 10);設置縮放調整為10頁高   print.setFitWidth((short) 10);設置縮放調整為寬高   sheet.setAutobreaks(false);   if (i != 0 && i % 30 == 0)       sheet.setRowBreak(i);//設置每30行分頁打印 8.反復的行和列(設置打印標題)   HSSFWorkbook wb = new HSSFWorkbook();   wb.setRepeatingRowsAndColumns(0, 0, 12, 1, 6);//設置1到12列,行1到6每一頁重復打印 9.調整單元格寬度   sheet.setAutobreaks(true);   sheet.setColumnWidth((short)i,colsWidth[i]); //設定單元格長度     sheet.autoSizeColumn((short) i);//自動根據長度調整單元格長度 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产成人精品久久久国产成人一区| 91精品国产免费久久久久久| 成人黄色在线免费| 国产91精品青草社区| 91系列在线播放| 国产香蕉一区二区三区在线视频| 日本a级片电影一区二区| 91欧美视频网站| 国产成人在线亚洲欧美| 日韩av在线网页| 亚洲图片制服诱惑| 中文字幕亚洲欧美一区二区三区| 九九热精品视频国产| 超碰精品一区二区三区乱码| 大伊人狠狠躁夜夜躁av一区| 欧美黑人极品猛少妇色xxxxx| 中文字幕av一区二区| 在线成人免费网站| www.亚洲男人天堂| 一区二区三区黄色| 国产精品91免费在线| 精品久久久久久久中文字幕| 国产成人精品久久二区二区91| 91久久久久久久久久久| 最新69国产成人精品视频免费| 国产精品视频一区二区三区四| 精品久久在线播放| www国产精品com| 日韩国产精品亚洲а∨天堂免| 伊人一区二区三区久久精品| 久久男人资源视频| 色综合久久中文字幕综合网小说| 精品久久久久久电影| 国产日本欧美一区| 欧美在线视频观看| 日韩经典第一页| 18一19gay欧美视频网站| 亚洲最大av在线| 亚洲欧美色婷婷| 欧美在线日韩在线| yellow中文字幕久久| 亚洲国产99精品国自产| 久久久噜噜噜久噜久久| 日韩va亚洲va欧洲va国产| 亚洲精品国产精品久久清纯直播| 亚洲激情免费观看| 欧美精品激情blacked18| 免费91麻豆精品国产自产在线观看| 91免费版网站入口| 国产999在线观看| 人人做人人澡人人爽欧美| 国产成人精品999| 欧美综合在线第二页| 中文字幕亚洲精品| 成人xxxxx| 国产精品久久国产精品99gif| 久久精品电影网| 亚洲成人av中文字幕| 国产精品高潮呻吟视频| 亚洲国产成人精品一区二区| 亚洲欧美日韩国产精品| 91精品在线观看视频| 国产精品91一区| 欧美性xxxx| 亚洲人成在线电影| 久久久精品网站| 久久久这里只有精品视频| 欧美性xxxxx极品| 欧美国产日韩在线| 亚洲国产精品成人av| 久久成人精品视频| 国产在线久久久| 亚洲一区二区黄| 91在线观看免费高清| 欧美精品少妇videofree| 欧美国产日韩二区| 97在线免费观看| 国产日本欧美在线观看| 国产性色av一区二区| 国产免费一区视频观看免费| 91精品国产高清久久久久久久久| 日韩高清人体午夜| 7777精品久久久久久| 国产精品久久久久91| 91在线中文字幕| 欧美国产激情18| 欧美亚洲午夜视频在线观看| 国产视频精品在线| 国产精品丝袜白浆摸在线| 国产成人精品视| 色阁综合伊人av| 在线午夜精品自拍| 日韩欧美中文免费| 亚洲女人被黑人巨大进入al| 欧美日韩成人在线播放| 日韩免费av在线| 亚洲精品动漫久久久久| 最近2019年好看中文字幕视频| 国产精品免费在线免费| 国产美女高潮久久白浆| 日韩欧美成人网| 亚洲一品av免费观看| 欧美美女18p| 91亚洲一区精品| 欧美黑人国产人伦爽爽爽| 97久久精品人搡人人玩| 91免费精品视频| 亚洲日本成人网| 日本中文字幕不卡免费| zzijzzij亚洲日本成熟少妇| 国内偷自视频区视频综合| 国产精品扒开腿做爽爽爽视频| 欧美在线欧美在线| 一个人www欧美| 国内精品小视频| 亚洲国产日韩一区| 色综合视频一区中文字幕| 精品久久在线播放| 久久夜精品va视频免费观看| 中文字幕欧美亚洲| 久久夜色精品国产| 久久亚洲精品视频| 91国偷自产一区二区三区的观看方式| 欧美高清在线观看| 欧美日韩在线视频首页| 亚洲欧美日韩精品久久奇米色影视| 欧美视频在线观看 亚洲欧| 亚洲欧美在线x视频| 国产亚洲一区二区精品| 奇米影视亚洲狠狠色| 国产成人在线一区二区| 国产香蕉一区二区三区在线视频| 欧美疯狂性受xxxxx另类| 亚洲欧洲国产一区| 欧美丰满少妇xxxx| 在线日韩精品视频| 国产精品日韩在线一区| 亚洲精品电影网在线观看| 俺去啦;欧美日韩| 精品久久久久久久久久久久久| 成人美女av在线直播| 久久成人一区二区| 国产91在线播放九色快色| 亚洲高清福利视频| 亚洲精品国产综合区久久久久久久| 美女久久久久久久| 色天天综合狠狠色| 成人h猎奇视频网站| 亚洲精品日韩久久久| 在线播放日韩欧美| 欧美激情第6页| 成人黄色生活片| 欧洲成人免费aa| 这里只有精品丝袜| 国内精品久久久久久影视8| 日韩精品在线免费| 欧美限制级电影在线观看| 国产亚洲精品激情久久| 成人福利在线观看| 亚洲自拍在线观看| 亚洲精品天天看| 国产精品极品在线| 中文字幕日韩av电影| 欧美丝袜一区二区|