2016-03-21 12 views
0

私は巨大なリストのキー値ベースのレコードを持っています。私はを使用しました。 'CellReference'、私は他の方法が効率的な方法で可能であることを知りたいです。 'CellReference'更新に時間がかかります。.xlsまたは.xlsxファイルのデータを更新する

データは、この方法のように持っている: -

 Column/value 

     B9  35 
     B8  63 
     B7  11 
     B6  36 
     B5  87 
     B14 3066 
     B13 5025 

そして、私のコードを繰り返し、各ペアがあるために: -

 Map<String,Integer> result= getMap();//getting Column and value 
     Iterator it = result.entrySet().iterator(); 
     CellReference reference=null; 
      while (it.hasNext()) { 
       Map.Entry pair = (Map.Entry) it.next(); 
       reference = new CellReference(pair.getKey().toString()); 
       Row row = spreadsheet.getRow(reference.getRow()); 
       Cell cell = null; 
       if (row != null) { 
        cell = row.getCell(ref.getCol()); 
       } 
      if (cell != null) 
       cell.setCellValue(Double.parseDouble(pair.getValue().toString())); 
     } 
+0

あなたが探しているプロスペクティブは - それ以外の方法で効率的な方法で可能です。それが動作しています。 –

+0

私は効率的な方法をしたいですか? – Vinod

答えて

0

効率的な用語は、ここではかなり不明であるが、あなたはまた、

よう試みることができます
  List<String> dataList = new ArrayList<String>(); 
    List<Integer> rowNo=new ArrayList<Integer>(); 
    List<Integer> colNo=new ArrayList<Integer>(); 
    int countRow=1; 
    int countCol=1; 
    try { 

     FileInputStream fis = new FileInputStream(file); 
    // System.out.println("loadinggg !!!"); 
     HSSFWorkbook wb = new HSSFWorkbook(fis); 
     HSSFSheet sheet = wb.getSheetAt(0); 
     Iterator<Row> rowIterator = sheet.iterator(); 

     while (rowIterator.hasNext()) { 
      rowNo.add(countRow); 
      Row row = rowIterator.next(); 
      Iterator<Cell> cellIterator = row.cellIterator(); 
      while (cellIterator.hasNext()) { 
       cell = cellIterator.next(); 
       switch (cell.getCellType()) { 
       case Cell.CELL_TYPE_STRING: { 
        dataList.add(cell.getStringCellValue()); 
        cell.setCellValue("iterate through your own list here"); 
       } 
        break; 
       } 
      } 
     } 
+0

いくつかの点で効率的であるためには、読みやすい滑らかなコードが必要です。 –

+0

ありがとう、しかし、この方法では、値N番目の列を挿入しようとすると、すべての列が反復されます。 – Vinod

+0

positionとしてパラメータを使用したり、positionコレクションを繰り返し処理して代わりに使用することができます。 –

関連する問題