Итак, у меня есть этот код, который должен переформатировать электронную таблицу Excel.По сути, я делаю итерацию по каждой строке и ячейке, и когда я нахожу ячейку с правильным ключевым словом, я сохраняю значение из 14-й ячейки в этой строке.Я должен сделать несколько проходов через этот цикл, и я сталкиваюсь с проблемой, что значения не обновляются во второй раз.Скажем, сначала я получаю -12, 2 и 10 для моих 3 значений.Когда я снова запускаю цикл, имена обновляются в выводе массива, но значения, которые я извлекаю из электронной таблицы, не меняются.Похоже, это должно быть довольно простое исправление, но я не могу понять, где ошибка в моем коде.
Когда я запускаю свой код с переменными «Трудовая инкапсуляция» и «Фабрика»Бремя », вот результаты, которые я получаю:
[Стандарт трудовой инкапсуляции, Факт трудовой инкапсуляции, 18 июня, -277222.49, 369647.55, -91020.59] [Стандарт фабричной нагрузки, Фактическая фабрика, 18 июня,-277222.49, 369647.55, -91020.59]
Первая часть моего кода - просто форматирование массива и чтение переменных, которые я хочу принять. Хотя я считаю, что ошибка в последнем цикле while, яЯ не совсем уверен, можно ли это исправить, объявив массивы в другом месте.Любая помощь будет принята с благодарностью!
public class Main {
static XSSFRow row;
public static void main(String[] args) throws IOException {
FileInputStream stream = new FileInputStream(new File("Production Costs Update.xlsx"));
XSSFWorkbook workbook = new XSSFWorkbook(stream);
XSSFSheet spreadsheet = workbook.getSheetAt(0);
Iterator < Row > rowIterator = spreadsheet.iterator();
Scanner scan = new Scanner(System.in);
System.out.println("How many variables are you adding to the spreadsheet?");
int num = scan.nextInt();
scan.nextLine();
String[] nameArray = new String[num];
String[] dataArray = new String[6];
for(int i = 0; i < nameArray.length; i++)
{
System.out.println("Enter the next variable: ");
nameArray[i] = scan.nextLine();
}
for(int i = 0; i < nameArray.length; i++)
{
String name = nameArray[i];
dataArray[0] = name + " Standard";
dataArray[1] = name + " Actual";
LocalDate today = LocalDate.now();
int month = today.getMonthValue();
int year = today.getYear();
String monthAB = "";
if(month == 1)
monthAB = "Jan";
if(month == 2)
monthAB = "Feb";
if(month == 3)
monthAB = "Mar";
if(month == 4)
monthAB = "Apr";
if(month == 5)
monthAB = "May";
if(month == 6)
monthAB = "Jun";
if(month == 7)
monthAB = "Jul";
if(month == 8)
monthAB = "Aug";
if(month == 9)
monthAB = "Sep";
if(month == 10)
monthAB = "Oct";
if(month == 11)
monthAB = "Nov";
if(month == 12)
monthAB = "Dec";
String date = monthAB + "-" + (year-2000);
dataArray[2] = date;
while(rowIterator.hasNext())
{
row = (XSSFRow) rowIterator.next();
Iterator < Cell > cellIterator = row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell = cellIterator.next();
if(cell.getCellTypeEnum()==CellType.STRING)
{
if(cell.getStringCellValue().contains(nameArray[i]))
{
if(cell.getStringCellValue().contains("Standard"))
{
dataArray[3] = String.valueOf(row.getCell(14).getNumericCellValue());
}
if(cell.getStringCellValue().contains("Actual"))
{
dataArray[4] = String.valueOf(row.getCell(14).getNumericCellValue());
}
if(cell.getStringCellValue().contains("Variance"))
{
dataArray[5] = String.valueOf(row.getCell(14).getNumericCellValue());
}
}
}
}
}
System.out.println(Arrays.toString(dataArray));
}
}
}