Exemplo n.º 1
0
        /// <summary>
        /// Creates new HSSFRow from scratch. Only HSSFSheet should do this.
        /// </summary>
        /// <param name="book">low-level Workbook object containing the sheet that Contains this row</param>
        /// <param name="sheet">low-level Sheet object that Contains this Row</param>
        /// <param name="rowNum">the row number of this row (0 based)</param>
        ///<see cref="NPOI.HSSF.UserModel.HSSFSheet.CreateRow(int)"/>
        public HSSFRow(HSSFWorkbook book, HSSFSheet sheet, int rowNum)
        {
            this.rowNum = rowNum;
            this.book = book;
            this.sheet = sheet;
            row = new RowRecord(rowNum);

            RowNum=(rowNum);
        }
Exemplo n.º 2
0
        public override Object Clone()
        {
            RowRecord rec = new RowRecord(field_1_row_number);

            rec.field_2_first_col    = field_2_first_col;
            rec.field_3_last_col     = field_3_last_col;
            rec.field_4_height       = field_4_height;
            rec.field_5_optimize     = field_5_optimize;
            rec.field_6_reserved     = field_6_reserved;
            rec.field_7_option_flags = field_7_option_flags;
            rec.field_8_xf_index     = field_8_xf_index;
            return(rec);
        }
Exemplo n.º 3
0
        public void TestRowGet()
        {
            RowRecordsAggregate rra = new RowRecordsAggregate();
            RowRecord rr = new RowRecord(4);
            rra.InsertRow(rr);
            rra.InsertRow(new RowRecord(1));

            RowRecord rr1 = rra.GetRow(4);

            Assert.IsNotNull(rr1);
            Assert.AreEqual(4, rr1.RowNumber, "Row number is1 1");
            Assert.IsTrue(rr1 == rr, "Row record retrieved is1 identical");
        }
Exemplo n.º 4
0
        public override bool Equals(Object obj)
        {
            if (!(obj is RowRecord))
            {
                return(false);
            }
            RowRecord loc = (RowRecord)obj;

            if (this.RowNumber == loc.RowNumber)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 5
0
        public int CompareTo(Object obj)
        {
            RowRecord loc = (RowRecord)obj;

            if (this.RowNumber == loc.RowNumber)
            {
                return(0);
            }
            if (this.RowNumber < loc.RowNumber)
            {
                return(-1);
            }
            if (this.RowNumber > loc.RowNumber)
            {
                return(1);
            }
            return(-1);
        }
Exemplo n.º 6
0
        /// <summary>
        /// used internally to Set the properties given a Sheet object
        /// </summary>
        /// <param name="sheet">The _sheet.</param>
        private void SetPropertiesFromSheet(InternalSheet sheet)
        {

            RowRecord row = sheet.NextRow;
            bool rowRecordsAlreadyPresent = row != null;

            while (row != null)
            {
                CreateRowFromRecord(row);

                row = sheet.NextRow;
            }

            CellValueRecordInterface[] cvals = sheet.GetValueRecords();
            long timestart = DateTime.Now.Millisecond;

            //if (log.Check(POILogger.DEBUG))
            //    log.Log(DEBUG, "Time at start of cell creating in HSSF _sheet = ",
            //        timestart);
            HSSFRow lastrow = null;

            // Add every cell to its row
            for (int i = 0; i < cvals.Length; i++)
            {
                CellValueRecordInterface cval = cvals[i];
                long cellstart = DateTime.Now.Millisecond;
                HSSFRow hrow = lastrow;

                if ((lastrow == null) || (lastrow.RowNum != cval.Row))
                {
                    hrow = (HSSFRow)GetRow(cval.Row);
                    if (hrow == null)
                    {
                        // Some tools (like Perl module SpReadsheet::WriteExcel - bug 41187) skip the RowRecords 
                        // Excel, OpenOffice.org and GoogleDocs are all OK with this, so POI should be too.
                        if (rowRecordsAlreadyPresent)
                        {
                            // if at least one row record is present, all should be present.
                            throw new Exception("Unexpected missing row when some rows already present, the file is wrong");
                        }
                        // Create the row record on the fly now.
                        RowRecord rowRec = new RowRecord(cval.Row);
                        _sheet.AddRow(rowRec);
                        hrow = CreateRowFromRecord(rowRec);
                    }
                }
                if (hrow != null)
                {
                    lastrow = hrow;
                    //if (log.Check(POILogger.DEBUG))
                    //{
                    //    if (cval is Record)
                    //    {
                    //        log.log(DEBUG, "record id = " + Integer.toHexString(((Record)cval).getSid()));
                    //    }
                    //    else
                    //    {
                    //        log.log(DEBUG, "record = " + cval);
                    //    }
                    //}

                    hrow.CreateCellFromRecord(cval);

                    //if (log.Check(POILogger.DEBUG))
                    //    log.Log(DEBUG, "record took ",DateTime.Now.Millisecond - cellstart);
                }
                else
                {
                    cval = null;
                }
            }
            //if (log.Check(POILogger.DEBUG))
            //    log.Log(DEBUG, "total _sheet cell creation took ",
            //        DateTime.Now.Millisecond - timestart);
        }
Exemplo n.º 7
0
 public int WriteHidden(RowRecord rowRecord, int row, bool hidden)
 {
     int level = rowRecord.OutlineLevel;
     while (rowRecord != null && this.GetRow(row).OutlineLevel >= level)
     {
         rowRecord.ZeroHeight = (hidden);
         row++;
         rowRecord = this.GetRow(row);
     }
     return row - 1;
 }
Exemplo n.º 8
0
        /// <summary>
        /// Creates an HSSFRow from a low level RowRecord object.  Only HSSFSheet should do
        /// this.  HSSFSheet uses this when an existing file Is Read in.
        /// </summary>
        /// <param name="book">low-level Workbook object containing the sheet that Contains this row</param>
        /// <param name="sheet"> low-level Sheet object that Contains this Row</param>
        /// <param name="record">the low level api object this row should represent</param>
        ///<see cref="NPOI.HSSF.UserModel.HSSFSheet.CreateRow(int)"/>
        public HSSFRow(HSSFWorkbook book, HSSFSheet sheet, RowRecord record)
        {
            this.book = book;
            this.sheet = sheet;
            row = record;

            RowNum=(record.RowNumber);
        }
Exemplo n.º 9
0
        public void TestSheetDimensions()
        {
            InternalSheet sheet = InternalSheet.CreateSheet();
            DimensionsRecord dimensions = (DimensionsRecord)sheet.FindFirstRecordBySid(DimensionsRecord.sid);
            Assert.AreEqual(0, dimensions.FirstCol);
            Assert.AreEqual(0, dimensions.FirstRow);
            Assert.AreEqual(1, dimensions.LastCol);  // plus pne
            Assert.AreEqual(1, dimensions.LastRow);  // plus pne

            RowRecord rr = new RowRecord(0);
            sheet.AddRow(rr);

            Assert.AreEqual(0, dimensions.FirstCol);
            Assert.AreEqual(0, dimensions.FirstRow);
            Assert.AreEqual(1, dimensions.LastCol);
            Assert.AreEqual(1, dimensions.LastRow);

            CellValueRecordInterface cvr;

            cvr = new BlankRecord();
            cvr.Column = ((short)0);
            cvr.Row = (0);
            sheet.AddValueRecord(0, cvr);

            Assert.AreEqual(0, dimensions.FirstCol);
            Assert.AreEqual(0, dimensions.FirstRow);
            Assert.AreEqual(1, dimensions.LastCol);
            Assert.AreEqual(1, dimensions.LastRow);

            cvr = new BlankRecord();
            cvr.Column = ((short)1);
            cvr.Row = (0);
            sheet.AddValueRecord(0, cvr);

            Assert.AreEqual(0, dimensions.FirstCol);
            Assert.AreEqual(0, dimensions.FirstRow);
            Assert.AreEqual(2, dimensions.LastCol);   //YK:  failed until Bugzilla 53414 was fixed
            Assert.AreEqual(1, dimensions.LastRow);
        }
Exemplo n.º 10
0
 public void RemoveRow(RowRecord row)
 {
     int rowIndex = row.RowNumber;
     _valuesAgg.RemoveAllCellsValuesForRow(rowIndex);
     int key = rowIndex;
     RowRecord rr = (RowRecord)_rowRecords[key];
     _rowRecords.Remove(key);
     if (rr == null)
     {
         throw new Exception("Invalid row index (" + key + ")");
     }
     if (row != rr)
     {
         _rowRecords[key] = rr;
         throw new Exception("Attempt to remove row that does not belong to this sheet");
     }
     // Clear the cached values
     _rowRecordValues = null;
 }
Exemplo n.º 11
0
        public void InsertRow(RowRecord row)
        {
            _rowRecords[row.RowNumber] = row;
            // Clear the cached values
            _rowRecordValues = null; 


            if (row.RowNumber < firstrow|| firstrow == -1)
            {
                firstrow = row.RowNumber;
            }
            if (row.RowNumber > lastrow|| lastrow == -1)
            {
                lastrow = row.RowNumber;
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Creates an HSSFRow from a low level RowRecord object.  Only HSSFSheet should do
        /// this.  HSSFSheet uses this when an existing file is Read in.
        /// </summary>
        /// <param name="book">low-level Workbook object containing the sheet that Contains this row</param>
        /// <param name="sheet"> low-level Sheet object that Contains this Row</param>
        /// <param name="record">the low level api object this row should represent</param>
        ///<see cref="NPOI.HSSF.UserModel.HSSFSheet.CreateRow(int)"/>
        public HSSFRow(HSSFWorkbook book, HSSFSheet sheet, RowRecord record)
        {
            this.book = book;
            this.sheet = sheet;
            row = record;

            RowNum=(record.RowNumber);
             // Don't trust colIx boundaries as read by other apps
            // set the RowRecord empty for the moment
            record.SetEmpty();
            

        }
Exemplo n.º 13
0
 public override Object Clone()
 {
     RowRecord rec = new RowRecord(field_1_row_number);
     rec.field_2_first_col = field_2_first_col;
     rec.field_3_last_col = field_3_last_col;
     rec.field_4_height = field_4_height;
     rec.field_5_optimize = field_5_optimize;
     rec.field_6_reserved = field_6_reserved;
     rec.field_7_option_flags = field_7_option_flags;
     rec.field_8_xf_index = field_8_xf_index;
     return rec;
 }
Exemplo n.º 14
0
 /// <summary>
 /// Removes a row record
 /// This method is not loc sensitive, it Resets loc to = dimsloc so no worries.
 /// </summary>
 /// <param name="row">the row record to Remove</param>
 public void RemoveRow(RowRecord row)
 {
     _rowsAggregate.RemoveRow(row);
 }
Exemplo n.º 15
0
        /// <summary>
        /// Adds a row record to the sheet
        /// This method is "loc" sensitive.  Meaning you need to Set LOC to where you
        /// want it to start searching.  If you don't know do this: SetLoc(GetDimsLoc).
        /// When Adding several rows you can just start at the last one by leaving loc
        /// at what this Sets it to.
        /// </summary>
        /// <param name="row">the row record to be Added</param>
        public void AddRow(RowRecord row)
        {
            //if (log.Check(POILogger.DEBUG))
            //    log.Log(POILogger.DEBUG, "AddRow ");
            DimensionsRecord d = _dimensions;

            if (row.RowNumber >= d.LastRow)
            {
                d.LastRow = (row.RowNumber + 1);
            }
            if (row.RowNumber < d.FirstRow)
            {
                d.FirstRow = (row.RowNumber);
            }
            //IndexRecord index = null;
            //If the row exists Remove it, so that any cells attached to the row are Removed
            RowRecord existingRow = _rowsAggregate.GetRow(row.RowNumber);
            if (existingRow != null)
            {
                _rowsAggregate.RemoveRow(existingRow);
            }

            _rowsAggregate.InsertRow(row);

            //if (log.Check(POILogger.DEBUG))
            //    log.Log(POILogger.DEBUG, "exit AddRow");
        }
Exemplo n.º 16
0
        /// <summary>
        /// Used internally to Create a high level Row object from a low level row object.
        /// USed when Reading an existing file
        /// </summary>
        /// <param name="row">low level record to represent as a high level Row and Add to _sheet.</param>
        /// <returns>HSSFRow high level representation</returns>
        private HSSFRow CreateRowFromRecord(RowRecord row)
        {
            HSSFRow hrow = new HSSFRow(_workbook, this, row);

            AddRow(hrow, false);
            return hrow;
        }
Exemplo n.º 17
0
        public void TestRowValueAggregatesOrder_bug45145()
        {

            InternalSheet sheet = InternalSheet.CreateSheet();

            RowRecord rr = new RowRecord(5);
            sheet.AddRow(rr);

            CellValueRecordInterface cvr = new BlankRecord();
            cvr.Column = 0;
            cvr.Row = (5);
            sheet.AddValueRecord(5, cvr);


            int dbCellRecordPos = GetDbCellRecordPos(sheet);
            if (dbCellRecordPos == 252)
            {
                // The overt symptom of the bug
                // DBCELL record pos is1 calculated wrong if VRA comes before RRA
                throw new AssertionException("Identified  bug 45145");
            }

            Assert.AreEqual(242, dbCellRecordPos);
        }
Exemplo n.º 18
0
        public void InsertRow(RowRecord row)
        {
            _rowRecords[row.RowNumber] = row;

            if ((row.RowNumber < firstrow) || (firstrow == -1))
            {
                firstrow = row.RowNumber;
            }
            if ((row.RowNumber > lastrow) || (lastrow == -1))
            {
                lastrow = row.RowNumber;
            }
        }
Exemplo n.º 19
0
        public void TestLastAndFirstColumns_bug46654()
        {
            int ROW_IX = 10;
            int COL_IX = 3;
            HSSFWorkbook workbook = new HSSFWorkbook();
            HSSFSheet sheet = (HSSFSheet)workbook.CreateSheet("Sheet1");
            RowRecord rowRec = new RowRecord(ROW_IX);
            rowRec.FirstCol=((short)2);
            rowRec.LastCol=((short)5);

            BlankRecord br = new BlankRecord();
            br.Row=(ROW_IX);
            br.Column=((short)COL_IX);

            sheet.Sheet.AddValueRecord(ROW_IX, br);
            HSSFRow row = new HSSFRow(workbook,sheet, rowRec);
            ICell cell = row.CreateCellFromRecord(br);

            if (row.FirstCellNum == 2 && row.LastCellNum == 5)
            {
                throw new AssertionException("Identified bug 46654a");
            }
            Assert.AreEqual(COL_IX, row.FirstCellNum);
            Assert.AreEqual(COL_IX + 1, row.LastCellNum);
            row.RemoveCell(cell);
            Assert.AreEqual(-1, row.FirstCellNum);
            Assert.AreEqual(-1, row.LastCellNum);
        }
Exemplo n.º 20
0
        public void RemoveRow(RowRecord row)
        {
            size -= row.RecordSize;

            // int integer = new int(row.RowNumber);
            _rowRecords.Remove(row.RowNumber);
        }