已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、 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常用对象Java代码1. POIFSFileSystemfs=newPOIFSFileSystem(newFileInputStream(d:/test.xls);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(newFileInputStream(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常用对象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).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工作表指定行的单元格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(单元格内容);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. 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)column,(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);/到rowTo行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. FileOutputStreamfileOut=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=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. 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(HSSFCellcell)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(cell.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. caseHSSFCell.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.BORDER_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(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_CENTER);/上下居中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(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();20. style1.setDataFormat(df.getFormat(0.00%);/设置单元格数据格式21. cell.setCellFormula(string);/给单元格设公式22. style.setRotation(shortrotation);/单元格内容的旋转的角度15、插入图片Java代码1. /先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray2. ByteArrayOutputStreambyteArrayOut=newByteArrayOutputStream();3. BufferedImagebufferImg=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=sheet.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,byteArrayOut);18. /读进一个excel模版19. FileInputStreamfos=newFileInputStream(filePathName+/stencil.xlt);20. fs=newPOIFSFileSystem(fos);21. /创建一个工作薄22. HSSFWorkbookwb=newHSSFWorkbook(fs);23. HSSFSheetsheet=wb.getSheetAt(0);24. HSSFPatriarchpatriarch=sheet.createDrawingPatriarch();25. HSSFClientAnchoranchor=newHSSFClientAnchor(0,0,1023,255,(short)0,0,(short)10,10);26. patriarch.createPicture(anchor,wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG);16、调整工作表位置Java代码1. HSSFWorkbookwb=newHSSFWorkbook();2. HSSFSheetsheet=wb.createSheet(formatsheet);3. HSSFPrintSetupps=sheet.getPrintSetup();4. sheet.setAutobreaks(true);5. ps.setFitHeight(short)1);6. ps.setFitWidth(short)1);7. HSSFWorkbookwb=newHSSFWorkbook();8. HSSFSheetsheet=wb.createSheet(formatsheet);9. HSSFPrintSetupps=sheet.getPrintSetup();10. sheet.setAutobreaks(true);11. ps.setFitHeight(short)1);12. ps.setFitWidth(short)1);17、设置打印区域Java代码1. HSSFSheetsheet=wb.createSheet(Sheet1);2. wb.setPrintArea(0,$A$1:$C$2);3. HSSFSheetsheet=wb.createSheet(Sheet1);4. wb.setPrintArea(0,$A$1:$C$2);18、标注脚注Java代码1. HSSFSheetsheet=wb.createSheet(formatsheet);2. HSSFFooterfooter=sheet.getFooter()3. footer.setRight(Page+HSSFFooter.page()+of+HSSFFooter.numPages();4. HSSFSheetsheet=wb.createSheet(formatsheet);5. HSSFFooterfooter=sheet.getFooter()6. footer.setRight(Page+HSSFFooter.page()+of+HSSFFooter.numPages();19、在工作单中清空行数据,调整行位置Java代码1. HSSFWorkbookwb=newHSSFWorkbook();2. HSSFSheetsheet=wb.createSheet(rowsheet);3. /Createvariouscellsandrowsforspreadsheet.4. /Shiftrows6-11onthespreadsheettothetop(rows0-5)5. sheet.shiftRows(5,10,-5);6. HSSFWorkbookwb=newHSSFWorkbook();7. HSSFSheetsheet=wb.createSheet(rowsheet);8. /Createvariouscellsandrowsforspreadsheet.9. /Shiftrows6-11onthespreadsheettothetop(rows0-5)10. sheet.shiftRows(5,10,-5);20、选中指定的工作表Java代码1. HSSFSheetsheet=wb.createSheet(rowsheet);2. heet.setSelected(true);3. HSSFSheetsheet=wb.createSheet(rowsheet);4. heet.setSelected(true);21、工作表的放大缩小Java代码1. HSSFSheetsheet1=wb.createSheet(newsheet);2. sheet1.setZoom(1,2);/50percentmagnification3. HSSFSheetsheet1=wb.createSheet(newsheet);4. sheet1.setZoom(1,2);/50percentmagnification22、头注和脚注Java代码1. HSSFSheetsheet=wb.createSheet(newsheet);2. HSSFHeaderheader=sheet.getHeader();3. header.setCenter(CenterHeader);4. header.setLeft(LeftHeader);5. header.setRight(HSSFHeader.font(Stencil-Normal,Italic)+6. HSSFHeader.fontSize(short)16)+Rightw/Stencil-NormalItalicfontandsize16);7. HSSFSheetsheet=wb.createSheet(newsheet);8. HSSFHeaderheader=sheet.getHeader();9. header.setCenter(CenterHeader);10. header.setLeft(LeftHeader);11. header.setRight(HSSFHeader.font(Stencil-Normal,Italic)+12. HSSFHeader.fontSize(short)16)+Rightw/Stencil-NormalItalicfontandsize16);23、自定义颜色Java代码1. HSSFCellStylestyle=wb.createCellStyle();2. style.setFillForegroundColor(HSSFColor.LIME.index);3. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);4. HSSFFontfont=wb.createFont();5. font.setColor(HSSFColor.RED.index);6. style.setFont(font);7. cell.setCellStyle(style);8. HSSFCellStylestyle=wb.createCellStyle();9. style.setFillForegroundColor(HSSFColor.LIME.index);10. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);11. HSSFFontfont=wb.createFont();12. font.setColor(HSSFColor.RED.index);13. style.setFont(font);14. cell.setCellStyle(style);24、填充和颜色设置Java代码1. HSSFCellStylestyle=wb.createCellStyle();2. style.setFillBackgroundColor(HSSFColor.AQUA.index);3. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);4. HSSFCellcell=row.createCell(short)1);5. cell.setCellValue(X);6. style=wb.createCellStyle();7. style.setFillForegroundColor(HSSFColor.ORANGE.index);8. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);9. cell.setCellStyle(style);10. HSSFCellStylestyle=wb.createCellStyle();11. style.setFillBackgroundColor(HSSFColor.AQUA.index);12. style.setFillPattern(HSSFCellStyle.BIG_SPOTS);13. HSSFCellcell=row.createCell(short)1);14. cell.setCellValue(X);15. style=wb.createCellStyle();16. style.setFillForegroundColor(HSSFColor.ORANGE.index);17. style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);18. cell.setCellStyle(style);25、强行刷新单元格公式Java代码1. HSSFFormulaEvaluatoreval=newHSSFFormulaEval
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【试题】2026年全国防灾减灾日知识竞赛试题(含答案)
- 麻风病培训试题及答案
- 临床检查结果题库及答案
- 2026年河北省武安市高考物理三轮冲刺考试卷附完整答案详解(夺冠系列)
- 2026年江苏省扬中市高考物理学业考试模拟卷及完整答案详解(有一套)
- 2026年广东省英德市高考物理一轮复习试卷及参考答案详解【突破训练】
- 2025年湖北省丹江口市高考物理强基计划考试卷附参考答案详解【培优B卷】
- 2026年浙江省诸暨市高考物理强基计划考试卷【满分必刷】附答案详解
- 2025年河南省新郑市高考物理真题汇编考试卷及参考答案详解(能力提升)
- 2026年河南省邓州市高考物理学业考试测试卷(考点精练)附答案详解
- 2026甘肃交安考试真题试卷及答案
- 2026年十堰市法院系统招聘雇员制审判辅助人员笔试模拟试题及答案详解
- 中国海洋大学2026年综合评价面试模拟试题+答案解析
- 2026年上海市初中学业水平考试地理试卷真题(含答案详解)
- 五年级(下)英语全册单元重点知识梳理《人教版》
- 2026年一年级升二年级语文暑假衔接作业(纯作业打印版)
- 2026年统编版新教材八年级下册道德与法治期末复习全册考点提纲
- 2026教科版三年级下册科学第一单元《辨别方向》知识点晨读晚默
- 2026浙江宁波市镇海区政务服务中心编外人员招聘考试备考题库及答案解析
- Siemens+AI+白皮书+(Teamcenter篇)指南
- 重庆中考:英语必背知识点归纳
评论
0/150
提交评论