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

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

POI操作Excel常用方法

2019-11-11 05:52:33
字體:
來源:轉載
供稿:網友

一、 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
亚洲欧美日韩国产精品| 亚洲嫩模很污视频| 日韩av中文字幕在线播放| 国产精品白嫩美女在线观看| 国内精品免费午夜毛片| 国产精品久久久久久久久久久久| 欧美肥婆姓交大片| 成人黄色大片在线免费观看| 国产99久久久欧美黑人| 欧美激情亚洲激情| 国产综合色香蕉精品| 亚洲第一免费播放区| 午夜欧美大片免费观看| 日韩精品亚洲精品| 久久久久五月天| 中文字幕一区电影| 91免费在线视频| 成人免费xxxxx在线观看| 日韩欧美在线第一页| 亚洲a级在线播放观看| 69**夜色精品国产69乱| 亚洲精品视频在线观看视频| 欧美日韩一区二区在线播放| 欧洲精品在线视频| 欧美精品videosex牲欧美| 国产一区二区三区在线看| 亚洲美女在线视频| 欧美日韩另类字幕中文| 欧美黄色小视频| 欧美中文字幕视频在线观看| 亚洲女成人图区| 综合久久五月天| 高清视频欧美一级| 国产91热爆ts人妖在线| 国内外成人免费激情在线视频网站| 国产一区二区激情| 亚洲日本欧美日韩高观看| 日韩av一区在线| 亚洲一区二区久久久久久久| 成人久久一区二区三区| 成人av在线天堂| 亚洲无av在线中文字幕| 国产在线观看不卡| 懂色av一区二区三区| 91免费在线视频| 亚洲第一综合天堂另类专| 97碰碰碰免费色视频| 亚洲国产女人aaa毛片在线| 欧美在线视频免费| 久久色精品视频| 国产啪精品视频| 国产精品xxx视频| 日韩免费观看高清| 中文字幕亚洲在线| 91精品久久久久久综合乱菊| 中文字幕亚洲二区| 岛国av在线不卡| 国产精品啪视频| 亚洲va码欧洲m码| 亚洲最大的网站| 亚洲va欧美va国产综合剧情| 性欧美办公室18xxxxhd| 国产网站欧美日韩免费精品在线观看| 精品日韩视频在线观看| 日韩欧美在线免费观看| 日韩精品视频在线免费观看| 国产精品扒开腿爽爽爽视频| 亚洲午夜未删减在线观看| 日韩av片永久免费网站| 亚洲女人天堂视频| 日韩成人网免费视频| 欧美激情精品久久久久久蜜臀| 欧美激情一区二区三区成人| 国模精品系列视频| 欧美日韩国产综合新一区| 亚洲精品美女久久久久| 欧美激情一区二区久久久| 午夜精品久久久久久久久久久久| 久久精品99久久香蕉国产色戒| 91国产视频在线| 国产日韩在线亚洲字幕中文| 亚洲全黄一级网站| 国产精品成人免费视频| 在线观看欧美日韩国产| 91亚洲永久免费精品| 不卡毛片在线看| 欧美国产激情18| 91在线视频一区| 成人精品一区二区三区电影黑人| 欧美日韩美女在线观看| 国产精品久久久久久搜索| 91极品视频在线| 欧美成人午夜剧场免费观看| 欧美激情综合色| 91最新国产视频| 国产福利精品av综合导导航| 91欧美精品午夜性色福利在线| 亚洲综合社区网| 欧美性xxxxxx| 国产噜噜噜噜噜久久久久久久久| 精品久久久久久久大神国产| 久久久久这里只有精品| 国产精品久久久久久久久久东京| 国产欧美中文字幕| 久久偷看各类女兵18女厕嘘嘘| 久久99青青精品免费观看| 成人激情视频在线播放| xxxx欧美18另类的高清| 国产欧美日韩免费看aⅴ视频| 亚洲精品中文字幕有码专区| 欧美国产乱视频| 欧美电影在线观看高清| 亚洲电影免费观看高清完整版| 欧美日韩人人澡狠狠躁视频| 国产精品一区二区三区在线播放| 成人性生交大片免费看小说| 久久av资源网站| 国产精品午夜国产小视频| 亚洲香蕉在线观看| 国产欧美日韩中文| 日韩av在线免费观看一区| 国产丝袜高跟一区| 成人做爰www免费看视频网站| 久久九九全国免费精品观看| 亚洲一区二区中文字幕| 国产一区二区视频在线观看| 欧美极品少妇xxxxⅹ喷水| 欧美成人四级hd版| 亚洲欧洲在线视频| 伊人久久综合97精品| 亚洲精品日韩av| 国产成人综合av| 日韩欧美大尺度| 欧美日韩国产精品一区二区三区四区| 91精品国产91久久久久久最新| 国产一区视频在线播放| 亚洲另类激情图| 国产一区二区黑人欧美xxxx| 日韩在线高清视频| 最新亚洲国产精品| 亚洲第一精品夜夜躁人人爽| 日韩一区二区精品视频| 欧美视频国产精品| 亚洲级视频在线观看免费1级| 久久婷婷国产麻豆91天堂| 久久免费少妇高潮久久精品99| 97不卡在线视频| 亚洲精品一二区| 庆余年2免费日韩剧观看大牛| 亚洲国产成人av在线| 国产91精品久久久| 一区二区三区 在线观看视| 日韩电影在线观看中文字幕| 欧美日韩亚洲国产一区| 91久久久久久久久久| 欧美成人免费播放| 琪琪亚洲精品午夜在线| 最近2019中文字幕mv免费看| 免费不卡在线观看av| 亚洲精品国产福利| 亚洲国内精品在线| 久久久久久久国产精品| 国产91在线高潮白浆在线观看| 国产中文字幕日韩|