Экспорт данных из нескольких массивов в один лист Excel с использованием java - PullRequest
0 голосов
/ 27 марта 2020

У меня есть два массива, каждый из которых содержит определенные целочисленные значения, моя задача состоит в том, чтобы напечатать данные каждого массива в каждом столбце в листе Excel, используя java. Для этого я использовал apache POI. Когда я выполняю приведенный ниже код, только один столбец пишет, а другой столбец пуст.

  • Для этого я использовал два класса, основной класс ниже.
package basic;
import java.io.IOException;
import java.util.*;
public class excel {

    public static void main(String[] args) throws IOException, InterruptedException {
        SimpleExcelWriterExample.createRecord();
        List<Integer> values1=Arrays.asList(1,2,3,4,5,6);
        List<Integer> values2=Arrays.asList(1,2,3,4,5,6);
        SimpleExcelWriterExample.AddRecord(values1,0);
        SimpleExcelWriterExample.AddRecord(values2,1);
        SimpleExcelWriterExample.Add();

    }

}

SimpleExcelWriterExample класс ниже

package basic;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.apache.poi.xssf.usermodel.*;
class SimpleExcelWriterExample {

    public static XSSFWorkbook workbook;
    public static XSSFSheet worksheet;
    public static FileOutputStream fileOut;
    public static XSSFRow row;
    public static XSSFCell cell;

    public static void createRecord()throws IOException {

        fileOut = new FileOutputStream("C:\\Users\\DELL\\workspace\\wipro1\\src\\basic\\New.xlsx");
        workbook = new XSSFWorkbook();
        worksheet = workbook.createSheet("POI Worksheet");
        System.out.println("Sheet creadted successfully");

    }

    public static void AddRecord(List<Integer> values, int col) throws IOException {
        for (int i = 0; i < values.size(); i++) {
            row = worksheet.createRow(i);
            cell = row.createCell(col);
            cell.setCellValue(values.get(i));
            //System.out.println(cellAj.getStringCellValue());  
        }
        }

    public static void Add() throws IOException {
        workbook.write(fileOut);

    }

}

-Получается, что я получаю ниже введите описание изображения здесь

Пожалуйста, помогите мне решить эту проблему, спасибо в авансовый.

1 Ответ

0 голосов
/ 28 марта 2020

Sheet.createRow всегда создает новую пустую строку на листе. Так что в вашем AddRecord методе выполните

row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);

, который сначала пытается получить строку и только если строка еще не существует, затем создает строку.

Такой полный AddRecord метод может выглядеть так:

public static void AddRecord(List<Integer> values, int col) throws IOException {
 for (int i = 0; i < values.size(); i++) {
  row = worksheet.getRow(i); if (row == null) row = worksheet.createRow(i);
  cell = row.createCell(col); 
  cell.setCellValue(values.get(i));
  //System.out.println(cellAj.getStringCellValue());  
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...