/// <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); }
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); }
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"); }
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); }
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); }
/// <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); }
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; }
/// <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); }
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); }
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; }
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; } }
/// <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(); }
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; }
/// <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); }
/// <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"); }
/// <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; }
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); }
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; } }
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); }
public void RemoveRow(RowRecord row) { size -= row.RecordSize; // int integer = new int(row.RowNumber); _rowRecords.Remove(row.RowNumber); }