java - 如何使用java将excel数据存储在结果集中
问题描述
我需要将 excel 数据(按行)与数据库表进行比较。
有人可以帮助我吗?
我可以使用以下代码按行和按列正确读取 excel 文件
public class POC {
public static void main(String[] args) {
String colText = null;
XSSFWorkbook workbook;
Cell cell = null;
try {
HashSet<String> xlRead = new HashSet<String>();
InputStream myxls = new FileInputStream(new File(
"excelpath.xlsx"));
workbook = new XSSFWorkbook(myxls);
Sheet sheet = workbook.getSheetAt(0); // Get Your Sheet.
java.util.Iterator<Row> rowterator = sheet.rowIterator();
while (rowterator.hasNext()) {
Row row = rowterator.next();
java.util.Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
cell = cellIterator.next();
switch (cell.getCellType()) {
case Cell.CELL_TYPE_STRING:
xlRead.add(cell.getStringCellValue() + "");
System.out.println(cell.getStringCellValue());
default:
break;
}
}
}
System.out.println("");
myxls.close();
for (String s : xlRead)
System.out.println(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}
解决方案
建议您只需创建一个对象来存储数据库中的数据(为此使用 JPA),并使用compareTo(Object object)
. 然后,您可以使用同一个对象来存储您从 excel 获取的数据,并使用您创建的“compareTo”方法比较两个对象?
@Entity
@Table(name="Age")
public class MyAge() {
public MyAge();
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
int id;
@Column(name="age")
private int age;
... getters and setters, though lombok is better ...
@Override
public int compareTo(MyAge myAge) {
return Integer.compare(age, myAge.age);
}
}
推荐阅读
- php - 检查数组中的所有值是否都存在于数据库列中
- python - DefaultCPUAllocator:没有足够的内存:你试图分配 364742208 字节。购买新内存
- javascript - 如何在javascript中将文本文件转换为json格式
- delphi - Delphi TDBGrid 在标签按下时插入新记录
- piranha-cms - Piranha 9.0.1 - 自定义块组:无法在内容管理器 UI 中添加项目
- r - 循环中的反应
- r - 如何根据R中某列中的变量从数据框中提取数据
- embedded-linux - qemu network not working needed for tftp booting
- java - 如何在 Java 中使用 spark 读取 rdd 中的镶木地板
- swiftui - 从 CoreData 获取 nilError