internal void Initialize(PaletteRecord p) { int idx = _minUserDefined; foreach (int c in p.Colors) { PaletteEntry pe = _colors[idx++]; if (pe != null) { pe.Color = Color.FromArgb(c); } else { break; } } }
public void TestCustomPalette() { //reading sample xls HSSFWorkbook book = HSSFTestDataSamples.OpenSampleWorkbook("Simple.xls"); //creating custom palette HSSFPalette palette = book.GetCustomPalette(); palette.SetColorAtIndex((short)0x12, (byte)101, (byte)230, (byte)100); palette.SetColorAtIndex((short)0x3b, (byte)0, (byte)255, (byte)52); //writing to disk; reading in and verifying palette string tmppath = TempFile.GetTempFilePath("TestCustomPalette", ".xls"); FileStream fos = new FileStream(tmppath, FileMode.OpenOrCreate); book.Write(fos); fos.Close(); FileStream fis = new FileStream(tmppath, FileMode.Open, FileAccess.Read); book = new HSSFWorkbook(fis); fis.Close(); palette = book.GetCustomPalette(); HSSFColor color = palette.GetColor(HSSFColor.Coral.Index); //unmodified Assert.IsNotNull(color, "Unexpected null in custom palette (unmodified index)"); byte[] expectedRGB = HSSFColor.Coral.Triplet; byte[] actualRGB = color.RGB; String msg = "Expected palette position to remain unmodified"; Assert.AreEqual(expectedRGB[0], actualRGB[0], msg); Assert.AreEqual(expectedRGB[1], actualRGB[1], msg); Assert.AreEqual(expectedRGB[2], actualRGB[2], msg); color = palette.GetColor((short)0x12); Assert.IsNotNull(color, "Unexpected null in custom palette (modified)"); actualRGB = color.RGB; msg = "Expected palette modification to be preserved across save"; Assert.AreEqual((short)101, actualRGB[0], msg); Assert.AreEqual((short)230, actualRGB[1], msg); Assert.AreEqual((short)100, actualRGB[2], msg); }
public void TestDefaultPalette() { PaletteRecord palette = new PaletteRecord(); //make sure all the HSSFColor constants match Dictionary <int, HSSFColor> colors = HSSFColor.GetIndexHash(); foreach (KeyValuePair <int, HSSFColor> entry in colors) { int index = entry.Key; HSSFColor c = entry.Value; byte[] rgbTriplet = c.GetTriplet(); byte[] paletteTriplet = palette.GetColor((short)index); String msg = "Expected HSSFColor constant to match PaletteRecord at index 0x" + NPOI.Util.StringUtil.ToHexString(c.Indexed); Assert.AreEqual(rgbTriplet[0], paletteTriplet[0] & 0xff, msg); Assert.AreEqual(rgbTriplet[1], paletteTriplet[1] & 0xff, msg); Assert.AreEqual(rgbTriplet[2], paletteTriplet[2] & 0xff, msg); } }
public void TestDefaultPalette() { PaletteRecord palette = new PaletteRecord(); //make sure all the HSSFColor constants match Hashtable colors = HSSFColor.GetIndexHash(); IEnumerator indexes = colors.Keys.GetEnumerator(); while (indexes.MoveNext()) { int index = (int)indexes.Current; HSSFColor c = (HSSFColor)colors[index]; short[] rgbTriplet = c.GetTriplet(); byte[] paletteTriplet = palette.GetColor((short)index); String msg = "Expected HSSFColor constant to match PaletteRecord at index 0x" + NPOI.Util.StringUtil.ToHexString(c.GetIndex()); Assert.AreEqual(rgbTriplet[0], paletteTriplet[0] & 0xff, msg); Assert.AreEqual(rgbTriplet[1], paletteTriplet[1] & 0xff, msg); Assert.AreEqual(rgbTriplet[2], paletteTriplet[2] & 0xff, msg); } }
public HSSFPalette(PaletteRecord palette) { this.palette = palette; }
public void SetUp() { palette = new PaletteRecord(); hssfPalette = new HSSFPalette(palette); }
private Biff GetCorrectRecord(GenericBiff record, Stream stream, SstRecord sst) { Biff ret = record; switch (record.Id) { case (ushort)RecordType.Bof: BofRecord bof = new BofRecord(record); if (bof.Version < 0x0600) { throw new Exception("Versions below Excel 97/2000 are currently not supported."); } ret = bof; break; case (ushort)RecordType.Boundsheet: ret = new BoundSheetRecord(record); break; case (ushort)RecordType.Index: ret = new IndexRecord(record); break; case (ushort)RecordType.DbCell: ret = new DbCellRecord(record); break; case (ushort)RecordType.Row: ret = new RowRecord(record); break; case (ushort)RecordType.Continue: ret = new ContinueRecord(record); break; case (ushort)RecordType.Blank: ret = new BlankRecord(record); break; case (ushort)RecordType.BoolErr: ret = new BoolErrRecord(record); break; case (ushort)RecordType.Formula: ret = new FormulaRecord(record, stream); break; case (ushort)RecordType.Label: ret = new LabelRecord(record); break; case (ushort)RecordType.LabelSst: ret = new LabelSstRecord(record, sst); break; case (ushort)RecordType.MulBlank: ret = new MulBlankRecord(record); break; case (ushort)RecordType.MulRk: ret = new MulRkRecord(record); break; case (ushort)RecordType.String: ret = new StringValueRecord(record); break; case (ushort)RecordType.Xf: ret = new XfRecord(record); break; case (ushort)RecordType.Rk: ret = new RkRecord(record); break; case (ushort)RecordType.Number: ret = new NumberRecord(record); break; case (ushort)RecordType.Array: ret = new ArrayRecord(record); break; case (ushort)RecordType.ShrFmla: ret = new SharedFormulaRecord(record); break; case (ushort)RecordType.Table: ret = new TableRecord(record); break; case (ushort)RecordType.Sst: ret = new SstRecord(record, stream); break; case (ushort)RecordType.Eof: ret = new EofRecord(record); break; case (ushort)RecordType.Font: ret = new FontRecord(record); break; case (ushort)RecordType.Format: ret = new Net.SourceForge.Koogra.Excel.Records.FormatRecord(record); break; case (ushort)RecordType.Palette: ret = new PaletteRecord(record); break; case (ushort)RecordType.Hyperlink: ret = new HyperLinkRecord(record); break; } return(ret); }
void Test() { filePath = "E:/MyWork/test.xls"; wk = new HSSFWorkbook(); sheet = wk.CreateSheet("mySheet"); HSSFWorkbook hssfWorkbook = new HSSFWorkbook(); //工作簿实例 HSSFPalette palette = hssfWorkbook.GetCustomPalette(); //调色板实例 //palette.SetColorAtIndex((short)8, (byte)0, (byte)200, (byte)0); //PaletteRecord p = new PaletteRecord(); PaletteRecord p = new PaletteRecord(); //调色板实例 //HSSFPalette palette = workbookAll.GetCustomPalette(); //RGB颜色值,第一个值:8~64之间,后面三个值为RGB色值 //palette.SetColorAtIndex((short)8, 179, 179, 179); //颜色实例 //HSSFColor hSSFColor = palette.FindColor(179, 179, 179); //style.FillPattern = CellFillPattern.SOLID_FOREGROUND; //应用颜色到Style //style.FillForegroundColor = hSSFColor.GetIndex(); //List<HSSFColor> colors = new List<HSSFColor>(); Dictionary <int, ICellStyle> colDic = new Dictionary <int, ICellStyle>(); for (int i = 0; i < size; i++) { row = sheet.CreateRow(i); for (int j = 0; j < size / 4; j++) { cell = row.CreateCell(j); //cell.SetCellValue(i + "-" + j); Color col = texture.GetPixel(j * 4, size - i); //Color col = GetArvCol(j * 4, size - i); //if(col.a <= 0.1f) //{ //} short similarColor = palette.FindSimilarColor((byte)(col.r * 255), (byte)(col.g * 255), (byte)(col.b * 255)).Indexed; //透明的地方用白色 if (col.a <= 0.1f) { similarColor = 9; } //Debug.LogError(similarColor.Indexed); if (!colDic.ContainsKey(similarColor)) { ICellStyle s = wk.CreateCellStyle(); colDic.Add(similarColor, s); s.FillForegroundColor = similarColor; s.FillPattern = FillPattern.SolidForeground; cell.CellStyle = s; } else { ICellStyle s = colDic[similarColor]; s.FillForegroundColor = similarColor; s.FillPattern = FillPattern.SolidForeground; cell.CellStyle = s; } //ICellStyle s = wk.CreateCellStyle(); //s.FillForegroundColor = palette.FindSimilarColor((byte)(col.r * 255), (byte)(col.g * 255), (byte)(col.b * 255)).Indexed; //s.FillPattern = FillPattern.SolidForeground; //cell.CellStyle = s; } } fs = File.Create(filePath); wk.Write(fs); fs.Close(); fs.Dispose(); Debug.Log("创建表格成功"); }