хороший способ представить значение таблицы Excel в Java

StackOverflow https://stackoverflow.com/questions/857380

  •  21-08-2019
  •  | 
  •  

Вопрос

Учтите, что у меня есть лист Excel в приведенном ниже формате:

человек возраст
Фу 29
Бар 27

Теперь я хочу прочитать эти значения (используя POI HSSF) и должен обработать их.Каков наилучший способ сделать это?

Обратите внимание, что у меня нет объекта Person в моем приложении, поскольку значения, которые могут отображаться в таблице Excel, являются произвольными (т. Е.это может быть не имя и возраст человека).Итак, мне нужно использовать своего рода хэш-карту для хранения этих значений.В случае нескольких строк, хорошо ли иметь Список !?

Это было полезно?

Решение

public class Grid {
    private Row headerColumns;
    private List<Row> dataRows;

    public Grid() {
        dataRows = new LinkedList<Row>();
    }

    public Grid(int rowCount) {
        dataRows = new ArrayList<Row>(rowCount);
    }

    public void addHeaderRow(List<String> headers) {
        this.headerColumns = new Row(headers);
    }

    public void addDataRow(List<String> data) {
        this.dataRows.add( new Row(data) );
    }

    public List<Row> getAllData() {
        List<Row> data = new ArrayList<Row>(1+dataRows.size());
        data.add(this.headerColumns);
        data.addAll(dataRows);
        return data;
    }

    public Row getHeaderColumns() {
        return headerColumns;
    }

    public List<Row> getDataRows() {
        return dataRows;
    }
}

class Row {
    private List<String> data;

    public Row(List<String> data) {
        this.data = data;
    }

    public void addColumn(String columnData) {
        data.add(columnData);
    }

    public List<String> getData() {
        return data;
    }
}

Другие советы

Если формат определен, создайте класс, который вмещает все эти поля.

Если формат не определен, передайте строки, или Списки, или даже DOM из преобразования excel в dom.У тебя нет выбора.Я бы рекомендовал просто придерживаться собственных объектов POI Row и Cell.

Да, вы не можете использовать map, если у вас есть несколько ключевых значений.И я не нашел какого-либо встроенного класса для решения этой проблемы.Вы можете попробовать написать какую-нибудь оболочку.Если вы не заботитесь о скорости, используйте простой 2D-массив, подобный этому:

String[][] filter = new String[initial width][initial height];

это может быть объект вместо строки;

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top