如何使用Java在Excel中按列明智地写入数据列表?

时间:2018-10-12 12:31:45

标签: java excel arraylist apache-poi xssf

我在ContainsValue中有一个数据列表,其中包含标题以及与之关联的值。像下面一样,

ArrayList

我正在用Java编写代码,并使用Fruits Apple Orange ****** Vegetables Beans Carrot Brinjal Cucumber ****** Colors Orange Blue Red Green Yellow Now, I want to write the values in `excel` with each heading and the associated values in column-wise. Like below, Fruits Vegetable Colors Apple Beans Orange Orange Carrot Blue Brinjal Red Cucumber Green Yellow 库处理apache.poi.xssf.usermodel操纵。我要面对的问题是,当我编写第二个标题和相关值时,由于excel创建代码而使第一个标题及其值被清除

Row

有人可以帮我完成此事吗?

2 个答案:

答案 0 :(得分:1)

您需要做的是第一次使用createRow() ...创建行,并使用getRow()进行所有后续访问。这样,您将在工作表对象中获得该行,而不是创建一个新行。如果行不存在,getRow()将返回null,因此您可以执行以下操作:

XSSFRow row = outputSheet.getRow(rowNumValue) ? outputSheet.getRow(rowNumValue) : outputSheet.createRow(rowNumValue);

答案 1 :(得分:0)

一个人可以立即在单个列表上操作,但是使用明智的数据结构更容易。由于每列可以具有不同数量的行,因此创建列列表,每列成为行列表

WarningAble

现在,人们可以遍历行以填充工作表。

List<List<String>> makeColumns(List<String> linearList) {
    List<List<String>> columns = new ArrayList<>();
    int column = 0;
    for (String s : linearList) {
        if (s.startsWith("***")) {
            ++column;
        } else {
            while (column >= columns.size()) {
                columns.add(new ArrayList<>());
            }
            columns.get(column).add(s);
        }
    }
}