gpt4 book ai didi

java - 将excel读入java - 如何简化

转载 作者:行者123 更新时间:2023-12-02 01:44:24 25 4
gpt4 key购买 nike

我编写的代码有点复杂,作为初学者正在寻找更简单的解决方案。我有一个 6 列 170 行的 Excel 表格。我的想法是逐个单元格地读取并将所有单元格存储到一个列表中。

List<String> lista = new ArrayList<String>();                       
sh.forEach(row -> {
row.forEach(cell -> {
String cellvalue = dataFormatter.formatCellValue(cell);
lista.add(cellvalue);
System.out.println(cellvalue);
}); });
workbook.close();

之后,迭代此列表并将单元格按编号 1 到 6 存储到 6 个列表中。我是如何做到的:

 ArrayList<String> lista1 = new ArrayList<String>();
ArrayList<String> lista2 = new ArrayList<String>();
ArrayList<String> lista3 = new ArrayList<String>();
ArrayList<String> lista4 = new ArrayList<String>();
ArrayList<String> lista5 = new ArrayList<String>();
ArrayList<String> lista6 = new ArrayList<String>();

@SuppressWarnings("unchecked")
ArrayList<String>[] liste = new ArrayList[]{lista1, lista2, lista3, lista4, lista5, lista6};

for (int i = 6 ; i < lista.size(); i ++ ){ // i = 6 ---> preskoči prvi red
liste[i % 6].add(lista.get(i)); } //liste[i % 6] = liste[1] = liste[2] = liste[3] = liste[4], etc
jdbcTemplate.batchUpdate("INSERT INTO INS_RAZNO.ZAPOSLENICI_TEST VALUES (?, ?, ?, ?, ?, ?)", new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, lista1.get(i));
ps.setString(2, lista2.get(i));
ps.setString(3, lista3.get(i));
ps.setString(4, lista4.get(i)); //ćelije koje sadržavaju brojeve mogu se prenositi kao stringovi u NUMBER polje
ps.setString(5, lista5.get(i)); //ćelije koje sadržavaju slova ne mogu se prenositi u NUMBER polje
ps.setString(6, lista6.get(i));
}

我用过

 liste[i % 6].add(lista.get(i));

因此,迭代主列表,我有“i % 6”,并通过该值在每个列表中存储 liste[i]。

我正在考虑的是如何让这个解决方案变得更简单。通过这种方式,也许可以添加一些 getter 和 setter 方法,但对我来说,很难弄清楚应该与 get 和 set 连接什么。这只是我的想法。如果您还有其他想法,请与我分享。谢谢。

最佳答案

不要使用 StringList,而是创建一个包含与每列对应的属性的 Java 模型类。然后迭代 Excel 的每一行,创建一个代表该行的实例并将其添加到模型对象的 List 中。

将其分解-

  • 每一行代表一个对象,即您的模型类。
  • 每行的列都是该模型类的属性。

关于java - 将excel读入java - 如何简化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com