rubyXL 3.3.14 → 3.3.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/rubyXL/convenience_methods.rb +160 -4
- data/lib/rubyXL/objects/ooxml_object.rb +2 -1
- data/lib/rubyXL/objects/root.rb +1 -1
- data/lib/rubyXL/objects/storage.rb +2 -1
- data/lib/rubyXL/objects/worksheet.rb +5 -5
- data/lib/rubyXL/worksheet.rb +1 -160
- data/rdoc/README_rdoc.html +1 -1
- data/rdoc/RubyXL.html +1 -1
- data/rdoc/RubyXL/AExtension.html +1 -1
- data/rdoc/RubyXL/AExtensionStorageArea.html +1 -1
- data/rdoc/RubyXL/AdjustHandleList.html +1 -1
- data/rdoc/RubyXL/Alignment.html +1 -1
- data/rdoc/RubyXL/AlternateContent.html +1 -1
- data/rdoc/RubyXL/Authors.html +1 -1
- data/rdoc/RubyXL/AutoFilter.html +1 -1
- data/rdoc/RubyXL/AutoFilterColumn.html +1 -1
- data/rdoc/RubyXL/BinaryImageFile.html +1 -1
- data/rdoc/RubyXL/BodyProperties.html +1 -1
- data/rdoc/RubyXL/BooleanNode.html +1 -1
- data/rdoc/RubyXL/BooleanValue.html +1 -1
- data/rdoc/RubyXL/Border.html +1 -1
- data/rdoc/RubyXL/BorderEdge.html +1 -1
- data/rdoc/RubyXL/Borders.html +1 -1
- data/rdoc/RubyXL/Break.html +1 -1
- data/rdoc/RubyXL/BreakList.html +1 -1
- data/rdoc/RubyXL/CT_AdjPoint2D.html +1 -1
- data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +1 -1
- data/rdoc/RubyXL/CT_AlphaModulateEffect.html +1 -1
- data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +1 -1
- data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +1 -1
- data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +1 -1
- data/rdoc/RubyXL/CT_Backdrop.html +1 -1
- data/rdoc/RubyXL/CT_Bevel.html +1 -1
- data/rdoc/RubyXL/CT_BiLevelEffect.html +1 -1
- data/rdoc/RubyXL/CT_BlendEffect.html +1 -1
- data/rdoc/RubyXL/CT_Blip.html +1 -1
- data/rdoc/RubyXL/CT_BlipFillProperties.html +1 -1
- data/rdoc/RubyXL/CT_BlurEffect.html +1 -1
- data/rdoc/RubyXL/CT_Camera.html +1 -1
- data/rdoc/RubyXL/CT_Color.html +1 -1
- data/rdoc/RubyXL/CT_ColorChangeEffect.html +1 -1
- data/rdoc/RubyXL/CT_ColorMapping.html +1 -1
- data/rdoc/RubyXL/CT_ColorScheme.html +1 -1
- data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +1 -1
- data/rdoc/RubyXL/CT_ConnectionSite.html +1 -1
- data/rdoc/RubyXL/CT_ConnectionSiteList.html +1 -1
- data/rdoc/RubyXL/CT_DashStop.html +1 -1
- data/rdoc/RubyXL/CT_DashStopList.html +1 -1
- data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +1 -1
- data/rdoc/RubyXL/CT_DuotoneEffect.html +1 -1
- data/rdoc/RubyXL/CT_EffectContainer.html +1 -1
- data/rdoc/RubyXL/CT_EffectList.html +1 -1
- data/rdoc/RubyXL/CT_EffectReference.html +1 -1
- data/rdoc/RubyXL/CT_EffectStyleItem.html +1 -1
- data/rdoc/RubyXL/CT_EffectStyleList.html +1 -1
- data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +1 -1
- data/rdoc/RubyXL/CT_FillEffect.html +1 -1
- data/rdoc/RubyXL/CT_FillOverlayEffect.html +1 -1
- data/rdoc/RubyXL/CT_FillStyleList.html +1 -1
- data/rdoc/RubyXL/CT_FlatText.html +1 -1
- data/rdoc/RubyXL/CT_FontCollection.html +1 -1
- data/rdoc/RubyXL/CT_FontReference.html +1 -1
- data/rdoc/RubyXL/CT_GeomGuideList.html +1 -1
- data/rdoc/RubyXL/CT_GlowEffect.html +1 -1
- data/rdoc/RubyXL/CT_GradientFillProperties.html +1 -1
- data/rdoc/RubyXL/CT_GradientStop.html +1 -1
- data/rdoc/RubyXL/CT_GradientStopList.html +1 -1
- data/rdoc/RubyXL/CT_HSLEffect.html +1 -1
- data/rdoc/RubyXL/CT_HslColor.html +1 -1
- data/rdoc/RubyXL/CT_Hyperlink.html +1 -1
- data/rdoc/RubyXL/CT_InnerShadowEffect.html +1 -1
- data/rdoc/RubyXL/CT_LightRig.html +1 -1
- data/rdoc/RubyXL/CT_LineEndProperties.html +1 -1
- data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +1 -1
- data/rdoc/RubyXL/CT_LineProperties.html +1 -1
- data/rdoc/RubyXL/CT_LineStyleList.html +1 -1
- data/rdoc/RubyXL/CT_LinearShadeProperties.html +1 -1
- data/rdoc/RubyXL/CT_LuminanceEffect.html +1 -1
- data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +1 -1
- data/rdoc/RubyXL/CT_OuterShadowEffect.html +1 -1
- data/rdoc/RubyXL/CT_Path2D.html +1 -1
- data/rdoc/RubyXL/CT_Path2DArcTo.html +1 -1
- data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +1 -1
- data/rdoc/RubyXL/CT_Path2DList.html +1 -1
- data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +1 -1
- data/rdoc/RubyXL/CT_Path2DTo.html +1 -1
- data/rdoc/RubyXL/CT_PathShadeProperties.html +1 -1
- data/rdoc/RubyXL/CT_PatternFillProperties.html +1 -1
- data/rdoc/RubyXL/CT_Point3D.html +1 -1
- data/rdoc/RubyXL/CT_PolarAdjustHandle.html +1 -1
- data/rdoc/RubyXL/CT_PresetColor.html +1 -1
- data/rdoc/RubyXL/CT_PresetLineDashProperties.html +1 -1
- data/rdoc/RubyXL/CT_PresetShadowEffect.html +1 -1
- data/rdoc/RubyXL/CT_PresetTextShape.html +1 -1
- data/rdoc/RubyXL/CT_ReflectionEffect.html +1 -1
- data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +1 -1
- data/rdoc/RubyXL/CT_RelativeRect.html +1 -1
- data/rdoc/RubyXL/CT_SRgbColor.html +1 -1
- data/rdoc/RubyXL/CT_ScRgbColor.html +1 -1
- data/rdoc/RubyXL/CT_Scene3D.html +1 -1
- data/rdoc/RubyXL/CT_SchemeColor.html +1 -1
- data/rdoc/RubyXL/CT_Shape3D.html +1 -1
- data/rdoc/RubyXL/CT_ShapeStyle.html +1 -1
- data/rdoc/RubyXL/CT_SoftEdgesEffect.html +1 -1
- data/rdoc/RubyXL/CT_SphereCoords.html +1 -1
- data/rdoc/RubyXL/CT_StretchInfoProperties.html +1 -1
- data/rdoc/RubyXL/CT_StyleMatrix.html +1 -1
- data/rdoc/RubyXL/CT_StyleMatrixReference.html +1 -1
- data/rdoc/RubyXL/CT_SupplementalFont.html +1 -1
- data/rdoc/RubyXL/CT_SystemColor.html +1 -1
- data/rdoc/RubyXL/CT_TextAutonumberBullet.html +1 -1
- data/rdoc/RubyXL/CT_TextBlipBullet.html +1 -1
- data/rdoc/RubyXL/CT_TextCharBullet.html +1 -1
- data/rdoc/RubyXL/CT_TextCharacterProperties.html +1 -1
- data/rdoc/RubyXL/CT_TextFont.html +1 -1
- data/rdoc/RubyXL/CT_TextListStyle.html +1 -1
- data/rdoc/RubyXL/CT_TextNormalAutofit.html +1 -1
- data/rdoc/RubyXL/CT_TextParagraphProperties.html +1 -1
- data/rdoc/RubyXL/CT_TextSpacing.html +1 -1
- data/rdoc/RubyXL/CT_TextTabStop.html +1 -1
- data/rdoc/RubyXL/CT_TextTabStopList.html +1 -1
- data/rdoc/RubyXL/CT_TileInfoProperties.html +1 -1
- data/rdoc/RubyXL/CT_TintEffect.html +1 -1
- data/rdoc/RubyXL/CT_Transform2D.html +1 -1
- data/rdoc/RubyXL/CT_TransformEffect.html +1 -1
- data/rdoc/RubyXL/CT_Vector3D.html +1 -1
- data/rdoc/RubyXL/CT_XYAdjustHandle.html +1 -1
- data/rdoc/RubyXL/CalculationChain.html +1 -1
- data/rdoc/RubyXL/CalculationChainCell.html +1 -1
- data/rdoc/RubyXL/CalculationProperties.html +1 -1
- data/rdoc/RubyXL/Cell.html +1 -1
- data/rdoc/RubyXL/CellConvenienceMethods.html +28 -28
- data/rdoc/RubyXL/CellExt.html +1 -1
- data/rdoc/RubyXL/CellSmartTag.html +1 -1
- data/rdoc/RubyXL/CellSmartTagProperty.html +1 -1
- data/rdoc/RubyXL/CellSmartTags.html +1 -1
- data/rdoc/RubyXL/CellStyle.html +1 -1
- data/rdoc/RubyXL/CellStyleXFs.html +1 -1
- data/rdoc/RubyXL/CellStyles.html +1 -1
- data/rdoc/RubyXL/CellValue.html +1 -1
- data/rdoc/RubyXL/CellWatch.html +1 -1
- data/rdoc/RubyXL/CellWatches.html +1 -1
- data/rdoc/RubyXL/CellXFs.html +1 -1
- data/rdoc/RubyXL/ChartColorsFile.html +1 -1
- data/rdoc/RubyXL/ChartFile.html +2 -2
- data/rdoc/RubyXL/ChartStyleFile.html +1 -1
- data/rdoc/RubyXL/ChartUserShapesFile.html +1 -1
- data/rdoc/RubyXL/Chartsheet.html +1 -1
- data/rdoc/RubyXL/ChartsheetPageSetup.html +1 -1
- data/rdoc/RubyXL/ChartsheetProperties.html +1 -1
- data/rdoc/RubyXL/ChartsheetProtection.html +1 -1
- data/rdoc/RubyXL/ChartsheetView.html +1 -1
- data/rdoc/RubyXL/ChartsheetViews.html +1 -1
- data/rdoc/RubyXL/Color.html +1 -1
- data/rdoc/RubyXL/ColorFilter.html +1 -1
- data/rdoc/RubyXL/ColorScale.html +1 -1
- data/rdoc/RubyXL/ColorSet.html +1 -1
- data/rdoc/RubyXL/Colors.html +1 -1
- data/rdoc/RubyXL/ColumnRange.html +1 -1
- data/rdoc/RubyXL/ColumnRanges.html +1 -1
- data/rdoc/RubyXL/Comment.html +1 -1
- data/rdoc/RubyXL/CommentList.html +1 -1
- data/rdoc/RubyXL/CommentsFile.html +1 -1
- data/rdoc/RubyXL/ConditionalFormatValue.html +1 -1
- data/rdoc/RubyXL/ConditionalFormatting.html +1 -1
- data/rdoc/RubyXL/ConditionalFormattingRule.html +1 -1
- data/rdoc/RubyXL/ContentTypeDefault.html +1 -1
- data/rdoc/RubyXL/ContentTypeOverride.html +1 -1
- data/rdoc/RubyXL/ContentTypes.html +1 -1
- data/rdoc/RubyXL/ControlPropertiesFile.html +1 -1
- data/rdoc/RubyXL/CorePropertiesFile.html +1 -1
- data/rdoc/RubyXL/CustomColor.html +1 -1
- data/rdoc/RubyXL/CustomColorList.html +1 -1
- data/rdoc/RubyXL/CustomFilter.html +1 -1
- data/rdoc/RubyXL/CustomFilters.html +1 -1
- data/rdoc/RubyXL/CustomGeometry.html +1 -1
- data/rdoc/RubyXL/CustomProperties.html +1 -1
- data/rdoc/RubyXL/CustomPropertiesFile.html +1 -1
- data/rdoc/RubyXL/CustomProperty.html +1 -1
- data/rdoc/RubyXL/CustomSheetView.html +1 -1
- data/rdoc/RubyXL/CustomSheetViews.html +1 -1
- data/rdoc/RubyXL/CustomWorkbookView.html +1 -1
- data/rdoc/RubyXL/CustomWorkbookViews.html +1 -1
- data/rdoc/RubyXL/CustomXMLFile.html +1 -1
- data/rdoc/RubyXL/DXF.html +1 -1
- data/rdoc/RubyXL/DXFs.html +1 -1
- data/rdoc/RubyXL/DataBar.html +1 -1
- data/rdoc/RubyXL/DataConsolidate.html +1 -1
- data/rdoc/RubyXL/DataConsolidationReference.html +1 -1
- data/rdoc/RubyXL/DataConsolidationReferences.html +1 -1
- data/rdoc/RubyXL/DataType.html +1 -1
- data/rdoc/RubyXL/DataValidation.html +1 -1
- data/rdoc/RubyXL/DataValidations.html +1 -1
- data/rdoc/RubyXL/DateGroupItem.html +1 -1
- data/rdoc/RubyXL/DefinedName.html +1 -1
- data/rdoc/RubyXL/DefinedNameExt.html +1 -1
- data/rdoc/RubyXL/DefinedNames.html +1 -1
- data/rdoc/RubyXL/DefinedNamesExt.html +1 -1
- data/rdoc/RubyXL/DocumentPropertiesFile.html +1 -1
- data/rdoc/RubyXL/DrawingFile.html +2 -2
- data/rdoc/RubyXL/DynamicFilter.html +1 -1
- data/rdoc/RubyXL/EmbeddedControl.html +1 -1
- data/rdoc/RubyXL/EmbeddedControls.html +1 -1
- data/rdoc/RubyXL/Extension.html +1 -1
- data/rdoc/RubyXL/ExtensionStorageArea.html +1 -1
- data/rdoc/RubyXL/Extents.html +1 -1
- data/rdoc/RubyXL/ExternalBook.html +1 -1
- data/rdoc/RubyXL/ExternalLinksFile.html +1 -1
- data/rdoc/RubyXL/ExternalReference.html +1 -1
- data/rdoc/RubyXL/ExternalReferences.html +1 -1
- data/rdoc/RubyXL/ExtraColorSchemeList.html +1 -1
- data/rdoc/RubyXL/FieldItem.html +1 -1
- data/rdoc/RubyXL/FileRecoveryProperties.html +1 -1
- data/rdoc/RubyXL/FileSharing.html +1 -1
- data/rdoc/RubyXL/FileVersion.html +1 -1
- data/rdoc/RubyXL/Fill.html +1 -1
- data/rdoc/RubyXL/Fills.html +1 -1
- data/rdoc/RubyXL/FilterContainer.html +1 -1
- data/rdoc/RubyXL/FloatNode.html +1 -1
- data/rdoc/RubyXL/FloatValue.html +1 -1
- data/rdoc/RubyXL/Font.html +1 -1
- data/rdoc/RubyXL/FontScheme.html +1 -1
- data/rdoc/RubyXL/Fonts.html +1 -1
- data/rdoc/RubyXL/Formula.html +1 -1
- data/rdoc/RubyXL/FunctionGroup.html +1 -1
- data/rdoc/RubyXL/FunctionGroups.html +1 -1
- data/rdoc/RubyXL/GenericStorageObject.html +3 -2
- data/rdoc/RubyXL/GradientFill.html +1 -1
- data/rdoc/RubyXL/HeaderFooterSettings.html +1 -1
- data/rdoc/RubyXL/Hyperlink.html +1 -1
- data/rdoc/RubyXL/HyperlinkRelFile.html +1 -1
- data/rdoc/RubyXL/Hyperlinks.html +1 -1
- data/rdoc/RubyXL/IconFilter.html +1 -1
- data/rdoc/RubyXL/IconSet.html +1 -1
- data/rdoc/RubyXL/IgnoredError.html +1 -1
- data/rdoc/RubyXL/IgnoredErrors.html +1 -1
- data/rdoc/RubyXL/IndexedColors.html +1 -1
- data/rdoc/RubyXL/InputCells.html +1 -1
- data/rdoc/RubyXL/IntegerNode.html +1 -1
- data/rdoc/RubyXL/IntegerValue.html +1 -1
- data/rdoc/RubyXL/LegacyCell.html +1 -1
- data/rdoc/RubyXL/LegacyWorksheet.html +1 -266
- data/rdoc/RubyXL/MRUColors.html +1 -1
- data/rdoc/RubyXL/MacrosFile.html +1 -1
- data/rdoc/RubyXL/MergedCell.html +1 -1
- data/rdoc/RubyXL/MergedCells.html +1 -1
- data/rdoc/RubyXL/NumFmt.html +1 -1
- data/rdoc/RubyXL/NumberFormat.html +1 -1
- data/rdoc/RubyXL/NumberFormats.html +1 -1
- data/rdoc/RubyXL/OLEObject.html +1 -1
- data/rdoc/RubyXL/OLEObjectFile.html +1 -1
- data/rdoc/RubyXL/OLEObjects.html +1 -1
- data/rdoc/RubyXL/OLESize.html +1 -1
- data/rdoc/RubyXL/OOXMLContainerObject.html +1 -1
- data/rdoc/RubyXL/OOXMLObject.html +1 -1
- data/rdoc/RubyXL/OOXMLObjectClassMethods.html +1 -1
- data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +1 -1
- data/rdoc/RubyXL/OOXMLRelationshipsFile.html +1 -1
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +4 -3
- data/rdoc/RubyXL/Offset.html +1 -1
- data/rdoc/RubyXL/OutlineProperties.html +1 -1
- data/rdoc/RubyXL/PageMargins.html +1 -1
- data/rdoc/RubyXL/PageSetup.html +1 -1
- data/rdoc/RubyXL/PageSetupProperties.html +1 -1
- data/rdoc/RubyXL/Pane.html +1 -1
- data/rdoc/RubyXL/Parser.html +1 -1
- data/rdoc/RubyXL/PatternFill.html +1 -1
- data/rdoc/RubyXL/PhoneticProperties.html +1 -1
- data/rdoc/RubyXL/PhoneticRun.html +1 -1
- data/rdoc/RubyXL/PivotArea.html +1 -1
- data/rdoc/RubyXL/PivotCache.html +1 -1
- data/rdoc/RubyXL/PivotCacheDefinitionFile.html +1 -1
- data/rdoc/RubyXL/PivotCacheRecordsFile.html +1 -1
- data/rdoc/RubyXL/PivotCaches.html +1 -1
- data/rdoc/RubyXL/PivotReference.html +1 -1
- data/rdoc/RubyXL/PivotReferences.html +1 -1
- data/rdoc/RubyXL/PivotTableFile.html +1 -1
- data/rdoc/RubyXL/PivotTableSelection.html +1 -1
- data/rdoc/RubyXL/PresetGeometry.html +1 -1
- data/rdoc/RubyXL/PrintOptions.html +1 -1
- data/rdoc/RubyXL/PrinterSettingsFile.html +1 -1
- data/rdoc/RubyXL/ProtectedRange.html +1 -1
- data/rdoc/RubyXL/ProtectedRanges.html +1 -1
- data/rdoc/RubyXL/Protection.html +1 -1
- data/rdoc/RubyXL/RID.html +1 -1
- data/rdoc/RubyXL/RawOOXML.html +1 -1
- data/rdoc/RubyXL/Reference.html +1 -1
- data/rdoc/RubyXL/Relationship.html +1 -1
- data/rdoc/RubyXL/RelationshipSupport.html +1 -1
- data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +1 -1
- data/rdoc/RubyXL/RichText.html +1 -1
- data/rdoc/RubyXL/RichTextRun.html +1 -1
- data/rdoc/RubyXL/Row.html +1 -1
- data/rdoc/RubyXL/RowExt.html +1 -1
- data/rdoc/RubyXL/RunProperties.html +1 -1
- data/rdoc/RubyXL/Scenario.html +1 -1
- data/rdoc/RubyXL/Scenarios.html +1 -1
- data/rdoc/RubyXL/Selection.html +1 -1
- data/rdoc/RubyXL/ShapeGuide.html +1 -1
- data/rdoc/RubyXL/ShapeTextRectangle.html +1 -1
- data/rdoc/RubyXL/SharedStringsTable.html +1 -1
- data/rdoc/RubyXL/Sheet.html +1 -1
- data/rdoc/RubyXL/SheetCalculationProperties.html +1 -1
- data/rdoc/RubyXL/SheetData.html +1 -1
- data/rdoc/RubyXL/SheetDataExt.html +1 -1
- data/rdoc/RubyXL/SheetDataSet.html +1 -1
- data/rdoc/RubyXL/SheetName.html +1 -1
- data/rdoc/RubyXL/SheetNames.html +1 -1
- data/rdoc/RubyXL/Sheets.html +1 -1
- data/rdoc/RubyXL/SlicerCacheFile.html +1 -1
- data/rdoc/RubyXL/SlicerFile.html +1 -1
- data/rdoc/RubyXL/SmartTagProperties.html +1 -1
- data/rdoc/RubyXL/SmartTagType.html +1 -1
- data/rdoc/RubyXL/SmartTagTypes.html +1 -1
- data/rdoc/RubyXL/SmartTags.html +1 -1
- data/rdoc/RubyXL/SortCondition.html +1 -1
- data/rdoc/RubyXL/SortState.html +1 -1
- data/rdoc/RubyXL/Sqref.html +1 -1
- data/rdoc/RubyXL/Stop.html +1 -1
- data/rdoc/RubyXL/StringNode.html +1 -1
- data/rdoc/RubyXL/StringNodeW3C.html +1 -1
- data/rdoc/RubyXL/StringValue.html +1 -1
- data/rdoc/RubyXL/Stylesheet.html +1 -1
- data/rdoc/RubyXL/TableFile.html +1 -1
- data/rdoc/RubyXL/TableParts.html +1 -1
- data/rdoc/RubyXL/TableStyle.html +1 -1
- data/rdoc/RubyXL/TableStyles.html +1 -1
- data/rdoc/RubyXL/Text.html +1 -1
- data/rdoc/RubyXL/Theme.html +1 -1
- data/rdoc/RubyXL/ThemeElements.html +1 -1
- data/rdoc/RubyXL/ThumbnailFile.html +1 -1
- data/rdoc/RubyXL/Top10.html +1 -1
- data/rdoc/RubyXL/VMLDrawingFile.html +1 -1
- data/rdoc/RubyXL/Variant.html +1 -1
- data/rdoc/RubyXL/Vector.html +1 -1
- data/rdoc/RubyXL/VectorValue.html +1 -1
- data/rdoc/RubyXL/VisualProperties.html +1 -1
- data/rdoc/RubyXL/WebPublishObject.html +1 -1
- data/rdoc/RubyXL/WebPublishObjects.html +1 -1
- data/rdoc/RubyXL/WebPublishingItem.html +1 -1
- data/rdoc/RubyXL/WebPublishingItems.html +1 -1
- data/rdoc/RubyXL/WebPublishingProperties.html +1 -1
- data/rdoc/RubyXL/Workbook.html +1 -1
- data/rdoc/RubyXL/WorkbookConvenienceMethods.html +1 -1
- data/rdoc/RubyXL/WorkbookProperties.html +1 -1
- data/rdoc/RubyXL/WorkbookProtection.html +1 -1
- data/rdoc/RubyXL/WorkbookRoot.html +2 -2
- data/rdoc/RubyXL/WorkbookView.html +1 -1
- data/rdoc/RubyXL/WorkbookViews.html +1 -1
- data/rdoc/RubyXL/Worksheet.html +1 -1
- data/rdoc/RubyXL/WorksheetConvenienceMethods.html +591 -58
- data/rdoc/RubyXL/WorksheetDimensions.html +1 -1
- data/rdoc/RubyXL/WorksheetFormatProperties.html +1 -1
- data/rdoc/RubyXL/WorksheetProperties.html +1 -1
- data/rdoc/RubyXL/WorksheetProtection.html +1 -1
- data/rdoc/RubyXL/WorksheetView.html +1 -1
- data/rdoc/RubyXL/WorksheetViews.html +1 -1
- data/rdoc/RubyXL/XF.html +1 -1
- data/rdoc/created.rid +8 -8
- data/rdoc/index.html +2 -2
- data/rdoc/js/navigation.js.gz +0 -0
- data/rdoc/js/search_index.js +1 -1
- data/rdoc/js/search_index.js.gz +0 -0
- data/rdoc/js/searcher.js.gz +0 -0
- data/rdoc/table_of_contents.html +188 -153
- data/rubyXL.gemspec +2 -2
- metadata +3 -3
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.3.
|
|
1
|
+
3.3.15
|
|
@@ -183,6 +183,13 @@ module RubyXL
|
|
|
183
183
|
|
|
184
184
|
|
|
185
185
|
module WorksheetConvenienceMethods
|
|
186
|
+
NAME = 0
|
|
187
|
+
SIZE = 1
|
|
188
|
+
COLOR = 2
|
|
189
|
+
ITALICS = 3
|
|
190
|
+
BOLD = 4
|
|
191
|
+
UNDERLINE = 5
|
|
192
|
+
STRIKETHROUGH = 6
|
|
186
193
|
|
|
187
194
|
def insert_cell(row = 0, col = 0, data = nil, formula = nil, shift = nil)
|
|
188
195
|
validate_workbook
|
|
@@ -232,6 +239,109 @@ module RubyXL
|
|
|
232
239
|
return old_cell
|
|
233
240
|
end
|
|
234
241
|
|
|
242
|
+
# Inserts row at row_index, pushes down, copies style from the row above (that's what Excel 2013 does!)
|
|
243
|
+
# NOTE: use of this method will break formulas which reference cells which are being "pushed down"
|
|
244
|
+
def insert_row(row_index = 0)
|
|
245
|
+
validate_workbook
|
|
246
|
+
ensure_cell_exists(row_index)
|
|
247
|
+
|
|
248
|
+
old_row = new_cells = nil
|
|
249
|
+
|
|
250
|
+
if row_index > 0 then
|
|
251
|
+
old_row = sheet_data.rows[row_index - 1]
|
|
252
|
+
if old_row then
|
|
253
|
+
new_cells = old_row.cells.collect { |c|
|
|
254
|
+
if c.nil? then nil
|
|
255
|
+
else nc = RubyXL::Cell.new(:style_index => c.style_index)
|
|
256
|
+
nc.worksheet = self
|
|
257
|
+
nc
|
|
258
|
+
end
|
|
259
|
+
}
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
row0 = sheet_data.rows[0]
|
|
264
|
+
new_cells ||= Array.new((row0 && row0.cells.size) || 0)
|
|
265
|
+
|
|
266
|
+
sheet_data.rows.insert(row_index, nil)
|
|
267
|
+
new_row = add_row(row_index, :cells => new_cells, :style_index => old_row && old_row.style_index)
|
|
268
|
+
|
|
269
|
+
# Update row values for all rows below
|
|
270
|
+
row_index.upto(sheet_data.rows.size - 1) { |i|
|
|
271
|
+
row = sheet_data.rows[i]
|
|
272
|
+
next if row.nil?
|
|
273
|
+
row.cells.each { |c| c.row = i unless c.nil? }
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return new_row
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
def delete_row(row_index=0)
|
|
280
|
+
validate_workbook
|
|
281
|
+
validate_nonnegative(row_index)
|
|
282
|
+
|
|
283
|
+
deleted = sheet_data.rows.delete_at(row_index)
|
|
284
|
+
|
|
285
|
+
# Update row number of each cell
|
|
286
|
+
row_index.upto(sheet_data.size - 1) { |index|
|
|
287
|
+
row = sheet_data[index]
|
|
288
|
+
row && row.cells.each{ |c| c.row -= 1 unless c.nil? }
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return deleted
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
# Inserts column at +column_index+, pushes everything right, takes styles from column to left
|
|
295
|
+
# NOTE: use of this method will break formulas which reference cells which are being "pushed right"
|
|
296
|
+
def insert_column(column_index = 0)
|
|
297
|
+
validate_workbook
|
|
298
|
+
ensure_cell_exists(0, column_index)
|
|
299
|
+
|
|
300
|
+
old_range = cols.get_range(column_index)
|
|
301
|
+
|
|
302
|
+
#go through each cell in column
|
|
303
|
+
sheet_data.rows.each_with_index { |row, row_index|
|
|
304
|
+
old_cell = row[column_index]
|
|
305
|
+
c = nil
|
|
306
|
+
|
|
307
|
+
if old_cell && old_cell.style_index != 0 &&
|
|
308
|
+
old_range && old_range.style_index != old_cell.style_index then
|
|
309
|
+
|
|
310
|
+
c = RubyXL::Cell.new(:style_index => old_cell.style_index, :worksheet => self,
|
|
311
|
+
:row => row_index, :column => column_index,
|
|
312
|
+
:datatype => RubyXL::DataType::SHARED_STRING)
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
row.insert_cell_shift_right(c, column_index)
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
cols.insert_column(column_index)
|
|
319
|
+
|
|
320
|
+
# TODO: update column numbers
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
def delete_column(column_index = 0)
|
|
324
|
+
validate_workbook
|
|
325
|
+
validate_nonnegative(column_index)
|
|
326
|
+
|
|
327
|
+
#delete column
|
|
328
|
+
sheet_data.rows.each { |row| row.cells.delete_at(column_index) }
|
|
329
|
+
|
|
330
|
+
# Change column numbers for cells to the right of the deleted column
|
|
331
|
+
sheet_data.rows.each_with_index { |row, row_index|
|
|
332
|
+
row.cells.each_with_index { |c, column_index|
|
|
333
|
+
c.column = column_index if c.is_a?(Cell)
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
cols.each { |range| range.delete_column(column_index) }
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def get_row_style(row_index)
|
|
341
|
+
row = sheet_data.rows[row_index]
|
|
342
|
+
(row && row.style_index) || 0
|
|
343
|
+
end
|
|
344
|
+
|
|
235
345
|
def get_row_fill(row = 0)
|
|
236
346
|
(row = sheet_data.rows[row]) && row.get_fill_color
|
|
237
347
|
end
|
|
@@ -275,15 +385,17 @@ module RubyXL
|
|
|
275
385
|
|
|
276
386
|
def get_row_border(row, border_direction)
|
|
277
387
|
validate_workbook
|
|
278
|
-
validate_nonnegative(row)
|
|
279
388
|
|
|
280
389
|
border = @workbook.borders[get_row_xf(row).border_id]
|
|
281
390
|
border && border.get_edge_style(border_direction)
|
|
282
391
|
end
|
|
283
392
|
|
|
393
|
+
def row_font(row)
|
|
394
|
+
(row = sheet_data.rows[row]) && row.get_font
|
|
395
|
+
end
|
|
396
|
+
|
|
284
397
|
def get_row_alignment(row, is_horizontal)
|
|
285
398
|
validate_workbook
|
|
286
|
-
validate_nonnegative(row)
|
|
287
399
|
|
|
288
400
|
xf_obj = get_row_xf(row)
|
|
289
401
|
return nil if xf_obj.alignment.nil?
|
|
@@ -303,6 +415,12 @@ module RubyXL
|
|
|
303
415
|
return get_row_alignment(row, false)
|
|
304
416
|
end
|
|
305
417
|
|
|
418
|
+
def get_cols_style_index(column_index)
|
|
419
|
+
validate_nonnegative(column_index)
|
|
420
|
+
range = cols.locate_range(column_index)
|
|
421
|
+
(range && range.style_index) || 0
|
|
422
|
+
end
|
|
423
|
+
|
|
306
424
|
def get_column_font_name(col = 0)
|
|
307
425
|
font = column_font(col)
|
|
308
426
|
font && font.get_name
|
|
@@ -355,6 +473,12 @@ module RubyXL
|
|
|
355
473
|
(width - (5.0 / RubyXL::Font::MAX_DIGIT_WIDTH)).round
|
|
356
474
|
end
|
|
357
475
|
|
|
476
|
+
# Helper method to get the style index for a column
|
|
477
|
+
def get_col_style(column_index)
|
|
478
|
+
range = cols.locate_range(column_index)
|
|
479
|
+
(range && range.style_index) || 0
|
|
480
|
+
end
|
|
481
|
+
|
|
358
482
|
def get_column_fill(col=0)
|
|
359
483
|
validate_workbook
|
|
360
484
|
validate_nonnegative(col)
|
|
@@ -364,16 +488,20 @@ module RubyXL
|
|
|
364
488
|
|
|
365
489
|
def get_column_border(col, border_direction)
|
|
366
490
|
validate_workbook
|
|
367
|
-
validate_nonnegative(col)
|
|
368
491
|
|
|
369
492
|
xf = @workbook.cell_xfs[get_cols_style_index(col)]
|
|
370
493
|
border = @workbook.borders[xf.border_id]
|
|
371
494
|
border && border.get_edge_style(border_direction)
|
|
372
495
|
end
|
|
373
496
|
|
|
497
|
+
def column_font(col)
|
|
498
|
+
validate_workbook
|
|
499
|
+
|
|
500
|
+
@workbook.fonts[@workbook.cell_xfs[get_cols_style_index(col)].font_id]
|
|
501
|
+
end
|
|
502
|
+
|
|
374
503
|
def get_column_alignment(col, type)
|
|
375
504
|
validate_workbook
|
|
376
|
-
validate_nonnegative(col)
|
|
377
505
|
|
|
378
506
|
xf = @workbook.cell_xfs[get_cols_style_index(col)]
|
|
379
507
|
xf.alignment && xf.alignment.send(type)
|
|
@@ -411,6 +539,19 @@ module RubyXL
|
|
|
411
539
|
sheet_data[row_index].cells.each { |c| c.change_fill(rgb) unless c.nil? }
|
|
412
540
|
end
|
|
413
541
|
|
|
542
|
+
# Helper method to update the row styles array
|
|
543
|
+
# change_type - NAME or SIZE or COLOR etc
|
|
544
|
+
# main method to change font, called from each separate font mutator method
|
|
545
|
+
def change_row_font(row_index, change_type, arg, font)
|
|
546
|
+
validate_workbook
|
|
547
|
+
ensure_cell_exists(row_index)
|
|
548
|
+
|
|
549
|
+
xf = workbook.register_new_font(font, get_row_xf(row_index))
|
|
550
|
+
row = sheet_data[row_index]
|
|
551
|
+
row.style_index = workbook.register_new_xf(xf)
|
|
552
|
+
row.cells.each { |c| c.font_switch(change_type, arg) unless c.nil? }
|
|
553
|
+
end
|
|
554
|
+
|
|
414
555
|
def change_row_font_name(row = 0, font_name = 'Verdana')
|
|
415
556
|
ensure_cell_exists(row)
|
|
416
557
|
font = row_font(row).dup
|
|
@@ -470,6 +611,21 @@ module RubyXL
|
|
|
470
611
|
c.custom_height = true
|
|
471
612
|
end
|
|
472
613
|
|
|
614
|
+
# Helper method to update the fonts and cell styles array
|
|
615
|
+
# main method to change font, called from each separate font mutator method
|
|
616
|
+
def change_column_font(column_index, change_type, arg, font, xf)
|
|
617
|
+
validate_workbook
|
|
618
|
+
ensure_cell_exists(0, column_index)
|
|
619
|
+
|
|
620
|
+
xf = workbook.register_new_font(font, xf)
|
|
621
|
+
cols.get_range(column_index).style_index = workbook.register_new_xf(xf)
|
|
622
|
+
|
|
623
|
+
sheet_data.rows.each { |row|
|
|
624
|
+
c = row && row[column_index]
|
|
625
|
+
c.font_switch(change_type, arg) unless c.nil?
|
|
626
|
+
}
|
|
627
|
+
end
|
|
628
|
+
|
|
473
629
|
def change_column_font_name(column_index = 0, font_name = 'Verdana')
|
|
474
630
|
xf = get_col_xf(column_index)
|
|
475
631
|
font = @workbook.fonts[xf.font_id].dup
|
|
@@ -443,9 +443,10 @@ module RubyXL
|
|
|
443
443
|
# * +zipfile+ - ::Zip::File to which the resulting XNMML should be added.
|
|
444
444
|
def add_to_zip(zip_stream)
|
|
445
445
|
xml_string = write_xml
|
|
446
|
-
return if xml_string.empty?
|
|
446
|
+
return false if xml_string.empty?
|
|
447
447
|
zip_stream.put_next_entry(RubyXL::from_root(self.xlsx_path))
|
|
448
448
|
zip_stream.write(xml_string)
|
|
449
|
+
true
|
|
449
450
|
end
|
|
450
451
|
|
|
451
452
|
def file_index
|
data/lib/rubyXL/objects/root.rb
CHANGED
|
@@ -46,7 +46,7 @@ module RubyXL
|
|
|
46
46
|
|
|
47
47
|
self.rels_hash.keys.sort_by{ |c| c::SAVE_ORDER }.each { |klass|
|
|
48
48
|
puts "<-- DEBUG: saving related #{klass} files" if @@debug
|
|
49
|
-
self.rels_hash[klass].
|
|
49
|
+
self.rels_hash[klass].select! { |obj|
|
|
50
50
|
puts "<-- DEBUG: > #{obj.xlsx_path}" if @@debug
|
|
51
51
|
obj.add_to_zip(zipstream)
|
|
52
52
|
}
|
|
@@ -189,11 +189,11 @@ module RubyXL
|
|
|
189
189
|
|
|
190
190
|
# http://www.schemacentral.com/sc/ooxml/e-ssml_iconSet-1.html
|
|
191
191
|
class IconSet < OOXMLObject
|
|
192
|
-
define_attribute(:
|
|
193
|
-
define_attribute(:showValue, :bool,
|
|
194
|
-
define_attribute(:percent, :bool,
|
|
195
|
-
define_attribute(:reverse, :bool,
|
|
196
|
-
define_child_node(RubyXL::ConditionalFormatValue, :collection =>
|
|
192
|
+
define_attribute(:iconSet, RubyXL::ST_IconSetType, :default => '3TrafficLights1')
|
|
193
|
+
define_attribute(:showValue, :bool, :default => true)
|
|
194
|
+
define_attribute(:percent, :bool, :default => true)
|
|
195
|
+
define_attribute(:reverse, :bool, :default => false)
|
|
196
|
+
define_child_node(RubyXL::ConditionalFormatValue, :collection => [2..-1], :accessor => :cfvo)
|
|
197
197
|
define_element_name 'iconSet'
|
|
198
198
|
end
|
|
199
199
|
|
data/lib/rubyXL/worksheet.rb
CHANGED
|
@@ -107,124 +107,8 @@ module LegacyWorksheet
|
|
|
107
107
|
c
|
|
108
108
|
end
|
|
109
109
|
|
|
110
|
-
def delete_row(row_index=0)
|
|
111
|
-
validate_workbook
|
|
112
|
-
validate_nonnegative(row_index)
|
|
113
|
-
|
|
114
|
-
deleted = sheet_data.rows.delete_at(row_index)
|
|
115
|
-
|
|
116
|
-
# Change cell row numbers
|
|
117
|
-
row_index.upto(sheet_data.size - 1) { |index|
|
|
118
|
-
sheet_data[index].cells.each{ |c| c.row -= 1 unless c.nil? }
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return deleted
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Inserts row at row_index, pushes down, copies style from the row above (that's what Excel 2013 does!)
|
|
125
|
-
# NOTE: use of this method will break formulas which reference cells which are being "pushed down"
|
|
126
|
-
def insert_row(row_index = 0)
|
|
127
|
-
validate_workbook
|
|
128
|
-
ensure_cell_exists(row_index)
|
|
129
|
-
|
|
130
|
-
old_row = new_cells = nil
|
|
131
|
-
|
|
132
|
-
if row_index > 0 then
|
|
133
|
-
old_row = sheet_data.rows[row_index - 1]
|
|
134
|
-
if old_row then
|
|
135
|
-
new_cells = old_row.cells.collect { |c|
|
|
136
|
-
if c.nil? then nil
|
|
137
|
-
else nc = RubyXL::Cell.new(:style_index => c.style_index)
|
|
138
|
-
nc.worksheet = self
|
|
139
|
-
nc
|
|
140
|
-
end
|
|
141
|
-
}
|
|
142
|
-
end
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
row0 = sheet_data.rows[0]
|
|
146
|
-
new_cells ||= Array.new((row0 && row0.cells.size) || 0)
|
|
147
|
-
|
|
148
|
-
sheet_data.rows.insert(row_index, nil)
|
|
149
|
-
new_row = add_row(row_index, :cells => new_cells, :style_index => old_row && old_row.style_index)
|
|
150
|
-
|
|
151
|
-
# Update row values for all rows below
|
|
152
|
-
row_index.upto(sheet_data.rows.size - 1) { |i|
|
|
153
|
-
row = sheet_data.rows[i]
|
|
154
|
-
next if row.nil?
|
|
155
|
-
row.cells.each { |c| c.row = i unless c.nil? }
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
return new_row
|
|
159
|
-
end
|
|
160
|
-
|
|
161
|
-
def delete_column(column_index = 0)
|
|
162
|
-
validate_workbook
|
|
163
|
-
validate_nonnegative(column_index)
|
|
164
|
-
|
|
165
|
-
#delete column
|
|
166
|
-
sheet_data.rows.each { |row| row.cells.delete_at(column_index) }
|
|
167
|
-
|
|
168
|
-
# Change column numbers for cells to the right of the deleted column
|
|
169
|
-
sheet_data.rows.each_with_index { |row, row_index|
|
|
170
|
-
row.cells.each_with_index { |c, column_index|
|
|
171
|
-
c.column = column_index if c.is_a?(Cell)
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
cols.each { |range| range.delete_column(column_index) }
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
# Inserts column at +column_index+, pushes everything right, takes styles from column to left
|
|
179
|
-
# NOTE: use of this method will break formulas which reference cells which are being "pushed right"
|
|
180
|
-
def insert_column(column_index = 0)
|
|
181
|
-
validate_workbook
|
|
182
|
-
ensure_cell_exists(0, column_index)
|
|
183
|
-
|
|
184
|
-
old_range = cols.get_range(column_index)
|
|
185
|
-
|
|
186
|
-
#go through each cell in column
|
|
187
|
-
sheet_data.rows.each_with_index { |row, row_index|
|
|
188
|
-
old_cell = row[column_index]
|
|
189
|
-
c = nil
|
|
190
|
-
|
|
191
|
-
if old_cell && old_cell.style_index != 0 &&
|
|
192
|
-
old_range && old_range.style_index != old_cell.style_index then
|
|
193
|
-
|
|
194
|
-
c = RubyXL::Cell.new(:style_index => old_cell.style_index, :worksheet => self,
|
|
195
|
-
:row => row_index, :column => column_index,
|
|
196
|
-
:datatype => RubyXL::DataType::SHARED_STRING)
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
row.insert_cell_shift_right(c, column_index)
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
cols.insert_column(column_index)
|
|
203
|
-
|
|
204
|
-
# TODO: update column numbers
|
|
205
|
-
end
|
|
206
|
-
|
|
207
110
|
private
|
|
208
111
|
|
|
209
|
-
NAME = 0
|
|
210
|
-
SIZE = 1
|
|
211
|
-
COLOR = 2
|
|
212
|
-
ITALICS = 3
|
|
213
|
-
BOLD = 4
|
|
214
|
-
UNDERLINE = 5
|
|
215
|
-
STRIKETHROUGH = 6
|
|
216
|
-
|
|
217
|
-
def row_font(row)
|
|
218
|
-
(row = sheet_data.rows[row]) && row.get_font
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
def column_font(col)
|
|
222
|
-
validate_workbook
|
|
223
|
-
validate_nonnegative(col)
|
|
224
|
-
|
|
225
|
-
@workbook.fonts[@workbook.cell_xfs[get_cols_style_index(col)].font_id]
|
|
226
|
-
end
|
|
227
|
-
|
|
228
112
|
#validates Workbook, ensures that this worksheet is in @workbook
|
|
229
113
|
def validate_workbook()
|
|
230
114
|
unless @workbook.nil? || @workbook.worksheets.nil?
|
|
@@ -234,39 +118,6 @@ module LegacyWorksheet
|
|
|
234
118
|
raise "This worksheet #{self} is not in workbook #{@workbook}"
|
|
235
119
|
end
|
|
236
120
|
|
|
237
|
-
def get_cols_style_index(column_index)
|
|
238
|
-
range = cols.locate_range(column_index)
|
|
239
|
-
(range && range.style_index) || 0
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
# Helper method to update the row styles array
|
|
243
|
-
# change_type - NAME or SIZE or COLOR etc
|
|
244
|
-
# main method to change font, called from each separate font mutator method
|
|
245
|
-
def change_row_font(row_index, change_type, arg, font)
|
|
246
|
-
validate_workbook
|
|
247
|
-
ensure_cell_exists(row_index)
|
|
248
|
-
|
|
249
|
-
xf = workbook.register_new_font(font, get_row_xf(row_index))
|
|
250
|
-
row = sheet_data[row_index]
|
|
251
|
-
row.style_index = workbook.register_new_xf(xf)
|
|
252
|
-
row.cells.each { |c| c.font_switch(change_type, arg) unless c.nil? }
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
# Helper method to update the fonts and cell styles array
|
|
256
|
-
# main method to change font, called from each separate font mutator method
|
|
257
|
-
def change_column_font(column_index, change_type, arg, font, xf)
|
|
258
|
-
validate_workbook
|
|
259
|
-
ensure_cell_exists(0, column_index)
|
|
260
|
-
|
|
261
|
-
xf = workbook.register_new_font(font, xf)
|
|
262
|
-
cols.get_range(column_index).style_index = workbook.register_new_xf(xf)
|
|
263
|
-
|
|
264
|
-
sheet_data.rows.each { |row|
|
|
265
|
-
c = row && row[column_index]
|
|
266
|
-
c.font_switch(change_type, arg) unless c.nil?
|
|
267
|
-
}
|
|
268
|
-
end
|
|
269
|
-
|
|
270
121
|
# Ensures that cell with +row_index+ and +column_index+ exists in
|
|
271
122
|
# +sheet_data+ arrays, growing them up if necessary.
|
|
272
123
|
def ensure_cell_exists(row_index, column_index = 0)
|
|
@@ -276,22 +127,12 @@ module LegacyWorksheet
|
|
|
276
127
|
row = sheet_data.rows[row_index] || add_row(row_index)
|
|
277
128
|
end
|
|
278
129
|
|
|
279
|
-
# Helper method to get the style index for a column
|
|
280
|
-
def get_col_style(column_index)
|
|
281
|
-
range = cols.locate_range(column_index)
|
|
282
|
-
(range && range.style_index) || 0
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
def get_row_style(row_index)
|
|
286
|
-
row = sheet_data.rows[row_index]
|
|
287
|
-
(row && row.style_index) || 0
|
|
288
|
-
end
|
|
289
|
-
|
|
290
130
|
def get_col_xf(column_index)
|
|
291
131
|
@workbook.cell_xfs[get_col_style(column_index)]
|
|
292
132
|
end
|
|
293
133
|
|
|
294
134
|
def get_row_xf(row)
|
|
135
|
+
validate_nonnegative(row)
|
|
295
136
|
@workbook.cell_xfs[get_row_style(row)]
|
|
296
137
|
end
|
|
297
138
|
|