2017-04-03 7 views
1

Iコンテンツむしろはどのように、垂直にExcelシート

Multimap<Integer, String> map = getMap(); 
      XSSFWorkbook workbook = new XSSFWorkbook(); 
      XSSFSheet spreadsheet = workbook.createSheet("companyInsurence"); 
      XSSFRow row; 
      Set <Integer> keyid = map.keySet(); 
      row = spreadsheet.createRow(0); 

     Cell InitialCell=row.createCell(0); 
     InitialCell.setCellValue("id"); 

     Cell InitialCell1=row.createCell(1); 
     InitialCell1.setCellValue("date"); 

     int rowid = 1; 
     for (Integer key : keyid){ 
      row = spreadsheet.createRow(rowid++); 
      Cell cell0 = row.createCell(0); 
      cell0.setCellValue(key); 
      Collection<String> objectList = map.get(key); 

      int cellid = 1; 
      for (Object obj : objectList) 
      { 
       Cell cell = row.createCell(cellid++); 
       if(obj!=null){ 
        cell.setCellValue(obj.toString()); 
       }else{ 
        cell.setCellValue(" "); 
       } 
      } 
     } 

AMD地図コンテンツが {12 = [1,2水平レイアウトに比べて垂直に表現されなければならないマップを持っているでmap'contentを表すため3,4,5,6,6,6]、13 = [123456,988,65、HGG、91]}

私はたい

id  date 
12  1 2 4 .... 
13  123456 988 65 

ので、代わりにこのように、シート番組データをエクセルこのようなもの

id date 
12 1 
12 2 
12 3 
12 4 
12 5 
12 6 
: 
: 
: 
: 
13 65 

答えて

0

各キーではなく、値ごとに行を作成する必要があります。

int rowid = 1; 
for (Integer key : keyid){ 
    Collection<String> objectList = map.get(key); 
    for (Object obj : objectList) 
    { 
     row = spreadsheet.createRow(rowid++); 
     Cell cell0 = row.createCell(0); 
     cell0.setCellValue(key); 
     Cell cell = row.createCell(1); 
     if(obj!=null){ 
      cell.setCellValue(obj.toString()); 
     }else{ 
      cell.setCellValue(" "); 
     } 
    } 
} 

注:私はこれを実行していません。

関連する問題