1、POI依赖导入
<!-- POI依赖 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
2、导入方法代码
public static void inputExcel() {
// 创建文件并指定文件路径
File file = new File("D:\\newDemo.xlsx");
try {
// 创建改文件的输入流
FileInputStream stream = new FileInputStream(file);
// 创建工作簿
XSSFWorkbook workbook = new XSSFWorkbook(stream);
// 获取一个工作表,下标从0开始
XSSFSheet sheet = workbook.getSheetAt(0);
// 存储行数据
List<List<String>> list = new ArrayList<>();
// 通过循环,逐行取出表中每行数据
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
// 存储列数据
List<String> value = new ArrayList<>();
// 获取某一行
XSSFRow row = sheet.getRow(i);
// 获取列数量
int lastCellNum = row.getLastCellNum();
// 遍历列
for (int j = 0; j < lastCellNum; j++) {
if (row.getCell(j).getCellType()==CellType.STRING){
//单元格类型为STRING,无需设置
value.add(row.getCell(j).getStringCellValue());
} else if (row.getCell(j).getCellType()==CellType.NUMERIC) {
//设置单元格类型为STRING
row.getCell(j).setCellType(CellType.STRING);
value.add(row.getCell(j).getStringCellValue());
} else if (row.getCell(j).getCellType()==CellType._NONE) {
//设置单元格类型_NONE
row.getCell(j).setCellType(CellType._NONE);
value.add(row.getCell(j).getStringCellValue());
} else if (row.getCell(j).getCellType()==CellType.BLANK) {
//设置单元格类型BLANK
row.getCell(j).setCellType(CellType.BLANK);
value.add(row.getCell(j).getStringCellValue());
}else if (row.getCell(j).getCellType()==CellType.BOOLEAN) {
//设置单元格类型BOOLEAN
row.getCell(j).setCellType(CellType.BOOLEAN);
value.add(row.getCell(j).getStringCellValue());
}else if (row.getCell(j).getCellType()==CellType.ERROR) {
//设置单元格类型ERROR
row.getCell(j).setCellType(CellType.ERROR);
value.add(row.getCell(j).getStringCellValue());
}else if (row.getCell(j).getCellType()==CellType.FORMULA) {
//设置单元格类型FORMULA
row.getCell(j).setCellType(CellType.FORMULA);
value.add(row.getCell(j).getStringCellValue());
}
}
list.add(value);
}
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
}
}
3、导出方法代码
// Excel数据导出
public static void outputExcel() {
// Excel2003版本(包含2003)以前使用HSSFWorkbook类,扩展名为.xls
// Excel2007版本(包含2007)以后使用XSSFWorkbook类,扩展名为.xlsx
// 创建工作簿类
XSSFWorkbook workbook = new XSSFWorkbook();
// 创建工作表并设置表名
XSSFSheet sheet = workbook.createSheet("学生信息");
// 【第一行】 创建行,下标从0开始
XSSFRow row = sheet.createRow(0);
// 在行中创建列并赋值,下标从0开始
row.createCell(0).setCellValue("学号");
row.createCell(1).setCellValue("姓名");
row.createCell(2).setCellValue("年龄");
row.createCell(3).setCellValue("成绩");
// 【第二行】
row = sheet.createRow(1);
row.createCell(0).setCellValue("1001");
row.createCell(1).setCellValue("周三");
row.createCell(2).setCellValue("软件工程");
row.createCell(3).setCellValue("80");
// 设置Excel文件路径
File file = new File("D:\\demo.xlsx");
try {
// 创建指向该路径的输出流
FileOutputStream stream = new FileOutputStream(file);
// 将数据导出到Excel表格
workbook.write(stream);
// 关闭输出流
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
4、Main方法代码
public static void main(String[] args) {
inputExcel();
outputExcel();
}
5、输出结果
输出前文件数据展示
输出后文件数据展示