POI操作常用方法_第1页
POI操作常用方法_第2页
POI操作常用方法_第3页
POI操作常用方法_第4页
POI操作常用方法_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、 POI简介             Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、 HSSF概况             HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读

2、取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。 三、 POI EXCEL文档结构类             HSSFWorkbook excel文档对象             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 错误信息表 四、 EXCEL常用操作方法 1、 得到Excel常用对象            Java代码  1. PO

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

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工作簿对象   13. HSSFWork

9、book wb = new HSSFWorkbook(fs);  14. /得到Excel工作表对象   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常用对象 Java代码  1. HSSFWorkbook wb = new HSSFWorkbook();/创建Excel工作簿对象     2. HSSFSheet&#

11、160;sheet = wb.createSheet("new sheet");/创建Excel工作表对象       3. HSSFRow row = sheet.createRow(short)0); /创建Excel工作表的行     4. cellStyle = wb.createCellStyle();/创建单元格样式   &#

12、160; 5. row.createCell(short)0).setCellStyle(cellStyle); /创建Excel工作表指定行的单元格     6. row.createCell(short)0).setCellValue(1); /设置Excel工作表的值    7. HSSFWorkbook wb = new HSSFWorkbook();/创建Excel工作簿对象  8. HSSFSheet&#

13、160;sheet = wb.createSheet("new sheet");/创建Excel工作表对象    9. HSSFRow row = sheet.createRow(short)0); /创建Excel工作表的行  10. cellStyle = wb.createCellStyle();/创建单元格样式  11. row.createCell(short)0).setCellStyle(ce

14、llStyle); /创建Excel工作表指定行的单元格  12. row.createCell(short)0).setCellValue(1); /设置Excel工作表的值  3、设置sheet名称和单元格内容 Java代码  1. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);           &

15、#160;2. cell.setEncoding(short) 1);        3. cell.setCellValue("单元格内容");    4. wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16);          5. cell.setEncod

16、ing(short) 1);      6. cell.setCellValue("单元格内容");   4、取得sheet的数目 Java代码  1. wb.getNumberOfSheets()     2. wb.getNumberOfSheets()   5、  根据index取得sheet对象 Java代码  1. H

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

18、um();  7、取得一行的有效单元格个数 Java代码  1. row.getLastCellNum();      2. row.getLastCellNum();     8、单元格值类型读写 Java代码  1. cell.setCellType(HSSFCell.CELL_TYPE_STRING); /设置单元格为STRING类型     

19、;2. cell.getNumericCellValue();/读取为数值类型的单元格内容    3. cell.setCellType(HSSFCell.CELL_TYPE_STRING); /设置单元格为STRING类型  4. cell.getNumericCellValue();/读取为数值类型的单元格内容  9、设置列宽、行高 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、添加区域,合并单元格 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的区域        4. /得到所有区域  &#

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的区域     9. /得到所有区域      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、根据单元格不同属性返回字符串数值 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: /数值类型&#

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: /数值类型  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、设置字体和内容位

52、置 Java代码  1. HSSFFont f  = wb.createFont();        2. f.setFontHeightInPoints(short) 11);/字号         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);/单元格内容的旋转的角度         8. HSSFDataFormat df = wb.createDataFormat();        9. style1.setDataFormat(df.getFormat("0.00%");/

55、设置单元格数据格式         10. cell.setCellFormula(string);/给单元格设公式         11. style.setRotation(short rotation);/单元格内容的旋转的角度     12. HSSFFont f  = wb.createFont();

56、0;     13. f.setFontHeightInPoints(short) 11);/字号      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);/单元格内容的旋转的角度      19. HSSFDataFormat df = wb.createDataFor

58、mat();      20. style1.setDataFormat(df.getFormat("0.00%");/设置单元格数据格式      21. cell.setCellFormula(string);/给单元格设公式      22. style.setRotation(short rotation);/单元格内容的旋转的角度   15、插入图

59、片 Java代码  1. /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生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. /读进一个excel模版         6. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt");         7. fs = new POIFSFileSystem(fos); 

62、       8. /创建一个工作薄         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. /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生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. /读进一个excel模版      19. FileInputStream fos = new FileInputStream(filePathName+"/stencil.xlt"); &

67、#160;     20. fs = new POIFSFileSystem(fos);      21. /创建一个工作薄      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、调整工作表位置 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、设置打印区域 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、标注脚注 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、在工作单中清空行数据,调整行位置 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、填充和颜色设置 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、强行刷新单元格公式 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论