2016-06-11 1 views
1

groovyでマップを使用してExcelファイルを作成しようとしています。これはグルーヴィーで行うことができますどのようにgroovyでマップを使用してExcelを書く

//writing data in the map 
Map < String, Object[] > empinfo = new TreeMap < String, Object[] >(); 
    empinfo.put("1", new Object[] {"EMP ID", "EMP NAME", "DESIGNATION" }); 
    empinfo.put("2", new Object[] {"", "Gopal", "Technical Manager" }); 
    empinfo.put("7", new Object[] {"tp02", "Manisha", "Proof Reader" }); 
    empinfo.put("4", new Object[] {"tp03", "", "Technical Writer" }); 
    empinfo.put("5", new Object[] {"tp04", "Satish", "Technical Writer" }); 
    empinfo.put("6", new Object[] {"tp05", "Krishna", "" }); 

    //Iterate over data and write to sheet 
    Set <String> keyid = empinfo.keySet(); 
    int rowid = 0; 
    for (String key : keyid) 
    { 
    row = spreadsheet.createRow(rowid++); 
    Object [] objectArr = empinfo.get(key); 
    int cellid = 0; 
    for (Object obj : objectArr) 
    { 
     Cell cell = row.createCell(cellid++); 
     cell.setCellValue((String)obj); 
    } 
    } 

以下に示すようにJavaで は、私は私のマップ内の値を入力するのですか? 私はgroovyを初めて使用しており、どんな助力も高く評価されています。

+0

あなたがしていることを正確に行うことができるはずです...何が問題なのですか?これを慣用句で書き直しますか?何を試しましたか?どこに問題がありますか? –

+0

はい、私はgroovyでこれを書いています。現在私はこのようなものを試しています 'def empinfo = [:]; empinfo.put( "EMP ID"、 "EMP NAME"、 "DESIGNATION"); empinfo.put( ""、 "Gopal"、 "Technical Manager"); empinfo.put( "tp02"、 "Manisha"、 "Proof Reader"); empinfo.put( "tp03"、 ""、 "Technical Writer"); empinfo.put( "tp04"、 "Satish"、 "Technical Writer"); Empinfo.put( "tp05"、 "Krishna"、 ""); ' – user3331923

+0

次のエラーが発生しました ' Caught:groovy.lang.MissingMethodException:メソッドのシグネチャがありません:java.util.LinkedHashMap.put()引数型に適用されます:(java.lang.String、java.lang.String、java.lang.String)values:[EMP ID、EMP NAME、DESIGNATION] 可能な解決策:put(java.lang.Object、java.lang groovy.lang.MissingMethodException:メソッドのシグネチャがありません。java.util。java.util.MapingMethodException:メソッドのシグネチャがありません。 LinkedHashMap.put()は引数型に適用されます:(java.lang.String、java.lang.String、java.lang.String)values:[..... ' – user3331923

答えて

1

groovyがこのような配列宣言構文をサポートしていないため、groovy.lang.MissingMethodExceptionが得られます。ここで

Groovy array declaration

Groovy map declaration

あなたは猫の皮を剥ぐために複数の方法がありますTreeMapの

def empinfo = new TreeMap<String, Object[]>(); 

empinfo["1"] = ["EMP ID", "EMP NAME", "DESIGNATION"] as Object[]; 
empinfo["2"] = ["", "Gopal", "Technical Manager"] as Object[]; 
empinfo["7"] = ["tp02", "Manisha", "Proof Reader"] as Object[]; 
empinfo["4"] = ["tp03", "", "Technical Writer"] as Object[]; 
empinfo["5"] = ["tp04", "Satish", "Technical Writer"] as Object[]; 
empinfo["6"] = ["tp05", "Krishna", ""] as Object[]; 

または

TreeMap empinfo = [ 
    "1": ["EMP ID", "EMP NAME", "DESIGNATION"] as Object[], 
    "2": ["", "Gopal", "Technical Manager"] as Object[], 
    "7": ["tp02", "Manisha", "Proof Reader"] as Object[], 
    "4": ["tp03", "", "Technical Writer"] as Object[], 
    "5": ["tp04", "Satish", "Technical Writer"] as Object[], 
    "6": ["tp05", "Krishna", ""] as Object[] 
]; 
0

を宣言することができる方法である。

// writing data in the map 
def empinfo = [ 
    "1" : ["EMP ID", "EMP NAME", "DESIGNATION"], 
    "2" : ["", "Gopal", "Technical Manager"], 
    "3" : ["tp02", "Manisha", "Proof Reader"], 
    "4" : ["tp03", "", "Technical Writer"], 
    "5" : ["tp04", "Satish", "Technical Writer"], 
    "6" : ["tp05", "Krishna", ""] 
] 

short rowid = 0 
empinfo.each { key, value -> 
    row = spreadsheet.createRow(rowid++) 
    short cellid = 0 
    value.each { item -> 
     def cell = row.createCell(cellid++) 
     cell.setCellValue(item) 
    } 
} 

"Groovyness"をどれくらい持ちたいかはあなた次第です。

+0

'rowid'のデータ型を変更しました。 POIはintを受け付けないので、 'cellid'を' short'にします。 – ChrLipp

関連する問題