Есть ли какие-либо решения при импорте файлов xlsx с объединенными ячейками и сохранении данных в БД с правильным идентификатором? - PullRequest
0 голосов
/ 28 октября 2019

Я разрабатываю импорт файлов Excel на моем веб-сайте. Файл Excel может описывать как this .

Родительская объединенная ячейка имеет свой собственный идентификатор, тогда как другие дочерние элементы тоже. Итак, моя задача: получить имя и идентификатор детей, затем найти родителя, получить его имя и идентификатор, а также. Затем свяжите это вместе, сохраните в базе данных.

Я попытался понять, как работает xlsx. В объединенной ячейке они обычно берут первую ячейку в качестве корня, и данные могут извлекаться из этой ячейки, другой ячейки в разделе, считая ее нулевой. Я сделал несколько объектов передачи данных, чтобы получить все, что мне нужно, чтобы сохранить в базе данных.

    for (int j = 0; j < 1000; j++) {
        if (childRow.getCell(j) != null && !"".equals(childRow.getCell(j).getStringCellValue())) {
            listName.add(childRow.getCell(j).getStringCellValue());
        }
        List<String> listNameWithoutDuplicate = returnListWithoutDuplicate(listName); //a function to remove duplicated element in a list i made ealier.
        for (int k = 0; k < listNameWithoutDuplicate.size(); k++) {
        if (childRow.getCell(j) != null && parentRow.getCell(j) != null) {
            String parentName = parentRow.getCell(j).getStringCellValue();
            room.setParentId(parentRepository.getParentByName(parentName).getId());
        } //some dtos and query in repo to retrieve data
        else if (childRow.getCell(j) != null && parentRow.getCell(j) == null) {
            //haven't figure it out
        }
    }

Но проблема в том, что когда дело доходит до второго потомка родителя, родительская ячейка, которую должна искать дочерняя ячейка, равна нулю. Я работал с некоторой логикой, что, когда бы это ни казалось нулевым, дети возьмут предыдущего родителя. Но я не могу написать это в коде и заставить его работать.

Заранее спасибо.

...