麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

POI操作Excel常用方法

2019-11-11 06:26:27
字體:
供稿:網(wǎng)友

一、 POI簡(jiǎn)介

            Apache POI是Apache軟件基金會(huì)的開放源碼函式庫(kù),POI提供API給java程序?qū)icrosoft Office格式檔案讀和寫的功能。

二、 HSSF概況

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

三、 POI EXCEL文檔結(jié)構(gòu)類

            HSSFWorkbook excel文檔對(duì)象

            HSSFSheet excel的sheet HSSFRow excel的行

            HSSFCell excel的單元格 HSSFFont excel字體

            HSSFName 名稱 HSSFDataFormat 日期格式

            HSSFHeader sheet頭

            HSSFFooter sheet尾

            HSSFCellStyle cell樣式

            HSSFDateUtil 日期

            HSSFPrintSetup 打印

            HSSFErrorConstants 錯(cuò)誤信息表

四、 EXCEL常用操作方法

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

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

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

8、單元格值類型讀寫

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

 

9、設(shè)置列寬、行高

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

 

10、添加區(qū)域,合并單元格

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

 

11、保存Excel文件

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

 

12、根據(jù)單元格不同屬性返回字符串?dāng)?shù)值

[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: //數(shù)值類型               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、設(shè)置字體和內(nèi)容位置

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

 

15、插入圖片

[c-sharp] view plaincopyprint?//先把讀進(jìn)來的圖片放到一個(gè)ByteArrayOutputStream中,以便產(chǎn)生ByteArray             ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();            BufferedImage bufferImg = ImageIO.read(new File("ok.jpg"));            ImageIO.write(bufferImg,"jpg",byteArrayOut);      //讀進(jìn)一個(gè)excel模版       FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");       fs = new POIFSFileSystem(fos);      //創(chuàng)建一個(gè)工作薄       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、調(diào)整工作表位置

[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、設(shè)置打印區(qū)域

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

 

18、標(biāo)注腳注

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

 

19、在工作單中清空行數(shù)據(jù),調(diào)整行位置

[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、填充和顏色設(shè)置

[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、強(qiáng)行刷新單元格公式

[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)方法,計(jì)算公式保存結(jié)果,但不改變公式。而evaluateInCell(Cell cell) 方法是計(jì)算公式,并將原公式替換為計(jì)算結(jié)果,也就是說該單元格的類型不在是Cell.CELL_TYPE_FORMULA而是Cell.CELL_TYPE_NUMBERIC。HSSFFormulaEvaluator提供了靜態(tài)方法evaluateAllFormu

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

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------poi方法總結(jié)

-.設(shè)置不顯示excel網(wǎng)格線   sheet.setDisplayGridlines(false);其中sheet是Sheet對(duì)象 2.設(shè)置excel單元格中的內(nèi)容換行   cellStyle.setWrapText(true);其中cellStyle是WorkBook創(chuàng)建的CellStyle對(duì)象,然后將cellStyle設(shè)置到要換行的Cell對(duì)象,最后在要換行的對(duì)象(一般為字符串)加入"/r/n"。如 topTile.append("/r/n" +"cellContent"); 3.單元格的合并   sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例為合并4行2列 4.設(shè)置頁(yè)眉和頁(yè)腳的頁(yè)數(shù)     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.使得一個(gè)Sheet適合一頁(yè)   sheet.setAutobreaks(true); 6.設(shè)置放大屬性(Zoom被明確為一個(gè)分?jǐn)?shù),例如下面的75%使用3作為分子,4作為分母)   sheet.setZoom(3,4);   7.設(shè)置打印   HSSFPrintSetup print = (HSSFPrintSetup) sheet.getPrintSetup();   print.setLandscape(true);//設(shè)置橫向打印   print.setScale((short) 70);//設(shè)置打印縮放70%   print.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);//設(shè)置為A4紙張   print.setLeftToRight(true);//設(shè)置打印順序先行后列,默認(rèn)為先列行              print.setFitHeight((short) 10);設(shè)置縮放調(diào)整為10頁(yè)高   print.setFitWidth((short) 10);設(shè)置縮放調(diào)整為寬高   sheet.setAutobreaks(false);   if (i != 0 && i % 30 == 0)       sheet.setRowBreak(i);//設(shè)置每30行分頁(yè)打印 8.反復(fù)的行和列(設(shè)置打印標(biāo)題)   HSSFWorkbook wb = new HSSFWorkbook();   wb.setRepeatingRowsAndColumns(0, 0, 12, 1, 6);//設(shè)置1到12列,行1到6每一頁(yè)重復(fù)打印 9.調(diào)整單元格寬度   sheet.setAutobreaks(true);   sheet.setColumnWidth((short)i,colsWidth[i]); //設(shè)定單元格長(zhǎng)度     sheet.autoSizeColumn((short) i);//自動(dòng)根據(jù)長(zhǎng)度調(diào)整單元格長(zhǎng)度 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 99精品视频在线观看免费 | 一级毛片在线免费观看视频 | 精品中文字幕久久久久四十五十骆 | 竹内纱里奈和大战黑人 | 日韩黄色在线播放 | 中文字幕在线看第二 | 亚洲成人久久精品 | 欧美色大成网站www永久男同 | 午夜视频久久 | 黄色免费小视频网站 | av日韩一区二区三区 | china对白普通话xxxx | 天天干天天透 | 国产精品视频一区二区三区综合 | 日本欧美一区二区三区在线观看 | 欧美18videos性处按摩 | 日韩一级成人 | 久久男人视频 | 亚洲成人中文字幕在线 | 天海翼四虎精品正在播放 | a一级黄色大片 | 久久蜜桃香蕉精品一区二区三区 | 久久成人动漫 | 久久亚洲网 | 国产一区二区三区视频在线 | 亚洲国产超高清a毛毛片 | 国产中出视频 | 精品国产一区二区亚洲人成毛片 | 日日夜av | 男人久久天堂 | 免费国产视频在线观看 | 日韩中文字幕三区 | 一级免费特黄视频 | 国产免费一级 | 91精品国产综合久久婷婷香 | 国产精品一区二区三区在线看 | 99影视在线视频免费观看 | 最近中文字幕一区二区 | 色就操| 久久日韩 | 九九热视频这里只有精品 |