У меня есть имя строкового массива в виде кода:
[a,b,c,d]
и другой строковый массив, содержащий данные, подобные этому имени в формате DWS:
[a11,a22,a33,a44,a55,a66,a77,b11,b22,b33,b44,b55,b66,b77,c11,c22,c33,c44,c55,c66,c77,d11,d22,d33,d44,d55,d66,d77]
Что я хочу сделатьэто я хочу записать в ArrayList DWS в файл Excel следующим образом:
Я пробовал следующим образом:
FileInputStream file1 = new FileInputStream(new File(namefile));
XSSFWorkbook wb1 = new XSSFWorkbook(file1);
XSSFSheet sheet1 = wb1.getSheetAt(0);
int limit = 7;
for (int m = 0; m < code.size(); m++) {
for (int x = 0; x < DWS.size(); x++) {
for (int i = 0; i < limit; i++) {
Row row2 = sheet1.getRow(i + 2);
Cell cell = row2.createCell(m * 3 + 4);
cell.setCellValue(DWS.get(x));
}
}
}
но результат, который я получаю:
Есть идеи, как решить эту проблему?
ОБНОВЛЕНИЕ
Я изменяю свой код, как это предложено:
int limit = 7;
for (int i = 0; i < limit; i++) {
Row row2 = sheet1.getRow(i + 2);
for (int m = 0; m < code.size(); m++) {
Cell cell = row2.createCell(m * 3 + 4);
cell.setCellValue(DWS.get(i));
}
}
, и результат выглядит так:
Это только циклпервые 7 данных.Мне нужно, чтобы продолжить для остальной части arraylist.как на первом изображении.
ОБНОВЛЕНИЕ
Позвольте мне еще раз объяснить поток моего кода
1) Он зациклит массив DWS на первыйячейка, которая является ячейкой № 5 и цикл до последней строки, которая строка № 7,
2) затем, после того, как она достигнет строки № 7, затем якобы создаст новую ячейку, которая в строке Cell cell = row2.createCell(m * 3 + 4);
, а затем сновапродолжить цикл из данных массивов DWS.
3) эти шаги будут продолжаться до тех пор, пока не будут получены последние данные массивов DWS
. Возможно ли это сделать?
ОБНОВЛЕНИЕ 2.0
Я перехожу на это:
int cellValueIndex = 0;
for (int i = 0; i < limit; i++) {
Row row2 = sheet1.getRow(i + 2);
for (int m = 0; m < code.size(); m++) {
Cell cell = row2.createCell(m * 3 + 4);
cell.setCellValue(DWS.get(cellValueIndex));
cellValueIndex++;
}
}
но я получил ошибку, подобную этой:
java.lang.IndexOutOfBoundsException
ОБНОВЛЕНИЕ 3,0
Я перехожу на это, но результат все еще неправильный
int cellValueIndex = 0;
for (int i = 0; i < limit; i++) {
Row row2 = sheet1.getRow(i + 2);
for (int m = 0; m < code.size(); m++) {
Cell cell = row2.createCell(m * 3 + 4);
cell.setCellValue(DWS.get(cellValueIndex));
}
cellValueIndex = cellValueIndex + 1;
}
ОБНОВЛЕНИЕ 4.0
У меня есть изменения:
int cellValueIndex = 0;
int counter = 0;
for (int i = 0; i < limit; i++) {
Row row2 = sheet1.getRow(i + 2);
Cell cell = row2.createCell(4);
cell.setCellValue(DWS.get(cellValueIndex));
cellValueIndex++;
int x = row2.getRowNum();
if (x == limit) {
for (int m = 1; m < code.size(); m++) {
Cell cell1 = row2.createCell(m * 3 + 4);
cell1.setCellValue(DWS.get(cellValueIndex + 1));
cellValueIndex++;
}
}
}
Результат примерно такой:
Но когда я пытаюсь установить i = 0; вот так:
int cellValueIndex = 0;
for (int i = 0; i < total1; i++) {
Row row2 = sheet1.getRow(i + 2);
Cell cell = row2.createCell(4);
cell.setCellValue(DWS.get(cellValueIndex));
cellValueIndex++;
int x = row2.getRowNum();
if (x == total1) {
i = 0;
for (int m = 1; m < shiftcode.size(); m++) {
Cell cell1 = row2.createCell(m * 3 + 4);
cell1.setCellValue(DWS.get(cellValueIndex));
cellValueIndex++;
i++;
}
}
}
Я получаю такую ошибку:
java.lang.IndexOutOfBoundsException