2017-09-11 26 views
0

こんにちはどのようにしてオブジェクト内に複数の値を格納するためにループ内に動的オブジェクトを作成できますか?次に、これらのオブジェクトにアクセスして操作します。Apache POI Javaメンバークラス変数を使用して読み込み

オブジェクトの作成に動的変数名を付けることは可能ですか?代入の左側に変数の動的な値を与えることはできますか?質問が明確でない場合は編集を依頼してください。解決策がすでに利用可能な場合は、私にそれを指摘してください。

package poi; 

import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.xssf.usermodel.XSSFRow; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

public class ExcelRead_UsingMember { 
    public static int C, R, i; 
    public static double ID; 
    private static final String FILE_READ = "C:/Users/m93162/ApachePOI_Excel_Workspace/MyFirstExcel.xlsx"; 
    //private static final String FILE_WRITE = "C:/Users/m93162/ApachePOI_Excel_Workspace/WriteExcel.xlsx"; 

    public static void main(String[] args) { 
     List<Member> listOfMembers = new ArrayList<Member>(); 

     try { 
      FileInputStream excelFile = new FileInputStream(new File(FILE_READ)); 
      Workbook workbook = new XSSFWorkbook(excelFile); 
      Sheet datatypeSheet = workbook.getSheetAt(0); 
      Iterator<Row> iterator = datatypeSheet.iterator(); 

      while (iterator.hasNext()) { 

        Row currentRow = iterator.next(); 
        Iterator<Cell> cellIterator = currentRow.iterator(); 

        int i=0; 

        while (cellIterator.hasNext()) { 
         Member [member+i] = new Member(); 
QUESTION: I want to create dynamic objects here and store the values below dynamically. How to approach this. 

         Cell currentCell = cellIterator.next(); 


         if (currentCell.getCellTypeEnum() == CellType.STRING) { 
          System.out.print(currentCell.getStringCellValue() + "--"); 
         } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { 
          System.out.print(currentCell.getNumericCellValue() + "--"); 
         } 

        } 
        System.out.println(); 

       } 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    } 
+0

私の要件は複数のデータ型を定義するためにメンバークラスを必要とします...誰でもこれを試してみてください – Krishna

答えて

2

マップを使用できます。

DynamicObject

DynamicObject { 
    prvate Map<String, Object> map = new HashMap(); 

    public void addPropery(String key, Object value) { 
      map.put(key, value); 
    } 
} 

Your code

private void processRow(Row row) { 
    while (cellIterator.hasNext()) { 
     dynamicObjects[member+i] = new DynamicObject(); 
     DynamicObject dynamicObject = dynamicObjects[member+i]; 
     Cell currentCell = cellIterator.next(); 

     if (currentCell.getCellTypeEnum() == CellType.STRING) { 
      System.out.print(currentCell.getStringCellValue() + "--"); 
         dynamicObject.addProperty("stringField", currentCell.getStringCellValue()); 
     } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) { 
      System.out.print(currentCell.getNumericCellValue() + "--"); 
         dynamicObject.addProperty("numericField", currentCell.getNumericCellValue()); 
     } 

    } 
} 

その後、あなたはすべての可能な値を取得するにはマップのキーを横切ることができます。他のオブジェクト(ネストされたマップなど)をマップ内に値として格納することもできます。

+0

何かを説明できます// dynamicObjects [member + i] [members + i]私のコードの例 – Krishna

関連する問題