您的位置:首页 > 其它

对于poi的一点认识

2018-04-07 21:30 211 查看
这是小编的第一篇博客,写的不好多多包涵,小编是一名新进的程序员。在写程序的道路上我还是一个新手。这篇文章主要跟大家分享一下我在用poi进行Excel进行操作的一点认识。如果有讲的不对的地方希望各位前辈大佬能多多指点,小编受用不尽。




首先,我们先了解一下我所知道的能对Excel进行操作的工具包。java对于Excel的操作工具主要有两种。分别是jxl和poi。这两个工具包还是有一些区别的,像效率上的差别。不过,我觉得最主要的差别还是在两个工具包对于Excel的版本操作上。因为jxl是无法对以xlsx为后缀的Excel文件进行读写操作的。而poi可以对xls和xlsx为后缀的Excel的文件进行读写操作。




接下来,我们了解如何使用poi。

poi工具包的导入,对于poi的导入大家有两种方式的选择,第一种从网上找到poi的jar包,然后放到你的java项目中。第二种,通过maven导入jar包。小编个人推荐第二种,因为方便快捷。
poi的使用:

首先,我们要创建一个Excel的对象,poi针对Excel的两个版本提供了两个类(xls:HSSFWorkbook,xlsx:XSSFWorkbook)。这两个类都实现了woekbook接口。我们可以根据用户上传的文件的后缀来判断我们要生成那类。来生成我们想要的对象(可以利用多态来实现)。
Workbook wb = null;
inp = new FileInputStream(address);
if(address.endsWith("xls")){
wb = new HSSFWorkbook(inp);
}else{
wb = new XSSFWorkbook(inp);
}

在Excel中一个文件会有很多的sheet组成,所以poi中也为我们提供了相应的获取到不同的sheet的方法。getSheetAt(int)或getSheet(String)这两个方法第一个是根据sheet的序号来确定那个sheet的第二个则是通过sheet的名字来确定的
Sheet she = wb.getSheetAt(0);
Sheet she = wb.getSheet(name);

我们知道Excel中的内容就像关系数据库中的表结构一样分为行和列。我们通过行值和列值确定所在的单元格。在poi中也为我们提供了两个接口对这两个属性进行抽象,分别是Row和Cell。为什么是接口,其实原因与workbook是一样因为Excel有两个版本,所以有四个类分别实现了这两个接口。分别是(HSSFRow、XSSFRow、HSSFCell、XSSFCell)这里的Row的对象是通过sheet对象中的getRow()方法获得的具体的row的对象的。这个方法中获取的是int参数,它代表的是想要获取的行号,行号从0开始计算。那如何获取的全部的行数?在poi中的并没有直接获取行数的方法,但我们可以通过getLastRowNum()方法获取最后一行所在的行号在把它加1来获取行号。现在我们已经知道如何获取特定的行的对象了。现在我们可以通过特定的列来获取单元格对象了。但是poi中并没有为列创建特定的类,创建的是单元格对象Cell。这里poi是通过row中的getCell()方法来获得cell的对象的。这个方法中的参数我们就可以把它理解成为是该单元格所在的列。同样的row中也为我们定义了getLastCellNum()方法来为我们提供该行的单元格数,对是单元格数而不是最后一个单元格的列数,这点与row的行数的获取方法是不一样的。
当你获得了cell对象后我们可以对这个单元格进行很多操作,比如更改颜色,合并单元格,这里给大家介绍最简单的获取和更改单元格的中的值。我们先讲如何获取单元格的值。首先,我们要确定你获取的这个单元格对象不是空,直接cell对象 !=null就好。然后直接cell对象.toString()。就能把单元格中的内容全部以字符串内容读取出来。当你想在单元格中填入值时,有两种情况一是你的单元格已经存在,这种情况直接用cell对象调用setCellValue()。
Cell cell = rowOne.getCell(0);
cell.setCellValue("1234");


第二种情况是你要插入的是你要插入的值的cell对象不存在,你需要先创造一个cell对象,在调用setCellValue()方法。rowOne.createCell(0).setCellValue(beanElement.attribute("name").getValue());


今天的poi的介绍就在这里,其实poi的操作还有很多,在这里就不一一介绍了,各位可以在csdn中找到很多,最后还是希望这片文章能给大家带来帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jar