XSSFスプレッドシートでカスタム塗りつぶし色を設定しようとしていますが、これまでのところ、java.awt.Colorまたはorgで使用可能なデフォルトの色に基づいて色を追加することしかできませんでした。 apache.poi.ss.usermodel.IndexedColors。ここに私はその作品があります:Apache POI XSSF設定fillForegroundColor from RGB
// setup
var workbook= CreateObject(
"java",
"org.apache.poi.xssf.usermodel.XSSFWorkbook"
).Init();
var sheet = workbook.CreateSheet('test');
var row = sheet.CreateRow(0);
// first cell, using IndexedColors
var cell = row.createCell(0);
cell.setCellValue('test');
var IC = CreateObject(
"java",
"org.apache.poi.ss.usermodel.IndexedColors"
);
var style = workbook.createCellStyle();
style.setFillPattern(style.SOLID_FOREGROUND);
style.setFillForegroundColor(IC.SKY_BLUE.getIndex());
cell.setCellStyle(style);
// second cell, using java.awt.Color
var cell2 = row.createCell(1);
cell2.setCellValue('test two');
var C = CreateObject(
"java",
"java.awt.Color"
);
var XSSFColor = createObject("java", "org.apache.poi.xssf.usermodel.XSSFColor");
var myColor = XSSFColor.init(C.BLUE);
var style2 = workbook.createCellStyle();
style2.setFillPattern(style2.SOLID_FOREGROUND);
style2.setFillForegroundColor(myColor);
cell2.setCellStyle(style2);
var FileOutputStream = CreateObject(
"java",
"java.io.FileOutputStream"
).Init(myFileName);
// Write the workout data to the file stream.
workbook.Write(
FileOutputStream
);
// Close the file output stream.
FileOutputStream.Close();
それですべての作品;しかし、私はまだRGB値を使用して色を取得することにはほど遠いです。 java.awt.Colorを使用してXSSFColorを作成すると仮定すると、任意の数のコンストラクタを使用してColorオブジェクトを作成できるはずです。 https://docs.oracle.com/javase/7/docs/api/java/awt/Color.htmlから、私が試したことはここにあります。 「initメソッドが見つかりませんでした」これらのスローのすべて:
var C = CreateObject(
"java",
"java.awt.Color"
);
// constructor Color(int r, int g, int b)
// var c1 = C.init(197,217,241);
// constructor Color(int r, int g, int b, int a)
// var c1 = C.init(197,217,241,255);
// constructor Color (float r, float g, float b);
// var c1 = C.init(0.0, 0.5, 1.0);
さて、XSSFColorあなたはバイト配列を渡すことができるようにコンストラクタを持っています。それは私の次の問題に私をもたらします。一瞬さておき、私はバイト配列を作成し、そのようなコンストラクタにそれを渡すためにしようとするJavaバイトは、署名されているという事実を置く、例外がスローされます。
var bytes = javaCast(
"byte[]",
[
javaCast("byte", 50),
javaCast("byte", 50),
javaCast("byte", 50)
]
);
var XSSFColor = createObject("java", "org.apache.poi.xssf.usermodel.XSSFColor");
var c1 = XSSFColor.init(bytes); // throws "Unable to find a constructor for class org.apache.poi.xssf.usermodel.XSSFColor that accepts parameters of type ([B)."
最後に、をjava.awt.Colorが持っています
カラー(INT RGB)のように定義コンストラクタ は、ビット8-15の緑色成分、及び青色成分のビット16-23における赤色成分からなる指定合成されたRGB値を使って、不透明なsRGBカラーを作成しビット0-7。
私はどのように
リー、あなたは男です。私はそれが何か単純でなければならないと考えました。私はdecode()メソッドを試しましたが、間違って実装しているに違いないと誓っています。そして、明らかに私はCreateObjectと一緒にjavacastを研究する時間を取らなかった... CF文書の何も私に飛び出さなかった。 – earachefl
私はあなたが意味することを知っています。 Javaのものは少し面倒です。とにかく助けてくれてうれしいです:-) – Leigh