方式一、以下是使用Java代码实现快速找出Excel列中重复数据的示例:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
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 ExcelDuplicateFinder {
public static void main(String[] args) {
String filePath = "path/to/excel.xlsx";
String sheetName = "Sheet1";
int columnNumber = 0; // 列索引,从0开始
try {
Map<String, Integer> duplicateCount = findDuplicateValues(filePath, sheetName, columnNumber);
for (Map.Entry<String, Integer> entry : duplicateCount.entrySet()) {
String value = entry.getKey();
int count = entry.getValue();
System.out.println("Value: " + value + ", Count: " + count);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static Map<String, Integer> findDuplicateValues(String filePath, String sheetName, int columnNumber)
throws IOException {
Map<String, Integer> duplicateCount = new HashMap<>();
FileInputStream fis = new FileInputStream(new File(filePath));
Workbook workbook = WorkbookFactory.create(fis);
Sheet sheet = workbook.getSheet(sheetName);
for (Row row : sheet) {
Cell cell = row.getCell(columnNumber);
String value = cell.toString();
if (duplicateCount.containsKey(value)) {
int count = duplicateCount.get(value) + 1;
duplicateCount.put(value, count);
} else {
duplicateCount.put(value, 1);
}
}
workbook.close();
fis.close();
return duplicateCount;
}
}
请注意,上述代码使用了Apache POI库来处理Excel文件。在运行代码之前,需要将filePath
变量设置为实际的Excel文件路径,sheetName
变量设置为要处理的工作表的名称,columnNumber
变量设置为要检查重复的列的索引(从0开始计数)。
代码中的findDuplicateValues
方法返回一个Map
对象,其中键是重复的值,值是重复出现的次数。你可以根据需要对重复的值进行相应的处理。
方式二
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ExcelDuplicateFinder {
public static void main(String[] args) {
String filePath = "path/to/your/excel/file.xlsx";
String sheetName = "Sheet1";
try (FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis)) {
Sheet sheet = workbook.getSheet(sheetName);
if (sheet == null) {
System.out.println("Sheet '" + sheetName + "' not found.");
return;
}
Map<String, Integer> dataMap = new HashMap<>();
int rowCount = sheet.getLastRowNum() + 1;
for (int i = 0; i < rowCount; i++) {
Row row = sheet.getRow(i);
if (row != null) {
Cell cell = row.getCell(0); // Assuming data is in the first column
if (cell != null) {
String data = cell.getStringCellValue();
if (dataMap.containsKey(data)) {
System.out.println("Duplicate data found: " + data);
} else {
dataMap.put(data, i);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,filePath
变量表示Excel文件的路径,sheetName
变量表示要处理的工作表的名称。代码首先使用FileInputStream
和XSSFWorkbook
来加载Excel文件。然后,它通过getSheet
方法获取指定名称的工作表。
代码使用HashMap
来存储数据,并遍历工作表的每一行来检查重复项。在示例代码中,我们假设数据在第一列,因此使用row.getCell(0)
获取单元格内容。如果数据已经在dataMap
中存在,则说明存在重复项。否则,将数据添加到dataMap
中。
注意,上述代码假设Excel文件的扩展名为.xlsx
。如果使用旧的.xls
格式,需要使用HSSFWorkbook
而不是XSSFWorkbook
类。