2016-03-22 6 views
1

セルを作成し、既存のスタイルを割り当ててそのセルの値を設定しようとしています。私はないですApache POI - 1つのコマンドでセル値とセルスタイルを設定するセルを作成する

row.createCell(1).setCellValue(new String("Survey "+i)); 

次のようしかし、細胞の作成および値を割り当てることは、単一の行にすることができる

HSSFRow row = sheetBenefits.createRow(rowNoPB+i); 
HSSFCell cell0 = row.createCell(1); 
cell0.setCellStyle(style); 
cell0.setCellValue(new String("Survey "+i)); 

:これは、コードの次の3行を使用することによって、通常達成することができますこの行にスタイルを設定することができ:

row.createCell(1).setCellValue(new String("Survey"+i)).setCellStyle(style); 

それは私を与えるエラーが「無効プリミティブ型のsetCellValue(String)を呼び出すことはできません」です。この場合のエラーは何ですか? 1つのコード行で3つの目的をすべて達成するにはどうすればよいですか?

答えて

1

メソッドrow.createCellは、タイプHSSFCellのオブジェクトを返します。そのため、さらにメソッドを呼び出すことができます。どのメソッドを呼び出すかは、setCellValueメソッドを呼び出します。

しかし、このメソッドはvoidを返します。何も返しません。だから、それ以上のメソッドを呼び出すことはできません。

さらに悪いことに、row.createCellの結果をどこにも保存していないため、作成した参照が失われています。 rowからもう一度検索する必要があります。これは、まずは(ローカル)変数に格納する必要があります。

あなたが探しているのはStringBuilderまたは他のビルダーによって実装されているような「流体インターフェイス」です。しかし、Apache POIは流体インタフェースで設計されていないので、これを行うことはできません。

あなたが書いたコードの最初の部分に移動する必要があります。

+0

グレート:

public static Cell addCell(Row row, int columnIndex, CellStyle cellStyle, String value) { Cell cell = row.createCell(columnIndex); cell.setStyle(cellStyle); cell.setValue(value); return cell; } 

だけで静的メソッドを呼び出してセルを追加するには!どうもありがとう! –

1

setCellValueメソッドの戻り値の型がvoidであるため、setCellValueを呼び出した後にsetCellStyleメソッドを配置することはできません。

一方、作業を行うための静的メソッドを作成することを検討することがあります。

addCell(row, 1, cellStyle, "Hell World"); 
関連する問題