版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能家居设计方案总结报告(2篇)
- 智慧农业解决方案事例(2篇)
- 2024年聊城市高三二模语文试卷(含答案)
- 高考生物第一轮复习知识点挖空练习3不定项选择(原卷版+答案解析)
- 舞蹈节目串词
- 浅谈话题作文的写作技巧
- 海南省临高县2024届物理八年级下册期末教学质量检测试题含解析
- 工业资本主义、生态经济学、全球环境治理与生态民主协商制度西方生态文明思想理论述评
- 办公楼装修改造工程施工及方案
- 关键审计事项审计师的免责声明企业真实活动盈余管理和关键审计事项披露的差异化
- 识字写字教学课件
- 多管发酵法测定水中大肠菌群
- 2022年哈尔滨市平房区卫生健康系统事业单位招聘笔试模拟试题及答案解析
- 心理测量-效度课件
- 粮油储藏技术规范
- 预防校园欺凌-共创和谐校园-模拟法庭剧本
- 坐标网格纸(A4满张打印更实用)
- DB37-T 3916-2020 人民防空工程调查测绘技术规范-(高清版)
- (优质)新疆地方史期末考试试题及答案
- 六年级下册数学数学思考(教学课件 )
- DB2306T 038-2021 酒店会议服务规范
评论
0/150
提交评论