オレンジ色で塗りつぶされたセルとテキストが与えられたセルとExcelスプレッドシートを作成するプログラムを作成しています。 PropertyTemplate
。私はHSSFでこれを行うためのコードを書いていますが、現在はXSSFに取り組んでおり、動作させることはできません。Apache POIは、PropertyTemplate枠を適用するときにXSSFセルを黒で塗りつぶします。
セルは正しいオレンジ色で塗りつぶされ、テキストも正しくセルに入りますが、PropertyTemplateを適用するとオレンジ色のセルが黒くなります。誰かがこれを回避する方法を知っていますか?
ここに私のコードがあります。
XSSFCellStyle orangeFillStyle = wb.createCellStyle();
orangeFillStyle.setFillForegroundColor(new XSSFColor(new java.awt.Color(255, 192, 0)));
orangeFillStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
は、その後オレンジ埋めるためにどのセルやテキストを置くためにどのセルを把握するためのコード/アルゴリズムの全体の束があり、私は、コードを使用して、細胞をハイライト:。
currCell.setCellStyle(orangeFillStyle);
非常に
BorderStyle dividerStyle = BorderStyle.THIN;
PropertyTemplate borderTemplate = new PropertyTemplate();
borderTemplate.drawBorders(new CellRangeAddress(0, 0, 0, 13), dividerStyle, BorderExtent.BOTTOM);
borderTemplate.drawBorders(new CellRangeAddress(0, 0, 1, 13), dividerStyle, BorderExtent.TOP);
borderTemplate.drawBorders(new CellRangeAddress(0, rowI, 1, 13), dividerStyle, BorderExtent.VERTICAL);
borderTemplate.drawBorders(new CellRangeAddress(rowI, rowI, 0, 13), dividerStyle, BorderTextent.BOTTOM);
borderTemplate.applyBorders(sheet);
私はborderTemplate.applyBorders(sheet);
行をコメントアウトした場合、塗りつぶしの色がうまくなりますシート作成の最後には、PropertyTemplate
(ボーダー)のコードです。明らかに、もし私がそれをしたら、私は自分のシートにいかなる境界線も持っていません。それは私がカスタムの塗りつぶしの色と境界線を同時に持つことができないようなものです。なぜこれが起こっているのか、その周りの道を知っていますか?
カスタムカラーの代わりにIndexedColor
を使用すると、塗りつぶしと境界線がうまく機能することに注意してください。唯一の問題は、インデックス付きの色が気に入らないことです。
XSSFCellStyle orangeFillStyle = wb.createCellStyle();
orangeFillStyle.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
orangeFillStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
これはバグではなく不完全です。 'PropertyTemplate'と' CellUtil'は 'ss.usermodel'レベルのみに基づいており、' xssf.usermodel'レベルにはありません。しかし、[org.apache.poi.ss.usermodel.CellStyle](https://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/CellStyle.html)は 'setFillForegroundColor色の色) '。 'setFillForegroundColor(short bg)'しか知りません。したがって、 'ss.usermodel'レベルでは、今までは' Color'を塗りの前景色として設定することはできません。 「短い」(カラーインデックス)のみが可能である。 –