【问题标题】:How can I sort excel file by the first column? java如何按第一列对excel文件进​​行排序?爪哇
【发布时间】:2013-05-08 10:15:57
【问题描述】:

我必须创建一个程序,我们从 excel 文件中读取数据作为这里的一个
并将它们存储在 mysql 的一个表中,ID 降序排列。 我已经编写了程序来读取数据并使用 APACHE POI 在控制台中打印它们,通过 excel 文件的第一行创建表,然后存储其余数据。但是我希望通过他们的 ID 进行存储。所以我做了一个函数,首先我将读取 ID 所在的第一列,然后使用 LinkedHashMap 读取其余数据。

我将如何在 ID 中进行排序?有人可以帮我吗?我在我认为应该进行更改的地方放置了空格。

【问题讨论】:

  • 为什么要关心表中存储数据的物理顺序?您可以很好地通过使用Order by 子句从表格中获取数据排序!!!!
  • 数据库不必在插入时存储它,因为你不知道它是如何组织数据的。
  • 你可以使用支持自然排序的TreeMap
  • 我知道我可以用 ORDER BY 做到这一点,但在我的项目中应该以编程方式发生!

标签: java mysql sorting


【解决方案1】:

将每个TableRow 添加到您的List。使用Collectionssort()方法对数据进行排序,然后遍历并插入。

您可以自定义compareTo()来确定顺序。

@Override
public int compareTo(TableRow o) {
    // for descending order
    return this.getID().compareTo(o.getID())*(-1);
}

使用Comparator,您可以执行以下操作:

 new Comparator<TableRow>() {
        @Override
        public int compare(TableRow o1, TableRow o2) {
             // for descending order
            return o1.getID().compareTo(o.getID())*(-1);
        }
  }

【讨论】:

  • 你能帮我完成我的程序吗?
  • 我将如何编写 Collections.sort?
  • Collections.sort(list, comparator) ...请参考API。
  • 好的,我已经完成了更改,看起来不错。但是当我运行程序时,我在这里遇到了一个异常: tousRows.add(new TableRow(currentID, tableFields));有谁知道为什么会这样?
【解决方案2】:

您可以使用 TreeMap。将 Excel 工作表的 id 列值作为树形图的 KeyId 传递。它会自动对您的数据进行排序...

【讨论】:

  • 你能帮我怎么做吗?
  • @efoikonom:代替 LinkedHashMap tableFields = new LinkedHashMap(list.size()); 使用 TreeMap tm = new TreeMap(); 然后 tm.put(ID,AnotherValue);类似的东西
  • 单独使用下面的代码来理解TreeMap import java.util.TreeMap; public class Test { public static void main(String[] args) { TreeMap&lt;Integer,String&gt; tm = new TreeMap&lt;Integer,String&gt;(); for ( int i = 11; i &gt; 0 ; i-- ){ tm.put(i,"Am the value"+i); System.out.println("Next Row:"+tm.get(i)); } for ( int i1 = 0; i1 &lt; 11 ; i1++ ){ System.out.println("Next Row:" + tm.get(i1)); } } }
猜你喜欢
  • 2019-05-10
  • 2013-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2018-05-24
  • 1970-01-01
  • 2016-09-03
相关资源
最近更新 更多