Недавно открывал тему:
Java — Apache POI — Проблемы с заполнением строк и ячеек с циклами (Excel)
Я разработал другую структуру, надеясь, что это решит проблему, и проблема стала еще яснее.
Учитывая этот шаблон:
hashkey1 | hashkey2 | hashkey3 | hashkey4
value1-1 | value2-1 | value3-1 | value4-1
value1-2 | value2-2 | value3-2 | value4-2
value1-3 | value2-3 | value3-3 | value4-3
value1-4 | value2-4 | value3-4 | value4-4
value1-5 | value2-5 | value3-5 | value4-5
Вот новый код:
Row keyRow = worksheet.createRow(4);
Row valueRow = null;
int keyCell = -2;
int firstIndex = 0;
int secondIndex = -2;
int row = 5;
ArrayList<String> keyArray = new ArrayList();
ArrayList<String> innerValueArray;
ArrayList<ArrayList<String>> outerValueArray = new ArrayList<ArrayList<String>>();
for (Map.Entry<String, ArrayList<String>> e : matrix.entrySet()) {
keyArray.add(e.getKey());
innerValueArray = new ArrayList();
for (String s : e.getValue()) {
innerValueArray.add(s);
}
outerValueArray.add(innerValueArray);
}
for (String s : keyArray) {
keyCell += 2;
keyRow.createCell(keyCell).setCellValue(keyArray.get(firstIndex++));
}
for (ArrayList<String> aS : outerValueArray) {
secondIndex += 2;
for (String s : aS) {
if ((row - 5) < outerValueArray.size()) {
row++;
}
valueRow = worksheet.createRow(row);
valueRow.createCell(secondIndex).setCellValue(s);
}
}
В другой теме проблемной переменной является «keyCell», а в этой — secondIndex. Единственный способ поместить значения в нужное место — через ту же переменную, которая используется для ключей, но это позволяет заполнить только один столбец, стирая содержимое других. Проблема ТОЧНО такая же из другой темы. Все альтернативы ведут к этому, и я хочу значения в ОДИНАКОВЫХ строках.
Вопрос: НЕВОЗМОЖНО ли заполнять и эксель лист по этому шаблону? Потому что точно невозможно обновить переменную во внутреннем цикле и сохранить желаемый шаблон. Как я могу построить этот узор с петлями?
OBS: В моем ПО он увеличивается на 2, это не имеет значения. Выполнение этого по одному вызывает ту же проблему (ячейки стираются).
Большое спасибо!