Apache-HSSF 对文档的修改读取及写入是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。
HSSFWorkbook excel文档对象
HSSFSheet excel的sheet
HSSFName 名称
HSSFHeader sheet的头
HSSFRowexcel 的行
HSSFFooter sheet的尾
HSSFCell excel的单元格
HSSFCellStyle cell的样式
HSSFFont excel 字体
HSSFDataFormat 日期格式
//excel文件位置 String readfilePath=“f:\\2019-04-23 22_53_44____.xls”; //创建对excel文件的引用 HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(readfilePath)) //获取sheet 第一个 HSSFSheet sheet=workbook. getSheetAt(0); //获取其中一行cell HSSFRow row=sheet.getRow(1); //获取行结束位置 int colCount=sheet.getRow(0).getLastCellNum(); //遍历 for(int j=1;j<colCount;j++) { row.getCell(j).setCellType(CellType.STRING); System.out.println(j+"::"+row.getCell(j).getStringCellValue()); }
//获取sheet数目 Int sheetCount=workbook.getNumberOfSheets(); //取得有效行数 Int rowCount=sheet.getLastRowNum(); //获得一行有效单元格个数 Int cellCount=row.getLastCellNum(); //值类型读写 cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型 cell.getNumericCellValue();//读取为数值类型的单元格内容 /* 读取注意cell是什么类型 string or 数值 */
//设置excel存放文件位置 public static String writefilePath=“f:\\test.xls”; //创建excel文件 HSSFWorkbook workbook=new HSSFWorkbook(); //创建sheet 第一个 HSSFSheet sheet=workbook. createSheet("创建的第一个sheet"); //创建一行cell HSSFRow row=sheet.createRow(0); //模拟数据在一行显示 String[] testTitle={"课程","学期","院系","开课院系","专业","班级"}; //遍历生成一行cell for(int j=0;j<testTitle.length;j++) { row.createCell(j).setCellValue(testTitle[j]); } //文件输出 FileOutputStream output=new FileOutputStream(writefilePath); workbook.write(output); output.flush(); output.close();
//1.设置列宽,行高 sheet.setColumnWidth((short)column,(short)width); row.setHeight((short)height); //2.添加区域,合并单元格 Region region = new Region(rowFrom,columnFrom,rowTo ,columnTo); //合并从第rowFrom行columnFrom列 sheet.addMergedRegion(region);// 到rowTo行columnTo的区域 //得到所有区域 sheet.getNumMergedRegions() //3.设置单元格边框格式 HSSFCellStyle style = wb.createCellStyle(); style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框 style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框 style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框 style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框 //单元格的合并 sheet.addMergedRegion(new CellRangeAddress(0, 4, 0, 2));本示例为合并4行2列 //4、设置字体和内容位置 HSSFFont f = wb.createFont(); f.setFontHeightInPoints((short) 11);//字号 f.setBold(true);//加粗 style.setFont(f); style.setAlignment(HorizontalAlignment.CENTER); HSSFDataFormat df = wb.createDataFormat(); style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式 cell.setCellFormula(string);//给单元格设公式 style.setRotation(short rotation);//单元格内容的旋转的角度 //5.对角线设置 通过画线的方式 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); HSSFClientAnchor a = new HSSFClientAnchor(0, 0, 1023, 255, (short)7, 0, (short)7, 2); HSSFShapeGroup group = patriarch.createGroup(a); group.setCoordinates(0, 0, 320, 276); float verticalPointsPerPixel = a.getAnchorHeightInPoints(sheet) / Math.abs(group.getY2() - group.getY1()); EscherGraphics g = new EscherGraphics(group, workbook, Color.black, verticalPointsPerPixel); EscherGraphics2d g2d = new EscherGraphics2d(g); g2d.drawLine(0, 0, 320, 276); //6、插入图片 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); //插入圖片 ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); BufferedImage bufferImg = ImageIO.read(new File("f:\\downloadfile-14.jpg")); ImageIO.write(bufferImg,"jpg",byteArrayOut); //设置位置 HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 1023, 255, (short) 0, 0, (short) 11, 11); // 插入图片 patriarch.createPicture(anchor, workbook.addPicture(byteArrayOut.toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); // 6.创建页眉和页脚 HSSFSheet sheet = workbook.createSheet("Test");// 创建工作表(Sheet) HSSFHeader header =sheet.getHeader();//得到页眉 header.setLeft("页眉左边"); header.setRight("页眉右边"); header.setCenter("页眉中间"); HSSFFooter footer =sheet.getFooter();//得到页脚 footer.setLeft("页脚左边"); footer.setRight("页脚右边"); footer.setCenter("页脚中间");
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。