java导入excel校验
时间: 2023-09-08 20:09:21 浏览: 95
可以使用 Apache POI 库来读取和校验 Excel 文件。以下是一个简单的示例代码:
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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.ss.usermodel.WorkbookFactory;
public class ExcelValidator {
public static void main(String[] args) {
List<String> errors = new ArrayList<String>();
String filename = "data.xlsx"; // Excel 文件名
int headerRowNum = 0; // 表头所在行号
int startRowNum = 1; // 数据开始行号
int maxRows = 100; // 最大行数
try (FileInputStream fis = new FileInputStream(filename);
Workbook workbook = WorkbookFactory.create(fis)) {
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
// 校验表头
Row headerRow = sheet.getRow(headerRowNum);
if (headerRow == null) {
errors.add("表头不存在");
} else {
int cellNum = headerRow.getLastCellNum();
for (int i = 0; i < cellNum; i++) {
Cell cell = headerRow.getCell(i);
if (cell == null || cell.getStringCellValue().isEmpty()) {
errors.add("表头第" + (i + 1) + "列为空");
}
}
}
// 校验数据
int rowNum = startRowNum;
while (rowNum <= sheet.getLastRowNum() && rowNum <= startRowNum + maxRows) {
Row row = sheet.getRow(rowNum);
if (row != null) {
int cellNum = headerRow.getLastCellNum();
for (int i = 0; i < cellNum; i++) {
Cell cell = row.getCell(i);
if (cell == null || cell.getStringCellValue().isEmpty()) {
errors.add("第" + (rowNum + 1) + "行第" + (i + 1) + "列为空");
}
}
}
rowNum++;
}
} catch (IOException e) {
errors.add("读取文件失败:" + e.getMessage());
}
// 输出错误信息
if (errors.isEmpty()) {
System.out.println("校验通过");
} else {
System.out.println("以下错误发生:");
for (String error : errors) {
System.out.println(error);
}
}
}
}
```
这个示例代码会读取名为 `data.xlsx` 的 Excel 文件,并校验其中的表头和数据。其中,表头应该在第 1 行,数据从第 2 行开始。最多校验 100 行数据。如果有错误,会输出错误信息。你可以根据自己的需求进行修改。
阅读全文