Экспорт данных в лист Excel с заголовком столбца с использованием Java(Apache 3.10-ФИНАЛ)

#java #excel #export-to-excel

Вопрос:

Я хочу записать значения в excel с заголовком и соответствующими значениями по строкам следующим образом: введите описание изображения здесь

Это то, что я пытаюсь сделать, но я не получаю желаемого результата.

 String[] rowHeadings = { "Roll no", "Name", "City", "Country", "Year"};


     String[][] values = new String[][] {
        new String[] {"101","Tyson","Tokyo","Japan","2nd"},
        new String[] {"102","Daichi","Kyoto","Japan","2nd"},
        new String[] {"103","Ray","Sapporo","Japan","2nd"},
        new String[] {"104","Kai","Osaka","Japan","2nd"},
        new String[] {"105","Max","Nagoya","Japan","2nd"}
};
for ( int i = 0; i < rowHeadings.length; i   ) {
                Row headerColumn = sheet.createRow( i );
                //Cell cell = headerColumn.createCell(i);
                headerColumn.createCell( 1 ).setCellValue( rowHeadings[i] );
                int rownum = 0;
                Row row = sheet.getRow(i);
                int cellnum = 2;
                for(String[] columnValues : values){
                    for(String data : columnValues){
                        Cell cell = row.createCell(cellnum  );
                        cell.setCellValue( data);
                    }
                }
            }
 

Я получаю такие данные :
введите описание изображения здесь

Не мог бы кто-нибудь помочь мне в том, как правильно заполнить столбец данных?

*Эта проблема еще не решена.

Комментарии:

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

2. обновил сообщение

Ответ №1:

Вы переопределяете строку

Во-первых, вы делаете

 Row headerColumn = sheet.createRow( i ); // where i == 0
 

потом, позже

 int rownum = 0;
Row row = sheet.createRow(rownum  );
 

Поскольку вы уже создали строку, вам не нужно делать это снова.

Редактировать

Вы должны быть в состоянии сделать это, просто используя верхний цикл, делая что-то вроде (не проверено)

 for ( int i = 0; i < rowHeadings.length; i   ) {
    Row headerColumn = sheet.createRow( i );
    headerColumn.createCell( 1 ).setCellValue( rowHeadings[i] );
    headerColumn.createCell( 1 ).setCellValue( values[i][0] );
    headerColumn.createCell( 1 ).setCellValue( values[i][1] );
    headerColumn.createCell( 1 ).setCellValue( values[i][2] );
    headerColumn.createCell( 1 ).setCellValue( values[i][3] );
    System.out.println(rowHeadings[i]);
}
    
 

Комментарии:

1. Затем при заполнении данных, как они перейдут в следующую строку. Допустим, первая строка, т. е. рулон не заполнен, тогда мне нужно сделать то же самое с именем.

2. Я решил предыдущую проблему, используя эту строку row = sheet.GetRow(i); как вы говорили ранее, не создавайте строку снова. Но , все еще сталкиваясь с проблемой при заполнении данных. Я обновил сообщение. Не могли бы вы, пожалуйста, заглянуть в один раз?

3. каждый раз, когда вы делаете for(String[] columnValues : values){ , вы начинаете все сначала снова. Попробовать мой путь?

4. Он возвращает только одну строку, то есть строку страны.