Java 读取两个excel表并进行每一行的数据比较
时间: 2023-08-11 18:07:48 浏览: 118
java读取上传excel文件和txt文件中的数据.doc
5星 · 资源好评率100%
您好,要进行每一行数据的比较,可以在读取 Excel 表格数据时,将每一行的数据存储在一个对象中,然后对比两个表格中对应的对象是否相等。下面是一个简单的示例代码:
```java
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
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 ExcelReader {
public static void main(String[] args) throws IOException {
// 读取第一个 Excel 表格
FileInputStream fis1 = new FileInputStream("excel1.xlsx");
Workbook workbook1 = WorkbookFactory.create(fis1);
Sheet sheet1 = workbook1.getSheetAt(0);
Iterator<Row> rowIterator1 = sheet1.iterator();
// 读取第二个 Excel 表格
FileInputStream fis2 = new FileInputStream("excel2.xlsx");
Workbook workbook2 = WorkbookFactory.create(fis2);
Sheet sheet2 = workbook2.getSheetAt(0);
Iterator<Row> rowIterator2 = sheet2.iterator();
List<RowData> rowDataList1 = new ArrayList<>();
List<RowData> rowDataList2 = new ArrayList<>();
// 将两个表格数据存储到对象列表中
while (rowIterator1.hasNext()) {
Row row = rowIterator1.next();
Iterator<Cell> cellIterator = row.cellIterator();
RowData rowData = new RowData();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
rowData.addData(cell.toString());
}
rowDataList1.add(rowData);
}
while (rowIterator2.hasNext()) {
Row row = rowIterator2.next();
Iterator<Cell> cellIterator = row.cellIterator();
RowData rowData = new RowData();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
rowData.addData(cell.toString());
}
rowDataList2.add(rowData);
}
// 比较两个表格中每一行的数据
for (int i = 0; i < rowDataList1.size(); i++) {
RowData rowData1 = rowDataList1.get(i);
RowData rowData2 = rowDataList2.get(i);
if (!rowData1.equals(rowData2)) {
System.out.println("第 " + (i + 1) + " 行数据不相等:");
System.out.println("表格1:" + rowData1);
System.out.println("表格2:" + rowData2);
}
}
// 关闭 Excel 文件
workbook1.close();
fis1.close();
workbook2.close();
fis2.close();
}
/**
* 表格数据对象
*/
private static class RowData {
private List<String> data = new ArrayList<>();
/**
* 添加一列数据
*/
public void addData(String value) {
data.add(value);
}
/**
* 判断两个行数据是否相等
*/
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
RowData rowData = (RowData) o;
return data.equals(rowData.data);
}
@Override
public String toString() {
return "RowData{" +
"data=" + data +
'}';
}
}
}
```
上述代码中,我们定义了一个 `RowData` 类来存储每一行的数据,通过 `addData()` 方法将每一列的数据添加到列表中,然后通过重写 `equals()` 方法来比较两个行数据是否相等。在读取 Excel 数据时,将每一行的数据存储在 `RowData` 对象中,然后将对象存储在列表中。最后,遍历两个列表,比较每一行的数据是否相等。如果不相等,则输出不相等的行数据。
需要注意的是,本示例代码只是一个简单的实现,实际应用中可能需要针对具体需求进行修改和优化。
阅读全文