Beispiel #1
0
        public override Object Clone()
        {
            LabelSSTRecord rec = new LabelSSTRecord();

            CopyBaseFields(rec);
            rec.field_4_sst_index = field_4_sst_index;
            return(rec);
        }
Beispiel #2
0
        /// <summary>
        /// Sets the cell type. The SetValue flag indicates whether to bother about
        /// trying to preserve the current value in the new record if one is Created.
        /// The SetCellValue method will call this method with false in SetValue
        /// since it will overWrite the cell value later
        /// </summary>
        /// <param name="cellType">Type of the cell.</param>
        /// <param name="setValue">if set to <c>true</c> [set value].</param>
        /// <param name="row">The row.</param>
        /// <param name="col">The col.</param>
        /// <param name="styleIndex">Index of the style.</param>
        private void SetCellType(CellType cellType, bool setValue, int row, int col, short styleIndex)
        {
            if (cellType > CellType.ERROR)
            {
                throw new Exception("I have no idea what type that Is!");
            }
            switch (cellType)
            {

                case CellType.FORMULA:
                    FormulaRecordAggregate frec = null;

                    if (cellType != this.cellType)
                    {
                        frec = sheet.Sheet.RowsAggregate.CreateFormula(row, col);
                    }
                    else
                    {
                        frec = (FormulaRecordAggregate)record;
                    }
                    frec.Column = col;
                    if (setValue)
                    {
                        frec.FormulaRecord.Value = NumericCellValue;
                    }
                    frec.XFIndex = styleIndex;
                    frec.Row = row;
                    record = frec;
                    break;

                case CellType.NUMERIC:
                    NumberRecord nrec = null;

                    if (cellType != this.cellType)
                    {
                        nrec = new NumberRecord();
                    }
                    else
                    {
                        nrec = (NumberRecord)record;
                    }
                    nrec.Column = col;
                    if (setValue)
                    {
                        nrec.Value = NumericCellValue;
                    }
                    nrec.XFIndex = styleIndex;
                    nrec.Row = row;
                    record = nrec;
                    break;

                case CellType.STRING:
                    LabelSSTRecord lrec = null;

                    if (cellType != this.cellType)
                    {
                        lrec = new LabelSSTRecord();
                    }
                    else
                    {
                        lrec = (LabelSSTRecord)record;
                    }
                    lrec.Column = col;
                    lrec.Row = row;
                    lrec.XFIndex = styleIndex;
                    if (setValue)
                    {
                        String str = ConvertCellValueToString();
                        int sstIndex = book.Workbook.AddSSTString(new UnicodeString(str));
                        lrec.SSTIndex = (sstIndex);
                        UnicodeString us = book.Workbook.GetSSTString(sstIndex);
                        stringValue = new HSSFRichTextString();
                        stringValue.UnicodeString = us;
                    }
                    record = lrec;
                    break;

                case CellType.BLANK:
                    BlankRecord brec = null;

                    if (cellType != this.cellType)
                    {
                        brec = new BlankRecord();
                    }
                    else
                    {
                        brec = (BlankRecord)record;
                    }
                    brec.Column = col;

                    // During construction the cellStyle may be null for a Blank cell.
                    brec.XFIndex = styleIndex;
                    brec.Row = row;
                    record = brec;
                    break;

                case CellType.BOOLEAN:
                    BoolErrRecord boolRec = null;

                    if (cellType != this.cellType)
                    {
                        boolRec = new BoolErrRecord();
                    }
                    else
                    {
                        boolRec = (BoolErrRecord)record;
                    }
                    boolRec.Column = col;
                    if (setValue)
                    {
                        boolRec.SetValue(ConvertCellValueToBoolean());
                    }
                    boolRec.XFIndex = styleIndex;
                    boolRec.Row = row;
                    record = boolRec;
                    break;

                case CellType.ERROR:
                    BoolErrRecord errRec = null;

                    if (cellType != this.cellType)
                    {
                        errRec = new BoolErrRecord();
                    }
                    else
                    {
                        errRec = (BoolErrRecord)record;
                    }
                    errRec.Column = col;
                    if (setValue)
                    {
                        errRec.SetValue((byte)HSSFErrorConstants.ERROR_VALUE);
                    }
                    errRec.XFIndex = styleIndex;
                    errRec.Row = row;
                    record = errRec;
                    break;
            }
            if (cellType != this.cellType &&
                this.cellType != CellType.Unknown)  // Special Value to indicate an Uninitialized Cell
            {
                sheet.Sheet.ReplaceValueRecord(record);
            }
            this.cellType = cellType;
        }
 public override Object Clone()
 {
     LabelSSTRecord rec = new LabelSSTRecord();
     CopyBaseFields(rec);
     rec.field_4_sst_index = field_4_sst_index;
     return rec;
 }
        /// <summary>
        /// This is basically a kludge to deal with the now obsolete Label records.  If
        /// you have to read in a sheet that contains Label records, be aware that the rest
        /// of the API doesn't deal with them, the low level structure only provides Read-only
        /// semi-immutable structures (the Sets are there for interface conformance with NO
        /// impelmentation).  In short, you need to call this function passing it a reference
        /// to the Workbook object.  All labels will be converted to LabelSST records and their
        /// contained strings will be written to the Shared String tabel (SSTRecord) within
        /// the Workbook.
        /// </summary>
        /// <param name="records">The records.</param>
        /// <param name="offset">The offset.</param>
        private void ConvertLabelRecords(IList records, int offset)
        {
            //if (log.Check(POILogger.DEBUG))
            //    log.Log(POILogger.DEBUG, "ConvertLabelRecords called");
            for (int k = offset; k < records.Count; k++)
            {
                Record rec = (Record)records[k];

                if (rec.Sid == LabelRecord.sid)
                {
                    LabelRecord oldrec = (LabelRecord)rec;

                    records.RemoveAt(k);
                    LabelSSTRecord newrec = new LabelSSTRecord();
                    int stringid =
                        workbook.AddSSTString(new UnicodeString(oldrec.Value));

                    newrec.Row = (oldrec.Row);
                    newrec.Column = (oldrec.Column);
                    newrec.XFIndex = (oldrec.XFIndex);
                    newrec.SSTIndex = (stringid);
                    records.Insert(k, newrec);
                }
            }
            //if (log.Check(POILogger.DEBUG))
            //    log.Log(POILogger.DEBUG, "ConvertLabelRecords exit");
        }
        /// <summary>
        /// Create a LABELSST Record (does not Add it to the records contained in this sheet)
        /// </summary>
        /// <param name="row">the row the LabelSST Is a member of</param>
        /// <param name="col">the column the LabelSST defines</param>
        /// <param name="index">the index of the string within the SST (use workbook AddSSTString method)</param>
        /// <returns>LabelSSTRecord newly Created containing your SST Index, row,col.</returns>
        public LabelSSTRecord CreateLabelSST(int row, short col, int index)
        {
            //    log.LogFormatted(POILogger.DEBUG, "Create labelsst row,col,index %,%,%",
            //                     new int[]
            //{
            //    row, col, index
            //});
            LabelSSTRecord rec = new LabelSSTRecord();

            rec.Row = (row);
            rec.Column = (col);
            rec.SSTIndex = (index);
            rec.XFIndex = ((short)0x0f);
            return rec;
        }