2016-07-12 13 views
-1

Ich habe Daten in einem Excel-Blatt mit 10 + Spalten. Ich möchte bestimmte Spaltendaten in ein neues Blatt kopieren oder auf der Konsole anzeigen. Ich habe einen Spaltennamen in eine Variable aufgenommen und überprüft, dass mit jeder Zelle in der Kopfzeile, wenn sie übereinstimmt, die Daten dieser Spalte in das neue Blatt kopiert oder auf dem Cursor angezeigt werden. Ich habe versucht mit folgendem Code, aber nicht erwartete Ausgabe. Bitte hilf mir.Wie kopiere ich spezifische Spaltendaten, wenn Header mit JAVA übereinstimmt

Code:

import java.io.File; 
import java.io.FileInputStream; 
import java.util.ArrayList; 
import java.util.Iterator; 

import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class Read { 
    public static void main(String[] args) throws Exception{ 
     Read read = new Read(); 
     String x ="Address"; 
     int columnIndex = 0; 
     read.extractExcelContentByColumnIndex(columnIndex,x); 
    } 


    ArrayList<String> extractExcelContentByColumnIndex(int columnIndex, String colName) 
    { 
      ArrayList<String> columndata = null; 
      String x ="Address"; 
      try { 
       File f = new File("abc.xlsx"); 
       FileInputStream ios = new FileInputStream(f); 
       XSSFWorkbook workbook = new XSSFWorkbook(ios); 
       XSSFSheet sheet = workbook.getSheetAt(0); 
       Iterator<Row> rowIterator = sheet.iterator(); 
       columndata = new ArrayList<String>(); 



       while (rowIterator.hasNext()) { 

        Row row = rowIterator.next(); 
        System.out.println(row.getRowNum()); 
        Iterator<Cell> cellIterator = row.cellIterator(); 
        while (cellIterator.hasNext()) { 

          Cell cell = cellIterator.next(); 

          /*String temp=cell.getStringCellValue(); 
          System.out.println(temp);*/ 

         if(row.getRowNum() > 0){ //To filter column headings 
          if(cell.getColumnIndex() == columnIndex){// To match column index 
           switch (cell.getCellType()) { 
           case Cell.CELL_TYPE_NUMERIC: 

            columndata.add(cell.getNumericCellValue()+""); 
            break; 
           case Cell.CELL_TYPE_STRING: 

            columndata.add(cell.getStringCellValue()); 
            break; 

           } 

          } 
         } 
        } 
       } 
       ios.close(); 
       System.out.println(columndata); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      return columndata; 
     } 
} 

Antwort

0

Der Code ist in Ordnung, aber Sie sind die Lösung der gewünschten Spalte Index, nicht nennen; Stellen Sie sicher, dass Sie den richtigen Spaltenindex in Parameter übergeben oder verwenden Sie den Spaltennamen, um den Spaltenindex aufzulösen und denselben Code beizubehalten.