Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
结构:
-
- HSSF - 提供读写Microsoft Excel格式档案的功能。
- XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
- HWPF - 提供读写Microsoft Word格式档案的功能。
- HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
- HDGF - 提供读写Microsoft Visio格式档案的功能。
使用必须引入依赖
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.15</version> </dependency>
1.写入Excel2003版本
/**
* 写入excel的方法, 07之前的版本,文件类型为.xls
* 07及07之后的版本,文件类型为.xlsx
* @throws Exception
*/
public static void writeExcel03() throws Exception{
/*
*
* 这是最基本的创建excel的方法,所有的值都给的固定值。
*
*/
//创建新excel文档,07版本之前均可以这么写
HSSFWorkbook workbook = new HSSFWorkbook();
//新建工作表
HSSFSheet sheet = workbook.createSheet("test");
//新建行
HSSFRow row = sheet.createRow(0);
//取第一行第一列
HSSFCell cell = row.createCell(0);
//给第一行第一列赋值
cell.setCellValue("我是谁?");
//将新建的工作表保存到硬盘中
FileOutputStream fos = new FileOutputStream(new File("C:\Users\admin\Desktop\aa.xls"));
workbook.write(fos);
fos.close();
}
2.写入Excel2007版本
/*
* 创建07及以后excel的写法
*
* */
public static void writeExcel07() throws Exception{
/*
* 创建07之后的版本使用的工厂类为XSSFWorkbook
*
* */
//创建新表格文件
XSSFWorkbook workbook = new XSSFWorkbook();
//创建新表单
XSSFSheet sheet = workbook.createSheet("test07");
//创建sheet表单中的行
XSSFRow row = sheet.createRow(0);
//选取行中对应的列
XSSFCell cell = row.createCell(0);
//给对应的列中赋值
cell.setCellValue("test");
//输出创建的文件,存储到硬盘中
FileOutputStream fos = new FileOutputStream(new File("C:\Users\admin\Desktop\test.xlsx"));
//workbook的write方法调用,不能忘啊
workbook.write(fos);
fos.close();
}
3.读取Excel03以及07版本
/*
* 在实际应用中,在读取文件的时候,我们不一定确定读取的excel的具体版本,所以,在输入和输出的语句需要添加判断来让其适应不同的版本
*
* */
public static void readExcel03and07() throws Exception{
//读取文件的路径
String filepath = "C:\Users\admin\Desktop\07.xlsx";
//判断文件的格式,
if(filepath.matches("^.+\.(?i)((xls)|(xlsx))$")){
FileInputStream fis = new FileInputStream(filepath);
boolean is03Excel = filepath.matches("^.+\.(?i)((xls))$")?true:false; //判断是2003还是2007
Workbook workbook = is03Excel ? new HSSFWorkbook(fis):new XSSFWorkbook(fis);
// Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0);
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
System.out.println("第一行第一列的数据是:"+cell.getStringCellValue());
}
}