Apache POI是Apache软件基金会的开源项目,由Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java语言操作Microsoft Office的功能。
Apache POI是目前最流行的操作Microsoft Office的API组件,借助POI可以方便的完成诸如:数据报表生成,数据批量上传,数据备份等工作。
Excel报表是一种最常见的报表需求。Excel报表开发一般分为两种形式:
- 为了方便操作,基于Excel的报表批量上传数据
目前世面上的Excel分为两个大的版本Excel2003和Excel2007及以上两个版本;
两者之间的区别如下:
Excel2003是一个特有的二进制格式,其核心结构是复合文档类型的结构,存储数据量较小;Excel2007 的核心结构是 XML 类型的结构,采用的是基于 XML 的压缩方式,使其占用的空间更小,操作效率更高。
添加依赖
<dependencies>
<!--2003或以下-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<!--2007或以上-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<!--2007或以上-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
编写获取excel测试类
注意:getSheet("是左下角excel模板名称")如下:
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ApachePOI {
/**
* 2003或以下:HSSFWorkbook
* 读取数据
*/
@Test
public void test1() throws Exception {
//1.读取工作簿
//1.1 读取文件流
FileInputStream inputStream = new FileInputStream("d:/上传货物模板2.xls");
HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
//2.读取工作单
HSSFSheet sheet = workbook.getSheet("ddd");
//3.读取行
HSSFRow row = sheet.getRow(0);
//4.读取列
System.out.println(row.getCell(1).getStringCellValue());
System.out.println(row.getCell(2).getStringCellValue());
}
/**
* 2007或以上: XSSFWorkbook
* 读取数据
*/
@Test
public void text02() throws Exception {
//1.读取工作簿
//1.1 读取文件流
FileInputStream inputStream = new FileInputStream("d:/上传货物模板.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
//2.读取工作单
XSSFSheet sheet = workbook.getSheet("ddd");
//3.读取行
XSSFRow row = sheet.getRow(0);
//4.读取列
System.out.println(row.getCell(1).getStringCellValue());
System.out.println(row.getCell(2).getStringCellValue());
}
}
编写写入excel测试类
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class ApachePOI {
/**
* 2003或以下:HSSFWorkbook
* 写入
*/
@Test
public void text03() throws Exception {
//1.创建工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//2.创建工作单
HSSFSheet sheet = workbook.createSheet("学生表");
//3.创建行
HSSFRow row1 = sheet.createRow(0);
HSSFRow row2 = sheet.createRow(1);
//4.创建列,设置列的内容
row1.createCell(0).setCellValue("学生名字");
row1.createCell(1).setCellValue("学生年龄");
row2.createCell(0).setCellValue("小仓");
row2.createCell(1).setCellValue("18");
//5.把工作簿写出到硬盘中(如果没有该文件将自动创建)
workbook.write(new FileOutputStream("d:/student.xls"));
}
/**
* 2007或以上: XSSFWorkbook
* 写入
*/
@Test
public void text04() throws Exception {
//1.创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook();
//2.创建工作单
XSSFSheet sheet = workbook.createSheet("学生表");
//3.创建行
XSSFRow row1 = sheet.createRow(0);
XSSFRow row2 = sheet.createRow(1);
//4.创建列,设置列的内容
row1.createCell(0).setCellValue("学生姓名");
row1.createCell(1).setCellValue("学生年龄");
row2.createCell(0).setCellValue("小苍");
row2.createCell(1).setCellValue("18");
//5.把工作簿写出到硬盘中(如果没有该文件将自动创建)
workbook.write(new FileOutputStream("d:/student2.xlsx"));
}
}
希望这边文章对您有帮助!
文章评论