import com.google.common.collect.Lists;
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.XSSFWorkbook;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.*;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@Service
public class TestExcel2 {
public void getExict() {
try {
//excel文件路径
String excelPath = "D:\\ex\\处理的文档20210705.xlsx";
String excelPath2 = null;
Workbook wb = null;
Workbook wb2 = null;
File excel = new File(excelPath);
if (excel.isFile() && excel.exists()) {
String[] split = excel.getName().split("\\."); //.是特殊字符,需要转义!!!!!
if ("xls".equals(split[1])) {
FileInputStream fis = new FileInputStream(excel); //文件流对象
wb = new HSSFWorkbook(fis);
} else if ("xlsx".equals(split[1])) {
excelPath2 = "D:\\ex\\" + split[0] + "-2." + split[1];
wb = new XSSFWorkbook(excel);
wb2 = new XSSFWorkbook();
} else {
System.out.println("文件类型错误!");
return;
}
//解析 //读取sheet 0
Sheet sheet = wb.getSheetAt(0);
String sheetName = sheet.getSheetName();
//Sheet sheet1 = wb2.createSheet("sheet22222");
Sheet sheet1 = wb2.createSheet(sheetName);
//第一行
int firstRowIndex = sheet.getFirstRowNum();
int lastRowIndex = sheet.getLastRowNum();
System.out.println("firstRowIndex: " + firstRowIndex);
System.out.println("lastRowIndex: " + lastRowIndex);
for (int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) { //遍历行
System.out.println("rIndex: " + rIndex);
Row row = sheet.getRow(rIndex);
if (row != null) {
int firstCellIndex = row.getFirstCellNum();
int lastCellIndex = row.getLastCellNum();
// 指定行
Row row2 = sheet1.createRow(rIndex);
//遍历列
for (int cIndex = firstCellIndex; cIndex < lastCellIndex; cIndex++) {
Cell cell = row.getCell(cIndex);
if (cell != null) {
System.out.println(cell.toString());
}
if (Objects.equals(cell.toString(), "")) {
continue;
}
Cell cell2 = row2.createCell(cIndex); //指定列
if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
cell2.setCellValue(Math.round(cell.getNumericCellValue()));
} else {
cell2.setCellValue(cell.toString());
}
}
}
}
wb.close();
OutputStream stream = new FileOutputStream(excelPath2);
wb2.write(stream);
wb2.close();
stream.close();
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
xlsx 处理