2016-09-30 3 views
0

enter image description here読むエクセル - ハッシュマップ、ArrayListの

こんにちは、

私は(Javaを使用)Excelで列ヘッダーを使用した列の値を読み込むしようとしています。画像に添付されているように、私はヘッダー "都市"、列の​​下のすべての後続のセルを読み取って表示したいと仮定します。どうすればいいの?

インターネット上のサンプルを見ると、ほとんどの例が反復子を使って反復処理されています。

私は、Excelのヘッダーとしてキーのハッシュマップを持ち、その後の値がArrayListに格納されているとします。何かのように

HashMap<String, ArrayList<String>> hashmap = 
       new HashMap<String, ArrayList<String>>(); 

どうすればいいですか?誰もコードとロジックで私を助けることができますか?

私はstackoverflowとインターネットで検索しようとしましたが、そのほとんどは行を使って繰り返します。

+0

明確ではないことかもしれない場所の問題 ここにある。行と[getCell(4)](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Row.html#getCell(int))の行を繰り返し処理します。これは列 'E各行から。 –

+0

私はそれを一般的にしたいと思っています。特定の行または列ではありません。特定の列ヘッダーについては、私はすべてのセル値を抽出したい。あなたが同じコードのいくつかの部分で私を助けることができるなら、それは素晴らしいだろう。 –

答えて

1

データがExcelシート(列ではなく行内)に格納される方法であるため、行を繰り返し処理することなく、列内のすべてのセルを直接読み取る方法はありません。回避策は、hereと表示されているように行と列を転置して、その行を反復して、質問に示されているとおりにHashmapにデータを取得することです。あなたはすべての列の値を取得することができた後、私は

読む列の値のコードが最初の行

public void readFirstRow(String filename) 
{ 

    List<String> fieldsArrayList = new ArrayList<String>(); 

    try{ 

      FileInputStream myInput = new FileInputStream(new File(filename)); 

      Workbook workBook = null; 

      workBook = new HSSFWorkbook(myInput); 

      Sheet sheet = workBook.getSheetAt(0); 

      Row firstRow = sheet.getRow(0); 

      int length = firstRow.getLastCellNum(); 

      Cell cell = null; 

      for(int i = 0 ; i < length ; i++) 

       { 
        cell = firstRow.getCell(i); 

        fieldsArrayList.add(cell.toString()); 

       } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
の読み方を与えているの下に

+0

情報ありがとうございます。行と列を転置するのではなく、列ヘッダー名に基づいてすべてのセルを取得できますか? –

+0

データが格納される方法(行単位)に課される基本的な制限のために、私は他の方法を知らず、少なくともCSV形式またはExcel形式の表に対しては、それらの中に。行の1つのセルから次のセルへの直接ポインタ(ソート)がありますが、異なる行の列のセルにはそのようなリンケージは存在しません。このようにして、同じ長さのスレッドがテーブルの上に横に1つずつ下に横たわっているとします。スレッドの長さをトラバースすることはできますが、あるスレッドの1つのポイントから次のスレッドの1つのポイントにジャンプすることはできません。 –

0

まず、あなたは、1行目を読み込みます:

//あなただけ渡しますcityPostionとファイル名

public void readColumnValues(int cityPosition,String fileName) 
{ 
    try 
    { 
     FileInputStream myInput = new FileInputStream(fileName); 

     Workbook workBook = null; 

     workBook = new HSSFWorkbook(myInput); 
     Sheet sheet = workBook.getSheetAt(0); 

     for (int i = 0 ; i <= sheet.getLastRowNum() ; i++) 
     { 
      Row row = sheet.getRow(i); 

      if (i > 0) //skip first row 
      { 

       Cell cityCell = row.getCell(cityPosition); 


       String cityNames  = cityCell.toString(); 
      } 

     } 

    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

は...それはあなたに役立つ

+0

NullPointerExceptionsを必要としない限り、ヌル行とヌルセルを確認します。 – IceArdor

+0

助けてくれてありがとう。私のクラスを作成しました –

+0

@parthi: public void readFirstRow(String filename) \t {try {FileInputStream myInput = new FileInputStream(new File(filename)); ブックワークブック= null; workBook =新しいHSSFWorkbook(myInput); シートシート=ワークブック。getSheetAt(0); 行firstRow = sheet.getRow(0); int length = firstRow.getLastCellNum(); セルセル= null。 for(int i = 0; i

関連する問題