Некоторые столбцы не отображаются в Excel с использованием Apache POI - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь писать из Java в Excel.

По этой ссылке данные сохраняются из массива объектов.Однако для моего случая данные фактически берутся из 2 методов с именем NameGenerator для создания имени и метода с именем PhoneGenerator для создания числа.И сохраните эти значения в Excel, строка за столбцом.Результаты можно увидеть ниже.

Питер |5124131

Рок |24141

Сьюзен |067643

Однако текущий код перезаписывает имя.В результате файл Excel выглядит так:

  | 5124131

  | 24141

  | 067643

Кто-нибудь хочет мне помочь?Любые отзывы будут благодарны!

try {
    
    //create excel
			FileOutputStream fileOut = new FileOutputStream(
					"excelfile.xls");
			HSSFWorkbook workbook = new HSSFWorkbook();
			HSSFSheet worksheet = workbook.createSheet("Register Data");

			DataGenerator dg = new DataGenerator();

			for (int i = 0; i < 3; i++) {

        //NameGenerator method will create random name
				String name = dg.NameGenerator;
        
        //PhoneGenerator method will create random phone
				String phone = dg.PhoneGenerator;

				worksheet.createRow(i).createCell(0).setCellValue(name);
				worksheet.createRow(i).createCell(1).setCellValue(phone);

			}

      //save excel
			workbook.write(fileOut);
			fileOut.flush();
			fileOut.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

1 Ответ

0 голосов
/ 20 мая 2018

Я думаю, что вы неправильно использовали createRow(index) метод.Вы должны вызывать его один раз для каждой строки, иначе он воссоздает то, что у вас было ранее, и все, что у вас было, будет потеряно (следовательно, вы потеряете первый столбец).

Сделайте это так:

            ...
            HSSFRow row = worksheet.createRow(i);
            row.createCell(0).setCellValue(name);
            row.createCell(1).setCellValue(phone);
            ...
...