温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Apache-HSSF 对文档的修改读取及写入是怎么样的

发布时间:2021-10-20 17:00:21 来源:亿速云 阅读:138 作者:柒染 栏目:大数据

Apache-HSSF 对文档的修改读取及写入是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、HSSF概述

  • HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

二、poi excel文档结构

  • HSSFWorkbook           excel文档对象

  • HSSFSheet                   excel的sheet

  • HSSFName                   名称

  • HSSFHeader                 sheet的头

  • HSSFRowexcel 的行

  • HSSFFooter                 sheet的尾

  • HSSFCell                     excel的单元格

  • HSSFCellStyle             cell的样式

  • HSSFFont                    excel 字体

  • HSSFDataFormat        日期格式

三、导入excel

//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());
}

常用api导入

//获取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

//设置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();

导出excel常用api

//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("页脚中间");

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI