17

Apache POI を使用してデータを .xlsx ファイルにエクスポートしています。ファイルに含まれる行とセルの一部のスタイルを設定したいと考えています。

ファイルはExcel 2007以降で読み取られるため、XSSFを使用しています。

基本的に、私の問題は、次の例のように行スタイルを設定しようとしていることです。これは、インデックス 0 で行全体に黒の前景色を設定します。正常に動作しますが、新しいセルを作成するたびに、新しく作成された指定した行スタイルをオーバーライドしているかのように、セルにはスタイルがありません。

私がやっていることを示すコードスニペットは次のとおりです。

XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("mySheet");
XSSFRow row = sheet.createRow(0);

XSSFCellStyle myStyle = wb.createCellStyle();           

myStyle.setFillForegroundColor(new XSSFColor(new Color(255, 255, 255)));
myStyle.setFillPattern(CellStyle.SOLID_FOREGROUND);

row.setRowStyle(myStyle); //This works, the whole row is now black

row.createCell(0); // This cell doesn't have a style, the rest of the line stays stylized
row.getCell(0).setCellValue("Test");

*row.createCell(0, Cell.CELL_TYPE_STRING);* も試しましたが、何も変わりませんでした。

私がやりたいことを達成する正しい方法は何ですか? 同じ行のすべてのセルが同じスタイルを持つため、作成後に各セルのスタイルを設定する必要がなかったので、このようにしたかったのです。

4

3 に答える 3

12

新しく作成されたセルにもスタイルを設定します。たとえば、以下のとおりです。

    XSSFCell newCell = row.createCell(0);
    newCell.setCellStyle(myStyle);
于 2012-10-31T05:11:58.377 に答える
10

スタイルで行を作成しても、その行の作成されたセルには影響しません。作成セルには、独自のセル スタイルがあります。は自動的にrow styleオーバーライドされません。cell styleセルで行スタイルを使用したい場合は、再度設定する必要があります。

最後に設定row styleしてもセルには影響しません。

CreationHelper createHelper = wb.getCreationHelper();
Sheet sheet = wb.createSheet("new sheet");
Row r = sheet.createRow(0);
r.setRowStyle(rowStyle);

Cell c1 = r.createCell(0);
c1.setCellValue("Test 1");
c1.setCellStyle(rowStyle);
于 2012-10-31T05:33:37.513 に答える