导包:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.16</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.16</version>
</dependency>
数据处理:
package com.example.springboot;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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 org.apache.poi.ss.usermodel.Cell;
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.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class DataProcess {
public static void readExcel(String path, int n, String path1) throws Exception {
// 判断Excel版本
String excelType = path.substring(path.lastIndexOf(".") + 1);
if (excelType.equals("xlsx")) {
// Excel 2010 以及 更高版本
// 读取xlsx文件内容
addHeadxlsx(path, n, path1);
} else {
// Excel 2007 以及更低版本
// 读取xls文件内容
addHeadxls(path, n, path1);
}
}
public static void addHeadxls(String path, int num, String path1) throws IOException {
InputStream in = new FileInputStream(path);
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(in);
// 获取当前页
HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(num);
@SuppressWarnings("resource")
Workbook wb = new HSSFWorkbook();// 新建一个工作簿
FileOutputStream fout = new FileOutputStream(path1);
Sheet sheet = wb.createSheet("第一个sheet页");// 创建一个sheet页
// copy 头行
int i = 0;// 第一个行插入位置
if (hssfSheet != null) {
int rowNum0 = 0;
Row row0 = sheet.createRow(rowNum0); // 创建一个行 第一行
// 获取行数据
HSSFRow hssfRow0 = hssfSheet.getRow(rowNum0);
// 第一个(最小的)列号
int minColIX0 = hssfRow0.getFirstCellNum();
// 最后一个(最大的)列号
int maxColIX0 = hssfRow0.getLastCellNum();
for (int colIX = minColIX0; colIX < maxColIX0; colIX++) {
// 获取单元格
HSSFCell cell = hssfRow0.getCell(colIX);
if (cell != null) {
if (cell.toString().equalsIgnoreCase("单据号") || cell.toString().equalsIgnoreCase("收车时间")) {
Cell cell1 = row0.createCell(i);
cell1.setCellValue(cell.toString());
i = i + 1;
System.out.println("插入成功");
}
}
}
for (int rowNum = 1; rowNum < hssfSheet.getLastRowNum() + 1; rowNum++) {
//
Row row = sheet.createRow(rowNum); // 创建一个行 第一行
// 获取行数据
HSSFRow hssfRow = hssfSheet.getRow(rowNum);
// 第一个(最小的)列号
int minColIX = hssfRow.getFirstCellNum();
// 最后一个(最大的)列号
int maxColIX = hssfRow.getLastCellNum();
for (int colIX = minColIX; colIX < maxColIX; colIX++) {
// 获取单元格
HSSFCell cell = hssfRow.getCell(colIX);
if (cell != null) {
if ( hssfRow0.getCell(colIX).toString().equalsIgnoreCase("单据号")) {
Cell cell1 = row.createCell(0);
cell1.setCellValue(cell.toString());
System.out.println("插入成功1");
}
if ( hssfRow0.getCell(colIX).toString().equalsIgnoreCase("收车时间")) {
Cell cell1 = row.createCell(1);
cell1.setCellValue(cell.toString());
System.out.println("插入成功1");
}
}
}
}
Cell cell1 = row0.createCell(3);
cell1.setCellValue("数量");
}
wb.write(fout);// 输出
fout.close();
hssfWorkbook.close();
in.close();
}
public static void addHeadxlsx(String path, int num, String path1) throws Exception {
// 读 写 Excel的准备
InputStream in = new FileInputStream(path);
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(in);
Workbook wb = new HSSFWorkbook();// 新建一个工作簿
FileOutputStream fout = new FileOutputStream(path1);
Sheet sheet = wb.createSheet("第一个sheet页");// 创建一个sheet页
// copy 头行
int i = 0;// 第一个行插入位置
// 获取当前页
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(num);
if (xssfSheet != null) {
int rowNum0 = 0;
Row row0 = sheet.createRow(rowNum0); // 创建一个行 第一行
// 获取行数据
XSSFRow xssfRow0 = xssfSheet.getRow(rowNum0);
// 第一个(最小的)列号
int minColIX0 = xssfRow0.getFirstCellNum();
// 最后一个(最大的)列号
int maxColIX0 = xssfRow0.getLastCellNum();
for (int colIX = minColIX0; colIX < maxColIX0; colIX++) {
// 获取单元格
XSSFCell cell = xssfRow0.getCell(colIX);
if (cell != null) {
if (cell.toString().equalsIgnoreCase("单据号") || cell.toString().equalsIgnoreCase("收车时间")) {
Cell cell1 = row0.createCell(i);
cell1.setCellValue(cell.toString());
i = i + 1;
System.out.println("插入成功");
}
}
}
for (int rowNum = 1; rowNum < xssfSheet.getLastRowNum() + 1; rowNum++) {
//
Row row = sheet.createRow(rowNum); // 创建一个行 第一行
// 获取行数据
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
// 第一个(最小的)列号
int minColIX = xssfRow.getFirstCellNum();
// 最后一个(最大的)列号
int maxColIX = xssfRow.getLastCellNum();
for (int colIX = minColIX; colIX < maxColIX; colIX++) {
// 获取单元格
XSSFCell cell = xssfRow.getCell(colIX);
if (cell != null) {
if ( xssfRow0.getCell(colIX).toString().equalsIgnoreCase("单据号")) {
Cell cell1 = row.createCell(0);
cell1.setCellValue(cell.toString());
System.out.println("插入成功1");
}
if ( xssfRow0.getCell(colIX).toString().equalsIgnoreCase("收车时间")) {
Cell cell1 = row.createCell(1);
cell1.setCellValue(cell.toString());
System.out.println("插入成功1");
}
}
}
}
Cell cell1 = row0.createCell(3);
cell1.setCellValue("数量");
}
wb.write(fout);// 输出
fout.close();
xssfWorkbook.close();
in.close();
}
}