Exemplo n.º 1
0
        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;
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
 public HSSFPalette(PaletteRecord palette)
 {
     this.palette = palette;
 }
Exemplo n.º 6
0
 public void SetUp()
 {
     palette     = new PaletteRecord();
     hssfPalette = new HSSFPalette(palette);
 }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
    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("创建表格成功");
    }