2016-07-12 4 views
-1

データがExcel + 10 +列のシートにあります。特定の列データを新しいシートにコピーするか、コンソールに表示したいと思います。私は変数に1つの列の名前を取って、ヘッダー行の各セルでその列のデータを新しいシートにコピーするか、カーソルに表示するかどうかをチェックします。 次のコードで試しましたが、期待される出力が得られませんでした。私を助けてください。JAVAを使用してヘッダーが一致する場合、特定の列データをコピーするには

コード:

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; 
     } 
} 

答えて

0

コードは結構ですが、あなたが名前を付け、インデックスで目的の列ではなく解決されています。 正しい列インデックスをパラメータに渡すか、列名を使用して列インデックスを解決し、同じコードを保持するかを確認してください。

関連する問題