1、POI操作常用方法一、 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 H
2、SSFRow excel的行 HSSFCell excel的单元格 HSSFFont excel字体 HSSFName 名称 HSSFDataFormat 日期格式 HSSFHeader sheet头 HSSFFooter sheet尾 HSSFCellStyle cell样式 HSSFDateUtil 日期 HSSFPrintSetup 打印 HSSFErrorConstants 错误信息表四、 EXCEL常用操作方法1、 得到Excel常用对象Java代码1. POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(d:/test.x
3、ls);2. /得到Excel工作簿对象3. HSSFWorkbookwb=newHSSFWorkbook(fs);4. /得到Excel工作表对象5. HSSFSheetsheet=wb.getSheetAt(0);6. /得到Excel工作表的行7. HSSFRowrow=sheet.getRow(i);8. /得到Excel工作表指定行的单元格9. HSSFCellcell=row.getCell(short)j);10. cellStyle=cell.getCellStyle();/得到单元格样式11. POIFSFileSystemfs=newPOIFSFileSystem(newF
4、ileInputStream(d:/test.xls);12. /得到Excel工作簿对象13. HSSFWorkbookwb=newHSSFWorkbook(fs);14. /得到Excel工作表对象15. HSSFSheetsheet=wb.getSheetAt(0);16. /得到Excel工作表的行17. HSSFRowrow=sheet.getRow(i);18. /得到Excel工作表指定行的单元格19. HSSFCellcell=row.getCell(short)j);20. cellStyle=cell.getCellStyle();/得到单元格样式2、建立Excel常用对象
5、Java代码1. HSSFWorkbookwb=newHSSFWorkbook();/创建Excel工作簿对象2. HSSFSheetsheet=wb.createSheet(newsheet);/创建Excel工作表对象3. HSSFRowrow=sheet.createRow(short)0);/创建Excel工作表的行4. cellStyle=wb.createCellStyle();/创建单元格样式5. row.createCell(short)0).setCellStyle(cellStyle);/创建Excel工作表指定行的单元格6. row.createCell(short)0)
6、.setCellValue(1);/设置Excel工作表的值7. HSSFWorkbookwb=newHSSFWorkbook();/创建Excel工作簿对象8. HSSFSheetsheet=wb.createSheet(newsheet);/创建Excel工作表对象9. HSSFRowrow=sheet.createRow(short)0);/创建Excel工作表的行10. cellStyle=wb.createCellStyle();/创建单元格样式11. row.createCell(short)0).setCellStyle(cellStyle);/创建Excel工作表指定行的单元格
7、12. row.createCell(short)0).setCellValue(1);/设置Excel工作表的值3、设置sheet名称和单元格内容Java代码1. wb.setSheetName(1,第一张工作表,HSSFCell.ENCODING_UTF_16);2. cell.setEncoding(short)1);3. cell.setCellValue(单元格内容);4. wb.setSheetName(1,第一张工作表,HSSFCell.ENCODING_UTF_16);5. cell.setEncoding(short)1);6. cell.setCellValue(单元格内容
8、);4、取得sheet的数目Java代码1. wb.getNumberOfSheets()2. wb.getNumberOfSheets()5、 根据index取得sheet对象Java代码1. HSSFSheetsheet=wb.getSheetAt(0);2. HSSFSheetsheet=wb.getSheetAt(0);6、取得有效的行数Java代码1. introwcount=sheet.getLastRowNum();2. introwcount=sheet.getLastRowNum();7、取得一行的有效单元格个数Java代码1. row.getLastCellNum();2.
9、 row.getLastCellNum();8、单元格值类型读写Java代码1. cell.setCellType(HSSFCell.CELL_TYPE_STRING);/设置单元格为STRING类型2. cell.getNumericCellValue();/读取为数值类型的单元格内容3. cell.setCellType(HSSFCell.CELL_TYPE_STRING);/设置单元格为STRING类型4. cell.getNumericCellValue();/读取为数值类型的单元格内容9、设置列宽、行高Java代码1. sheet.setColumnWidth(short)colum
10、n,(short)width);2. row.setHeight(short)height);3. sheet.setColumnWidth(short)column,(short)width);4. row.setHeight(short)height);10、添加区域,合并单元格Java代码1. Regionregion=newRegion(short)rowFrom,(short)columnFrom,(short)rowTo2. ,(short)columnTo);/合并从第rowFrom行columnFrom列3. sheet.addMergedRegion(region);/到ro
11、wTo行columnTo的区域4. /得到所有区域5. sheet.getNumMergedRegions()6. Regionregion=newRegion(short)rowFrom,(short)columnFrom,(short)rowTo7. ,(short)columnTo);/合并从第rowFrom行columnFrom列8. sheet.addMergedRegion(region);/到rowTo行columnTo的区域9. /得到所有区域10. sheet.getNumMergedRegions()11、保存Excel文件Java代码1. FileOutputStream
12、fileOut=newFileOutputStream(path);2. wb.write(fileOut);3. FileOutputStreamfileOut=newFileOutputStream(path);4. wb.write(fileOut);12、根据单元格不同属性返回字符串数值Java代码1. publicStringgetCellStringValue(HSSFCellcell)2. StringcellValue=;3. switch(cell.getCellType()4. caseHSSFCell.CELL_TYPE_STRING:/字符串类型5. cellValue
13、=cell.getStringCellValue();6. if(cellValue.trim().equals()|cellValue.trim().length()=0)7. cellValue=;8. break;9. caseHSSFCell.CELL_TYPE_NUMERIC:/数值类型10. cellValue=String.valueOf(cell.getNumericCellValue();11. break;12. caseHSSFCell.CELL_TYPE_FORMULA:/公式13. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC
14、);14. cellValue=String.valueOf(cell.getNumericCellValue();15. break;16. caseHSSFCell.CELL_TYPE_BLANK:17. cellValue=;18. break;19. caseHSSFCell.CELL_TYPE_BOOLEAN:20. break;21. caseHSSFCell.CELL_TYPE_ERROR:22. break;23. default:24. break;25. 26. returncellValue;27. 28. publicStringgetCellStringValue(H
15、SSFCellcell)29. StringcellValue=;30. switch(cell.getCellType()31. caseHSSFCell.CELL_TYPE_STRING:/字符串类型32. cellValue=cell.getStringCellValue();33. if(cellValue.trim().equals()|cellValue.trim().length()=0)34. cellValue=;35. break;36. caseHSSFCell.CELL_TYPE_NUMERIC:/数值类型37. cellValue=String.valueOf(cel
16、l.getNumericCellValue();38. break;39. caseHSSFCell.CELL_TYPE_FORMULA:/公式40. cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);41. cellValue=String.valueOf(cell.getNumericCellValue();42. break;43. caseHSSFCell.CELL_TYPE_BLANK:44. cellValue=;45. break;46. caseHSSFCell.CELL_TYPE_BOOLEAN:47. break;48. caseHS
17、SFCell.CELL_TYPE_ERROR:49. break;50. default:51. break;52. 53. returncellValue;54. 13、常用单元格边框格式Java代码1. HSSFCellStylestyle=wb.createCellStyle();2. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);/下边框3. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);/左边框4. style.setBorderRight(HSSFCellStyle.BORD
18、ER_THIN);/右边框5. style.setBorderTop(HSSFCellStyle.BORDER_THIN);/上边框6. HSSFCellStylestyle=wb.createCellStyle();7. style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);/下边框8. style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);/左边框9. style.setBorderRight(HSSFCellStyle.BORDER_THIN);/右边框10. style.setBorderTop
19、(HSSFCellStyle.BORDER_THIN);/上边框14、设置字体和内容位置Java代码1. HSSFFontf=wb.createFont();2. f.setFontHeightInPoints(short)11);/字号3. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);/加粗4. style.setFont(f);5. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);/左右居中6. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CEN
20、TER);/上下居中7. style.setRotation(shortrotation);/单元格内容的旋转的角度8. HSSFDataFormatdf=wb.createDataFormat();9. style1.setDataFormat(df.getFormat(0.00%);/设置单元格数据格式10. cell.setCellFormula(string);/给单元格设公式11. style.setRotation(shortrotation);/单元格内容的旋转的角度12. HSSFFontf=wb.createFont();13. f.setFontHeightInPoints
21、(short)11);/字号14. f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);/加粗15. style.setFont(f);16. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);/左右居中17. style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);/上下居中18. style.setRotation(shortrotation);/单元格内容的旋转的角度19. HSSFDataFormatdf=wb.createDataFormat()
22、;20. style1.setDataFormat(df.getFormat(0.00%);/设置单元格数据格式21. cell.setCellFormula(string);/给单元格设公式22. style.setRotation(shortrotation);/单元格内容的旋转的角度15、插入图片Java代码1. /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray2. ByteArrayOutputStreambyteArrayOut=newByteArrayOutputStream();3. BufferedImagebufferImg=
23、ImageIO.read(newFile(ok.jpg);4. ImageIO.write(bufferImg,jpg,byteArrayOut);5. /读进一个excel模版6. FileInputStreamfos=newFileInputStream(filePathName+/stencil.xlt);7. fs=newPOIFSFileSystem(fos);8. /创建一个工作薄9. HSSFWorkbookwb=newHSSFWorkbook(fs);10. HSSFSheetsheet=wb.getSheetAt(0);11. HSSFPatriarchpatriarch=s
24、heet.createDrawingPatriarch();12. HSSFClientAnchoranchor=newHSSFClientAnchor(0,0,1023,255,(short)0,0,(short)10,10);13. patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG);14. /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray15. ByteArrayOutputStreambyteArrayOut=newByteArrayOutputStream();16. BufferedImagebufferImg=ImageIO.read(newFile(ok.jpg);17. ImageIO.write(bufferImg,jpg
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1