一、在pom中添加依赖:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.18</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.18</version>
</dependency>
二、POI中常用方法
三、POI对导出 Excel文件操作:
$\textcolor{Red}{POI 对Excel文件操作版本区分:} $
2003版本(包含2003)以前的扩展名为.xls需要用HSSFWorkbook类操作
2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作
导出:
注意:
2003版本 Excel(包含2003 Excel)以前的扩展名为.xls需要用HSSFWorkbook类操作和 07基本相似就是把XSSFWorkbook换成HSSFWorkbook后缀名改成 点xls
2007版本 Excel(包含2007 Excel)以后的扩展名为.xlsx需要用XSSFWorkbook类操作
1、2003版本:
package Export.Test2003;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 描述:2003版本Excel(包含2003 Excel)以前的扩展名为.xls需要用HSSFWorkbook类操作和 07基本相似
* 就是把XSSFWorkbook换成HSSFWorkbook后缀名改成 点xls
*
* @BelongsProject: POIExcel
* @Author: cn.JS
* @CreateTime: 2023/02/02 15:49:40
* @Version: 1.0
*/
public class PoiExport2003 {
public static void main(String[] args) throws IOException {
//创建工作簿 类似于创建Excel文件
HSSFWorkbook workbook=new HSSFWorkbook();
//创建 sheetname页名
HSSFSheet sheet = workbook.createSheet("员工信息");
//创建一行,下标从0开始
HSSFRow row = sheet.createRow(0);
//创建这行中的列,下标从0开始 (表头)
HSSFCell cell = row.createCell(0);
// 给cell 0下表赋值
cell.setCellValue("姓名");
//创建这行中的列,并给该列直接赋值
row.createCell(1).setCellValue("年龄");
row.createCell(2).setCellValue("性别");
row.createCell(3).setCellValue("生日");
row.createCell(4).setCellValue("手机号");
// 设置表里内容
row = sheet.createRow(1);
row.createCell(0).setCellValue("张无忌");
row.createCell(1).setCellValue("22");
row.createCell(2).setCellValue("男");
row.createCell(3).setCellValue("1998-11-21");
row.createCell(4).setCellValue("111111111");
row = sheet.createRow(2);
row.createCell(0).setCellValue("周芷若");
row.createCell(1).setCellValue("18");
row.createCell(2).setCellValue("女");
row.createCell(3).setCellValue("1999-06-20");
row.createCell(4).setCellValue("222222222");
row = sheet.createRow(3);
row.createCell(0).setCellValue("张三丰");
row.createCell(1).setCellValue("78");
row.createCell(2).setCellValue("男");
row.createCell(3).setCellValue("1921-03-20");
row.createCell(4).setCellValue("3333333333");
//设定 路径
File file = new File("E:\\workspace\\员工信息22.xls");
FileOutputStream stream = new FileOutputStream(file);
// 需要抛异常
workbook.write(stream);
//关流
stream.close();
}
}
2、2007版本:
package Export.Test2007;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 描述:导出 Excel文件 2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作
*
* @BelongsProject: POIExcel
* @Author: cn.JS
* @CreateTime: 2023/02/02 15:40:50
* @Version: 1.0
*/
public class PoiExport2007 {
public static void main(String[] args) throws IOException {
/**
* sheet.setColumnWidth(x,20*256);//x=给第几列设置为20个字的宽度
*
*/
//创建工作簿 类似于创建Excel文件
XSSFWorkbook workbook=new XSSFWorkbook();
//创建 sheetname页名
XSSFSheet sheet = workbook.createSheet("员工信息");
sheet.setColumnWidth(3,20*256);//给第3列设置为20个字的宽度
sheet.setColumnWidth(4,20*256);//给第4列设置为20个字的宽度
//创建一行,下标从0开始
XSSFRow row = sheet.createRow(0);
//创建这行中的列,下标从0开始 (表头)
XSSFCell cell = row.createCell(0);
// 给cell 0下表赋值
cell.setCellValue("姓名");
//创建这行中的列,并给该列直接赋值
row.createCell(1).setCellValue("年龄");
row.createCell(2).setCellValue("性别");
row.createCell(3).setCellValue("生日");
row.createCell(4).setCellValue("手机号");
// 设置表里内容
row = sheet.createRow(1);
row.createCell(0).setCellValue("熊傲天");
row.createCell(1).setCellValue("22");
row.createCell(2).setCellValue("男");
row.createCell(3).setCellValue("1998-11-21");
row.createCell(4).setCellValue("111111111");
row = sheet.createRow(2);
row.createCell(0).setCellValue("清雅");
row.createCell(1).setCellValue("18");
row.createCell(2).setCellValue("女");
row.createCell(3).setCellValue("1999-06-20");
row.createCell(4).setCellValue("222222222");
row = sheet.createRow(3);
row.createCell(0).setCellValue("柑橘节");
row.createCell(1).setCellValue("78");
row.createCell(2).setCellValue("男");
row.createCell(3).setCellValue("1921-03-20");
row.createCell(4).setCellValue("3333333333");
//设定 路径
File file = new File("E:\\workspace\\员工信息.xlsx");
FileOutputStream stream = new FileOutputStream(file);
// 需要抛异常
workbook.write(stream);
//关流
stream.close();
}
}
读取
1、2003版本:
package Import.Test2003;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class PoiImport2003 {
public static void main(String[] args) throws IOException {
import03();
}
public static void import03() throws IOException {
File file = new File("E:\\workspace\\员工信息22.xls");
//获得该文件的输入流
FileInputStream stream = new FileInputStream(file);
// 多态 抛异常
Workbook sheets = new HSSFWorkbook(stream);
//获取一个工作表(sheet页),下标从0开始
Sheet sheet = sheets.getSheetAt(0);
for (int i = 1; i<=sheet.getLastRowNum() ; i++) {
// 获取行数
Row row = sheet.getRow(i);
// 获取单元格 取值
String value1 = row.getCell(0).getStringCellValue();
String value2 = row.getCell(1).getStringCellValue();
String value3 = row.getCell(2).getStringCellValue();
String value4 = row.getCell(3).getStringCellValue();
String value5= row.getCell(4).getStringCellValue();
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println(value5);
}
//关流
sheets.close();
stream.close();
}
}
4、2007版本:
package Import.Test2007;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class PoiImport2007 {
public static void main(String[] args) throws IOException {
import07();
}
public static void import07() throws IOException {
File file = new File("E:\\workspace\\员工信息.xlsx");
//获得该文件的输入流
FileInputStream stream = new FileInputStream(file);
// 多态 抛异常
Workbook sheets = new XSSFWorkbook(stream);
//获取一个工作表(sheet页),下标从0开始
Sheet sheet = sheets.getSheetAt(0);
for (int i = 1; i<=sheet.getLastRowNum() ; i++) {
// 获取行数
Row row = sheet.getRow(i);
// 获取单元格 取值
String value1 = row.getCell(0).getStringCellValue();
String value2 = row.getCell(1).getStringCellValue();
String value3 = row.getCell(2).getStringCellValue();
String value4 = row.getCell(3).getStringCellValue();
String value5= row.getCell(4).getStringCellValue();
System.out.println(value1);
System.out.println(value2);
System.out.println(value3);
System.out.println(value4);
System.out.println(value5);
}
//关流
sheets.close();
stream.close();
}
}