rubyXL 3.4.14 → 3.4.33
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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +2 -1
- data/.rubocop.yml +124 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +10 -8
- data/README.rdoc +32 -13
- data/Rakefile +26 -27
- data/VERSION +1 -1
- data/lib/rubyXL/cell.rb +2 -4
- data/lib/rubyXL/convenience_methods/cell.rb +36 -32
- data/lib/rubyXL/convenience_methods/color.rb +9 -13
- data/lib/rubyXL/convenience_methods/workbook.rb +10 -9
- data/lib/rubyXL/convenience_methods/worksheet.rb +103 -7
- data/lib/rubyXL/objects/border.rb +0 -3
- data/lib/rubyXL/objects/calculation_chain.rb +2 -2
- data/lib/rubyXL/objects/cell_style.rb +1 -3
- data/lib/rubyXL/objects/chartsheet.rb +6 -10
- data/lib/rubyXL/objects/color.rb +2 -4
- data/lib/rubyXL/objects/column_range.rb +16 -15
- data/lib/rubyXL/objects/comments.rb +1 -4
- data/lib/rubyXL/objects/connection.rb +11 -11
- data/lib/rubyXL/objects/container_nodes.rb +1 -5
- data/lib/rubyXL/objects/content_types.rb +3 -6
- data/lib/rubyXL/objects/data_validation.rb +2 -2
- data/lib/rubyXL/objects/document_properties.rb +10 -13
- data/lib/rubyXL/objects/extensions.rb +0 -2
- data/lib/rubyXL/objects/external_links.rb +37 -7
- data/lib/rubyXL/objects/fill.rb +2 -5
- data/lib/rubyXL/objects/filters.rb +5 -7
- data/lib/rubyXL/objects/font.rb +2 -4
- data/lib/rubyXL/objects/formula.rb +3 -5
- data/lib/rubyXL/objects/ooxml_object.rb +34 -32
- data/lib/rubyXL/objects/query_table.rb +7 -5
- data/lib/rubyXL/objects/reference.rb +26 -17
- data/lib/rubyXL/objects/relationships.rb +7 -12
- data/lib/rubyXL/objects/root.rb +0 -2
- data/lib/rubyXL/objects/shared_strings.rb +4 -7
- data/lib/rubyXL/objects/sheet_common.rb +1 -3
- data/lib/rubyXL/objects/sheet_data.rb +12 -14
- data/lib/rubyXL/objects/simple_types.rb +3 -1
- data/lib/rubyXL/objects/storage.rb +57 -51
- data/lib/rubyXL/objects/stylesheet.rb +9 -17
- data/lib/rubyXL/objects/text.rb +6 -8
- data/lib/rubyXL/objects/theme.rb +19 -24
- data/lib/rubyXL/objects/workbook.rb +43 -38
- data/lib/rubyXL/objects/worksheet.rb +35 -31
- data/lib/rubyXL/parser.rb +1 -3
- data/lib/rubyXL/worksheet.rb +86 -79
- data/lib/rubyXL.rb +0 -1
- data/rdoc/README_rdoc.html +139 -73
- data/rdoc/RubyXL/AExtension.html +24 -60
- data/rdoc/RubyXL/AExtensionStorageArea.html +6 -13
- data/rdoc/RubyXL/ActiveX.html +19 -46
- data/rdoc/RubyXL/ActiveXBinary.html +6 -18
- data/rdoc/RubyXL/AdjustHandleList.html +6 -13
- data/rdoc/RubyXL/Alignment.html +6 -13
- data/rdoc/RubyXL/AlternateContent.html +6 -13
- data/rdoc/RubyXL/AlternateUrls.html +99 -0
- data/rdoc/RubyXL/Authors.html +6 -13
- data/rdoc/RubyXL/AutoFilter.html +6 -13
- data/rdoc/RubyXL/AutoFilterColumn.html +6 -13
- data/rdoc/RubyXL/BinaryImageFile.html +6 -21
- data/rdoc/RubyXL/BodyProperties.html +6 -13
- data/rdoc/RubyXL/BooleanNode.html +6 -13
- data/rdoc/RubyXL/BooleanValue.html +6 -13
- data/rdoc/RubyXL/Border.html +37 -89
- data/rdoc/RubyXL/BorderEdge.html +23 -53
- data/rdoc/RubyXL/Borders.html +16 -35
- data/rdoc/RubyXL/Break.html +6 -13
- data/rdoc/RubyXL/BreakList.html +6 -13
- data/rdoc/RubyXL/CT_AdjPoint2D.html +6 -13
- data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +6 -13
- data/rdoc/RubyXL/CT_AlphaModulateEffect.html +6 -13
- data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +6 -13
- data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +6 -13
- data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +6 -13
- data/rdoc/RubyXL/CT_Backdrop.html +6 -13
- data/rdoc/RubyXL/CT_Bevel.html +6 -13
- data/rdoc/RubyXL/CT_BiLevelEffect.html +6 -13
- data/rdoc/RubyXL/CT_BlendEffect.html +6 -13
- data/rdoc/RubyXL/CT_Blip.html +6 -13
- data/rdoc/RubyXL/CT_BlipFillProperties.html +6 -13
- data/rdoc/RubyXL/CT_BlurEffect.html +6 -13
- data/rdoc/RubyXL/CT_Camera.html +6 -13
- data/rdoc/RubyXL/CT_Color.html +6 -13
- data/rdoc/RubyXL/CT_ColorChangeEffect.html +6 -13
- data/rdoc/RubyXL/CT_ColorMapping.html +6 -13
- data/rdoc/RubyXL/CT_ColorScheme.html +6 -13
- data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +6 -13
- data/rdoc/RubyXL/CT_ConnectionSite.html +6 -13
- data/rdoc/RubyXL/CT_ConnectionSiteList.html +6 -13
- data/rdoc/RubyXL/CT_DashStop.html +6 -13
- data/rdoc/RubyXL/CT_DashStopList.html +6 -13
- data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +6 -13
- data/rdoc/RubyXL/CT_DuotoneEffect.html +6 -13
- data/rdoc/RubyXL/CT_EffectContainer.html +6 -13
- data/rdoc/RubyXL/CT_EffectList.html +6 -13
- data/rdoc/RubyXL/CT_EffectReference.html +6 -13
- data/rdoc/RubyXL/CT_EffectStyleItem.html +6 -13
- data/rdoc/RubyXL/CT_EffectStyleList.html +6 -13
- data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +6 -13
- data/rdoc/RubyXL/CT_FillEffect.html +6 -13
- data/rdoc/RubyXL/CT_FillOverlayEffect.html +6 -13
- data/rdoc/RubyXL/CT_FillStyleList.html +6 -13
- data/rdoc/RubyXL/CT_FlatText.html +6 -13
- data/rdoc/RubyXL/CT_FontCollection.html +6 -13
- data/rdoc/RubyXL/CT_FontReference.html +6 -13
- data/rdoc/RubyXL/CT_GeomGuideList.html +6 -13
- data/rdoc/RubyXL/CT_GlowEffect.html +6 -13
- data/rdoc/RubyXL/CT_GradientFillProperties.html +6 -13
- data/rdoc/RubyXL/CT_GradientStop.html +6 -13
- data/rdoc/RubyXL/CT_GradientStopList.html +6 -13
- data/rdoc/RubyXL/CT_HSLEffect.html +6 -13
- data/rdoc/RubyXL/CT_HslColor.html +6 -13
- data/rdoc/RubyXL/CT_Hyperlink.html +6 -13
- data/rdoc/RubyXL/CT_InnerShadowEffect.html +6 -13
- data/rdoc/RubyXL/CT_LightRig.html +6 -13
- data/rdoc/RubyXL/CT_LineEndProperties.html +6 -13
- data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +6 -13
- data/rdoc/RubyXL/CT_LineProperties.html +6 -13
- data/rdoc/RubyXL/CT_LineStyleList.html +6 -13
- data/rdoc/RubyXL/CT_LinearShadeProperties.html +6 -13
- data/rdoc/RubyXL/CT_LuminanceEffect.html +6 -13
- data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +6 -13
- data/rdoc/RubyXL/CT_OuterShadowEffect.html +6 -13
- data/rdoc/RubyXL/CT_Path2D.html +6 -13
- data/rdoc/RubyXL/CT_Path2DArcTo.html +6 -13
- data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +6 -13
- data/rdoc/RubyXL/CT_Path2DList.html +6 -13
- data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +6 -13
- data/rdoc/RubyXL/CT_Path2DTo.html +6 -13
- data/rdoc/RubyXL/CT_PathShadeProperties.html +6 -13
- data/rdoc/RubyXL/CT_PatternFillProperties.html +6 -13
- data/rdoc/RubyXL/CT_Point3D.html +6 -13
- data/rdoc/RubyXL/CT_PolarAdjustHandle.html +6 -13
- data/rdoc/RubyXL/CT_PresetColor.html +6 -13
- data/rdoc/RubyXL/CT_PresetLineDashProperties.html +6 -13
- data/rdoc/RubyXL/CT_PresetShadowEffect.html +6 -13
- data/rdoc/RubyXL/CT_PresetTextShape.html +6 -13
- data/rdoc/RubyXL/CT_ReflectionEffect.html +6 -13
- data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +6 -13
- data/rdoc/RubyXL/CT_RelativeRect.html +6 -13
- data/rdoc/RubyXL/CT_SRgbColor.html +6 -13
- data/rdoc/RubyXL/CT_ScRgbColor.html +6 -13
- data/rdoc/RubyXL/CT_Scene3D.html +6 -13
- data/rdoc/RubyXL/CT_SchemeColor.html +6 -13
- data/rdoc/RubyXL/CT_Shape3D.html +6 -13
- data/rdoc/RubyXL/CT_ShapeStyle.html +6 -13
- data/rdoc/RubyXL/CT_SoftEdgesEffect.html +6 -13
- data/rdoc/RubyXL/CT_SphereCoords.html +6 -13
- data/rdoc/RubyXL/CT_StretchInfoProperties.html +6 -13
- data/rdoc/RubyXL/CT_StyleMatrix.html +6 -13
- data/rdoc/RubyXL/CT_StyleMatrixReference.html +6 -13
- data/rdoc/RubyXL/CT_SupplementalFont.html +6 -13
- data/rdoc/RubyXL/CT_SystemColor.html +6 -13
- data/rdoc/RubyXL/CT_TextAutonumberBullet.html +6 -13
- data/rdoc/RubyXL/CT_TextBlipBullet.html +6 -13
- data/rdoc/RubyXL/CT_TextCharBullet.html +6 -13
- data/rdoc/RubyXL/CT_TextCharacterProperties.html +6 -13
- data/rdoc/RubyXL/CT_TextFont.html +6 -13
- data/rdoc/RubyXL/CT_TextListStyle.html +6 -13
- data/rdoc/RubyXL/CT_TextNormalAutofit.html +6 -13
- data/rdoc/RubyXL/CT_TextParagraphProperties.html +6 -13
- data/rdoc/RubyXL/CT_TextSpacing.html +6 -13
- data/rdoc/RubyXL/CT_TextTabStop.html +6 -13
- data/rdoc/RubyXL/CT_TextTabStopList.html +6 -13
- data/rdoc/RubyXL/CT_TileInfoProperties.html +6 -13
- data/rdoc/RubyXL/CT_TintEffect.html +6 -13
- data/rdoc/RubyXL/CT_Transform2D.html +6 -13
- data/rdoc/RubyXL/CT_TransformEffect.html +6 -13
- data/rdoc/RubyXL/CT_Vector3D.html +6 -13
- data/rdoc/RubyXL/CT_XYAdjustHandle.html +6 -13
- data/rdoc/RubyXL/CalculationChain.html +15 -42
- data/rdoc/RubyXL/CalculationChainCell.html +6 -13
- data/rdoc/RubyXL/CalculationProperties.html +6 -13
- data/rdoc/RubyXL/Cell.html +116 -290
- data/rdoc/RubyXL/CellConvenienceMethods.html +318 -641
- data/rdoc/RubyXL/CellExt.html +6 -13
- data/rdoc/RubyXL/CellSmartTag.html +6 -13
- data/rdoc/RubyXL/CellSmartTagProperty.html +6 -13
- data/rdoc/RubyXL/CellSmartTags.html +6 -13
- data/rdoc/RubyXL/CellStyle.html +6 -13
- data/rdoc/RubyXL/CellStyleXFs.html +16 -35
- data/rdoc/RubyXL/CellStyles.html +16 -35
- data/rdoc/RubyXL/CellValue.html +16 -35
- data/rdoc/RubyXL/CellWatch.html +6 -13
- data/rdoc/RubyXL/CellWatches.html +6 -13
- data/rdoc/RubyXL/CellXFs.html +18 -40
- data/rdoc/RubyXL/ChartColorsFile.html +6 -21
- data/rdoc/RubyXL/ChartFile.html +18 -48
- data/rdoc/RubyXL/ChartStyleFile.html +6 -21
- data/rdoc/RubyXL/ChartUserShapesFile.html +6 -21
- data/rdoc/RubyXL/Chartsheet.html +18 -65
- data/rdoc/RubyXL/ChartsheetPageSetup.html +6 -13
- data/rdoc/RubyXL/ChartsheetProperties.html +6 -13
- data/rdoc/RubyXL/ChartsheetProtection.html +6 -13
- data/rdoc/RubyXL/ChartsheetView.html +6 -13
- data/rdoc/RubyXL/ChartsheetViews.html +6 -13
- data/rdoc/RubyXL/Color.html +17 -41
- data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +25 -69
- data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +36 -92
- data/rdoc/RubyXL/ColorConvenienceClasses.html +4 -10
- data/rdoc/RubyXL/ColorConvenienceMethods.html +14 -32
- data/rdoc/RubyXL/ColorFilter.html +6 -13
- data/rdoc/RubyXL/ColorScale.html +6 -13
- data/rdoc/RubyXL/ColorSet.html +6 -13
- data/rdoc/RubyXL/Colors.html +6 -13
- data/rdoc/RubyXL/ColumnRange.html +66 -81
- data/rdoc/RubyXL/ColumnRanges.html +43 -95
- data/rdoc/RubyXL/Comment.html +6 -13
- data/rdoc/RubyXL/CommentList.html +6 -13
- data/rdoc/RubyXL/CommentsFile.html +16 -48
- data/rdoc/RubyXL/ConditionalFormatValue.html +6 -13
- data/rdoc/RubyXL/ConditionalFormatting.html +6 -13
- data/rdoc/RubyXL/ConditionalFormattingRule.html +6 -13
- data/rdoc/RubyXL/Connection.html +6 -13
- data/rdoc/RubyXL/ConnectionTable.html +6 -13
- data/rdoc/RubyXL/ConnectionTables.html +6 -13
- data/rdoc/RubyXL/ConnectionTextField.html +6 -13
- data/rdoc/RubyXL/ConnectionTextFields.html +6 -13
- data/rdoc/RubyXL/Connections.html +15 -42
- data/rdoc/RubyXL/ContentTypeDefault.html +6 -13
- data/rdoc/RubyXL/ContentTypeOverride.html +6 -13
- data/rdoc/RubyXL/ContentTypes.html +25 -63
- data/rdoc/RubyXL/ControlPropertiesFile.html +8 -18
- data/rdoc/RubyXL/CorePropertiesFile.html +72 -192
- data/rdoc/RubyXL/CustomColor.html +6 -13
- data/rdoc/RubyXL/CustomColorList.html +6 -13
- data/rdoc/RubyXL/CustomFilter.html +6 -13
- data/rdoc/RubyXL/CustomFilters.html +6 -13
- data/rdoc/RubyXL/CustomGeometry.html +6 -13
- data/rdoc/RubyXL/CustomProperties.html +6 -13
- data/rdoc/RubyXL/CustomPropertiesFile.html +6 -21
- data/rdoc/RubyXL/CustomProperty.html +6 -13
- data/rdoc/RubyXL/CustomPropertyFile.html +6 -21
- data/rdoc/RubyXL/CustomSheetView.html +6 -13
- data/rdoc/RubyXL/CustomSheetViews.html +6 -13
- data/rdoc/RubyXL/CustomWorkbookView.html +6 -13
- data/rdoc/RubyXL/CustomWorkbookViews.html +6 -13
- data/rdoc/RubyXL/CustomXMLFile.html +6 -18
- data/rdoc/RubyXL/DXF.html +6 -13
- data/rdoc/RubyXL/DXFs.html +6 -13
- data/rdoc/RubyXL/DataBar.html +6 -13
- data/rdoc/RubyXL/DataConsolidate.html +6 -13
- data/rdoc/RubyXL/DataConsolidationReference.html +6 -13
- data/rdoc/RubyXL/DataConsolidationReferences.html +6 -13
- data/rdoc/RubyXL/DataType.html +4 -33
- data/rdoc/RubyXL/DataValidation.html +6 -13
- data/rdoc/RubyXL/DataValidations.html +6 -13
- data/rdoc/RubyXL/DateGroupItem.html +6 -13
- data/rdoc/RubyXL/DefinedName.html +6 -13
- data/rdoc/RubyXL/DefinedNameExt.html +6 -13
- data/rdoc/RubyXL/DefinedNames.html +6 -13
- data/rdoc/RubyXL/DefinedNamesExt.html +6 -13
- data/rdoc/RubyXL/DocumentPropertiesFile.html +23 -65
- data/rdoc/RubyXL/DrawingFile.html +18 -48
- data/rdoc/RubyXL/DynamicFilter.html +6 -13
- data/rdoc/RubyXL/EmbeddedControl.html +6 -13
- data/rdoc/RubyXL/EmbeddedControls.html +6 -13
- data/rdoc/RubyXL/Extension.html +6 -13
- data/rdoc/RubyXL/ExtensionStorageArea.html +6 -13
- data/rdoc/RubyXL/Extents.html +6 -13
- data/rdoc/RubyXL/ExternalBook.html +6 -13
- data/rdoc/RubyXL/ExternalLinksFile.html +18 -48
- data/rdoc/RubyXL/ExternalReference.html +6 -13
- data/rdoc/RubyXL/ExternalReferences.html +6 -13
- data/rdoc/RubyXL/ExtraColorSchemeList.html +6 -13
- data/rdoc/RubyXL/FieldItem.html +6 -13
- data/rdoc/RubyXL/FileRecoveryProperties.html +6 -13
- data/rdoc/RubyXL/FileSharing.html +6 -13
- data/rdoc/RubyXL/FileVersion.html +6 -13
- data/rdoc/RubyXL/Fill.html +16 -35
- data/rdoc/RubyXL/Fills.html +16 -35
- data/rdoc/RubyXL/FilterContainer.html +6 -13
- data/rdoc/RubyXL/FloatNode.html +6 -13
- data/rdoc/RubyXL/FloatValue.html +6 -13
- data/rdoc/RubyXL/Font.html +18 -42
- data/rdoc/RubyXL/FontConvenienceMethods.html +92 -253
- data/rdoc/RubyXL/FontScheme.html +6 -13
- data/rdoc/RubyXL/Fonts.html +16 -35
- data/rdoc/RubyXL/Formula.html +6 -13
- data/rdoc/RubyXL/FunctionGroup.html +6 -13
- data/rdoc/RubyXL/FunctionGroups.html +6 -13
- data/rdoc/RubyXL/GenericStorageObject.html +32 -90
- data/rdoc/RubyXL/GradientFill.html +6 -13
- data/rdoc/RubyXL/HeaderFooterSettings.html +6 -13
- data/rdoc/RubyXL/Hyperlink.html +6 -13
- data/rdoc/RubyXL/HyperlinkRelFile.html +6 -18
- data/rdoc/RubyXL/Hyperlinks.html +6 -13
- data/rdoc/RubyXL/IconFilter.html +6 -13
- data/rdoc/RubyXL/IconSet.html +6 -13
- data/rdoc/RubyXL/IgnoredError.html +6 -13
- data/rdoc/RubyXL/IgnoredErrors.html +6 -13
- data/rdoc/RubyXL/IndexedColors.html +6 -13
- data/rdoc/RubyXL/InputCells.html +6 -13
- data/rdoc/RubyXL/IntegerNode.html +6 -13
- data/rdoc/RubyXL/IntegerValue.html +6 -13
- data/rdoc/RubyXL/LegacyCell.html +14 -32
- data/rdoc/RubyXL/LegacyWorksheet.html +64 -116
- data/rdoc/RubyXL/MRUColors.html +6 -13
- data/rdoc/RubyXL/MacrosFile.html +6 -21
- data/rdoc/RubyXL/MergedCell.html +6 -13
- data/rdoc/RubyXL/MergedCells.html +6 -13
- data/rdoc/RubyXL/NumFmt.html +6 -13
- data/rdoc/RubyXL/NumberFormat.html +17 -36
- data/rdoc/RubyXL/NumberFormats.html +16 -40
- data/rdoc/RubyXL/OLEObject.html +6 -13
- data/rdoc/RubyXL/OLEObjectFile.html +6 -21
- data/rdoc/RubyXL/OLEObjects.html +6 -13
- data/rdoc/RubyXL/OLESize.html +6 -13
- data/rdoc/RubyXL/OOXMLContainerObject.html +57 -140
- data/rdoc/RubyXL/OOXMLIgnored.html +24 -55
- data/rdoc/RubyXL/OOXMLObject.html +9 -19
- data/rdoc/RubyXL/OOXMLObjectClassMethods.html +80 -115
- data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +79 -185
- data/rdoc/RubyXL/OOXMLRelationshipsFile.html +86 -223
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +46 -123
- data/rdoc/RubyXL/OdbcOleDbProperties.html +6 -13
- data/rdoc/RubyXL/Offset.html +6 -13
- data/rdoc/RubyXL/OlapProperties.html +6 -13
- data/rdoc/RubyXL/OleItem.html +99 -0
- data/rdoc/RubyXL/OleItems.html +99 -0
- data/rdoc/RubyXL/OleLink.html +99 -0
- data/rdoc/RubyXL/OutlineProperties.html +6 -13
- data/rdoc/RubyXL/PageMargins.html +6 -13
- data/rdoc/RubyXL/PageSetup.html +6 -13
- data/rdoc/RubyXL/PageSetupProperties.html +6 -13
- data/rdoc/RubyXL/Pane.html +6 -13
- data/rdoc/RubyXL/Parser.html +24 -54
- data/rdoc/RubyXL/PatternFill.html +6 -13
- data/rdoc/RubyXL/PersonMetadata.html +108 -0
- data/rdoc/RubyXL/PhoneticProperties.html +6 -13
- data/rdoc/RubyXL/PhoneticRun.html +6 -13
- data/rdoc/RubyXL/PivotArea.html +6 -13
- data/rdoc/RubyXL/PivotCache.html +6 -13
- data/rdoc/RubyXL/PivotCacheDefinitionFile.html +8 -26
- data/rdoc/RubyXL/PivotCacheRecordsFile.html +6 -21
- data/rdoc/RubyXL/PivotCaches.html +6 -13
- data/rdoc/RubyXL/PivotReference.html +6 -13
- data/rdoc/RubyXL/PivotReferences.html +6 -13
- data/rdoc/RubyXL/PivotTableFile.html +8 -26
- data/rdoc/RubyXL/PivotTableSelection.html +6 -13
- data/rdoc/RubyXL/PresetGeometry.html +6 -13
- data/rdoc/RubyXL/PrintOptions.html +6 -13
- data/rdoc/RubyXL/PrinterSettingsFile.html +6 -21
- data/rdoc/RubyXL/ProtectedRange.html +6 -13
- data/rdoc/RubyXL/ProtectedRanges.html +6 -13
- data/rdoc/RubyXL/Protection.html +6 -13
- data/rdoc/RubyXL/QueryParameter.html +6 -13
- data/rdoc/RubyXL/QueryParameters.html +6 -13
- data/rdoc/RubyXL/QueryTable.html +18 -48
- data/rdoc/RubyXL/QueryTableDeletedField.html +6 -13
- data/rdoc/RubyXL/QueryTableDeletedFields.html +6 -13
- data/rdoc/RubyXL/QueryTableField.html +6 -13
- data/rdoc/RubyXL/QueryTableFields.html +6 -13
- data/rdoc/RubyXL/QueryTableRefresh.html +6 -13
- data/rdoc/RubyXL/RID.html +6 -13
- data/rdoc/RubyXL/RawOOXML.html +24 -60
- data/rdoc/RubyXL/Reference.html +137 -263
- data/rdoc/RubyXL/Relationship.html +6 -13
- data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +14 -32
- data/rdoc/RubyXL/RelationshipSupport.html +52 -137
- data/rdoc/RubyXL/RevisionPointer.html +6 -13
- data/rdoc/RubyXL/RichText.html +19 -37
- data/rdoc/RubyXL/RichTextRun.html +16 -35
- data/rdoc/RubyXL/Row.html +63 -180
- data/rdoc/RubyXL/RowExt.html +6 -13
- data/rdoc/RubyXL/RunProperties.html +6 -13
- data/rdoc/RubyXL/Scenario.html +6 -13
- data/rdoc/RubyXL/Scenarios.html +6 -13
- data/rdoc/RubyXL/Selection.html +16 -35
- data/rdoc/RubyXL/ShapeGuide.html +6 -13
- data/rdoc/RubyXL/ShapeTextRectangle.html +6 -13
- data/rdoc/RubyXL/SharedStringsTable.html +60 -156
- data/rdoc/RubyXL/Sheet.html +6 -13
- data/rdoc/RubyXL/SheetCalculationProperties.html +6 -13
- data/rdoc/RubyXL/SheetData.html +21 -51
- data/rdoc/RubyXL/SheetDataExt.html +6 -13
- data/rdoc/RubyXL/SheetDataSet.html +6 -13
- data/rdoc/RubyXL/SheetMetadata.html +108 -0
- data/rdoc/RubyXL/SheetName.html +6 -13
- data/rdoc/RubyXL/SheetNames.html +6 -13
- data/rdoc/RubyXL/Sheets.html +6 -13
- data/rdoc/RubyXL/SlicerCacheFile.html +6 -21
- data/rdoc/RubyXL/SlicerFile.html +6 -21
- data/rdoc/RubyXL/SmartTagProperties.html +6 -13
- data/rdoc/RubyXL/SmartTagType.html +6 -13
- data/rdoc/RubyXL/SmartTagTypes.html +6 -13
- data/rdoc/RubyXL/SmartTags.html +6 -13
- data/rdoc/RubyXL/SortCondition.html +6 -13
- data/rdoc/RubyXL/SortState.html +6 -13
- data/rdoc/RubyXL/Sqref.html +25 -56
- data/rdoc/RubyXL/Stop.html +6 -13
- data/rdoc/RubyXL/StringNode.html +6 -13
- data/rdoc/RubyXL/StringNodeW3C.html +24 -55
- data/rdoc/RubyXL/StringValue.html +6 -13
- data/rdoc/RubyXL/Stylesheet.html +45 -118
- data/rdoc/RubyXL/TableFile.html +6 -21
- data/rdoc/RubyXL/TableParts.html +6 -13
- data/rdoc/RubyXL/TableStyle.html +6 -13
- data/rdoc/RubyXL/TableStyles.html +6 -13
- data/rdoc/RubyXL/Text.html +25 -63
- data/rdoc/RubyXL/TextImportSettings.html +6 -13
- data/rdoc/RubyXL/Theme.html +46 -96
- data/rdoc/RubyXL/ThemeElements.html +6 -13
- data/rdoc/RubyXL/ThumbnailFile.html +6 -21
- data/rdoc/RubyXL/Top10.html +6 -13
- data/rdoc/RubyXL/VMLDrawingFile.html +9 -27
- data/rdoc/RubyXL/Variant.html +6 -13
- data/rdoc/RubyXL/Vector.html +16 -35
- data/rdoc/RubyXL/VectorValue.html +6 -13
- data/rdoc/RubyXL/VisualProperties.html +6 -13
- data/rdoc/RubyXL/WebPublishObject.html +6 -13
- data/rdoc/RubyXL/WebPublishObjects.html +6 -13
- data/rdoc/RubyXL/WebPublishingItem.html +6 -13
- data/rdoc/RubyXL/WebPublishingItems.html +6 -13
- data/rdoc/RubyXL/WebPublishingProperties.html +6 -13
- data/rdoc/RubyXL/WebQueryProperties.html +6 -13
- data/rdoc/RubyXL/Workbook.html +222 -583
- data/rdoc/RubyXL/WorkbookConvenienceMethods.html +170 -309
- data/rdoc/RubyXL/WorkbookProperties.html +6 -13
- data/rdoc/RubyXL/WorkbookProtection.html +6 -13
- data/rdoc/RubyXL/WorkbookRoot.html +47 -125
- data/rdoc/RubyXL/WorkbookView.html +6 -13
- data/rdoc/RubyXL/WorkbookViews.html +6 -13
- data/rdoc/RubyXL/Worksheet.html +79 -160
- data/rdoc/RubyXL/WorksheetConvenienceMethods.html +605 -1269
- data/rdoc/RubyXL/WorksheetDimensions.html +6 -13
- data/rdoc/RubyXL/WorksheetFormatProperties.html +6 -13
- data/rdoc/RubyXL/WorksheetProperties.html +6 -13
- data/rdoc/RubyXL/WorksheetProtection.html +6 -13
- data/rdoc/RubyXL/WorksheetView.html +6 -13
- data/rdoc/RubyXL/WorksheetViews.html +6 -13
- data/rdoc/RubyXL/XF.html +6 -13
- data/rdoc/RubyXL.html +15 -324
- data/rdoc/created.rid +44 -44
- data/rdoc/css/rdoc.css +76 -8
- data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/rdoc/index.html +397 -769
- data/rdoc/js/darkfish.js +14 -1
- data/rdoc/js/navigation.js +8 -8
- data/rdoc/js/navigation.js.gz +0 -0
- data/rdoc/js/search.js +4 -4
- 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 +68 -5
- data/rubyXL.gemspec +28 -29
- data/spec/lib/cell_spec.rb +67 -9
- data/spec/lib/color_spec.rb +8 -1
- data/spec/lib/parser_spec.rb +28 -28
- data/spec/lib/reference_spec.rb +41 -5
- data/spec/lib/rgb_color_spec.rb +16 -3
- data/spec/lib/stylesheet_spec.rb +10 -11
- data/spec/lib/text_spec.rb +4 -6
- data/spec/lib/workbook_spec.rb +20 -8
- data/spec/lib/worksheet_spec.rb +815 -460
- data/spec/spec_helper.rb +2 -0
- data/test/test_parse_write.rb +3 -3
- metadata +26 -6
- data/Gemfile.lock +0 -92
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 14119a8af99822bbe1fd209a060d5374e92fe921750766cc83fa2cebdf586963
|
|
4
|
+
data.tar.gz: a3870a59650bd9b32c82bd6ad950aa720cb9f50370b96956eecb522d1c8e8fce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 27f8bf50de4801721703c78a73b156626998d37a7fa1ce76a05e2848d9bf233a29ed91044567b2b02a8cd29487872f2a5ed2eeeb65c45ae6b3fed8b4bfccea25
|
|
7
|
+
data.tar.gz: 7ba264f255d544ba9efb9bb5aaa272a2ba84442930bf41eb72c6a63571b0ed21a69255975c843b796725ce17ca29c81950b1784a0c027a54dc35e4801ea0870e
|
data/.circleci/config.yml
CHANGED
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
build:
|
|
8
8
|
docker:
|
|
9
9
|
# specify the version you desire here
|
|
10
|
-
- image:
|
|
10
|
+
- image: cimg/ruby:3.1.4
|
|
11
11
|
|
|
12
12
|
# Specify service dependencies here if necessary
|
|
13
13
|
# CircleCI maintains a library of pre-built images
|
|
@@ -29,6 +29,7 @@ jobs:
|
|
|
29
29
|
- run:
|
|
30
30
|
name: install dependencies
|
|
31
31
|
command: |
|
|
32
|
+
gem install bundler
|
|
32
33
|
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
|
33
34
|
|
|
34
35
|
- save_cache:
|
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#inherit_from: .rubocop_todo.yml
|
|
2
|
+
|
|
3
|
+
#require:
|
|
4
|
+
# - rubocop-rspec
|
|
5
|
+
|
|
6
|
+
AllCops:
|
|
7
|
+
NewCops: enable
|
|
8
|
+
SuggestExtensions: false
|
|
9
|
+
TargetRubyVersion: 2.6
|
|
10
|
+
DisplayCopNames: true
|
|
11
|
+
DisplayStyleGuide: true
|
|
12
|
+
Exclude:
|
|
13
|
+
- test/**/*
|
|
14
|
+
- tmp/*
|
|
15
|
+
- vendor/**/*
|
|
16
|
+
- Gemfile
|
|
17
|
+
- rubyXL.gemspec
|
|
18
|
+
|
|
19
|
+
# "Excessive" parentheses are your friend. You will understand it in time, Luke.
|
|
20
|
+
Style/TernaryParentheses:
|
|
21
|
+
Enabled: false
|
|
22
|
+
|
|
23
|
+
# Implicity is evil. Unwilingness to type a couple extra characters is laziness.
|
|
24
|
+
Style/RedundantConstantBase:
|
|
25
|
+
Enabled: false
|
|
26
|
+
|
|
27
|
+
# I don't see a good reason in this. Unless you are paid per line.
|
|
28
|
+
Style/CommentedKeyword:
|
|
29
|
+
Enabled: false
|
|
30
|
+
|
|
31
|
+
# Yes, some things are "redundant" but they are there exactly to drive home some point...
|
|
32
|
+
Style/RedundantSelf:
|
|
33
|
+
Enabled: false
|
|
34
|
+
|
|
35
|
+
Naming/AccessorMethodName:
|
|
36
|
+
Enabled: false
|
|
37
|
+
|
|
38
|
+
Layout/FirstArrayElementIndentation:
|
|
39
|
+
Enabled: false
|
|
40
|
+
|
|
41
|
+
Style/Documentation:
|
|
42
|
+
Enabled: false
|
|
43
|
+
|
|
44
|
+
Layout/LeadingCommentSpace:
|
|
45
|
+
Enabled: false
|
|
46
|
+
|
|
47
|
+
Style/BlockDelimiters:
|
|
48
|
+
Enabled: false
|
|
49
|
+
|
|
50
|
+
Style/HashSyntax:
|
|
51
|
+
Enabled: false
|
|
52
|
+
|
|
53
|
+
Style/MultilineIfThen:
|
|
54
|
+
Enabled: false
|
|
55
|
+
|
|
56
|
+
Style/ParenthesesAroundCondition:
|
|
57
|
+
Enabled: false
|
|
58
|
+
|
|
59
|
+
Style/MultilineWhenThen:
|
|
60
|
+
Enabled: false
|
|
61
|
+
|
|
62
|
+
Style/RedundantPercentQ:
|
|
63
|
+
Enabled: false
|
|
64
|
+
|
|
65
|
+
Style/PercentLiteralDelimiters:
|
|
66
|
+
Enabled: false
|
|
67
|
+
|
|
68
|
+
Style/NumericLiterals:
|
|
69
|
+
Enabled: false
|
|
70
|
+
|
|
71
|
+
Style/ExponentialNotation:
|
|
72
|
+
Enabled: false
|
|
73
|
+
|
|
74
|
+
Layout/SpaceInsideArrayLiteralBrackets:
|
|
75
|
+
EnforcedStyle: space
|
|
76
|
+
Enabled: false
|
|
77
|
+
|
|
78
|
+
Layout/SpaceBeforeBlockBraces:
|
|
79
|
+
Enabled: false
|
|
80
|
+
|
|
81
|
+
Layout/EmptyLineAfterGuardClause:
|
|
82
|
+
Enabled: false
|
|
83
|
+
|
|
84
|
+
Naming/MethodParameterName:
|
|
85
|
+
Enabled: false
|
|
86
|
+
|
|
87
|
+
Naming/ClassAndModuleCamelCase:
|
|
88
|
+
Enabled: false
|
|
89
|
+
|
|
90
|
+
Naming/ConstantName:
|
|
91
|
+
Enabled: false
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Layout/HashAlignment:
|
|
96
|
+
EnforcedHashRocketStyle: table
|
|
97
|
+
|
|
98
|
+
Layout/SpaceInsidePercentLiteralDelimiters:
|
|
99
|
+
Enabled: false
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
Metrics/BlockLength:
|
|
104
|
+
Enabled: false
|
|
105
|
+
|
|
106
|
+
Metrics/ClassLength:
|
|
107
|
+
Enabled: false
|
|
108
|
+
|
|
109
|
+
Metrics/MethodLength:
|
|
110
|
+
Enabled: false
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
Metrics/PerceivedComplexity:
|
|
115
|
+
Enabled: false
|
|
116
|
+
|
|
117
|
+
Metrics/ParameterLists:
|
|
118
|
+
Enabled: false
|
|
119
|
+
|
|
120
|
+
Metrics/CyclomaticComplexity:
|
|
121
|
+
Enabled: false
|
|
122
|
+
|
|
123
|
+
Metrics/ModuleLength:
|
|
124
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# v3.4.25 (May 19, 2022)
|
|
2
|
+
|
|
3
|
+
* Improve code style and consistently (@weshatheleopard)
|
|
4
|
+
* Update `Gemfile.lock`, dependency versions used when developing the gem (@weshatheleopard)
|
|
5
|
+
|
|
6
|
+
# v3.4.24 (May 16, 2022)
|
|
7
|
+
|
|
8
|
+
* Add `Cell#add_hyperlink` for adding a hyperlink to a cell (@weshatheleopard)
|
|
9
|
+
* Add `Reference#valid?` for checking if a cell reference is valid (@weshatheleopard)
|
|
10
|
+
* Add `Worksheet#cell_at` for finding a cell by its Excel-style reference (@weshatheleopard)
|
|
11
|
+
* Prevent creation of sheets with reserved names (specifically, `History`) (@weshatheleopard)
|
|
12
|
+
* Update `Gemfile.lock`, dependency versions used when developing the gem (@weshatheleopard)
|
data/Gemfile
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
source
|
|
1
|
+
source 'http://rubygems.org'
|
|
2
2
|
|
|
3
3
|
# Dependencies required to run this gem.
|
|
4
|
-
gem
|
|
5
|
-
gem
|
|
4
|
+
gem 'nokogiri', '>= 1.10.8'
|
|
5
|
+
gem 'rubyzip', '>= 1.3.0' , :require => 'zip'
|
|
6
6
|
|
|
7
7
|
# Development dependencies.
|
|
8
8
|
group :development, :test do
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
9
|
+
gem 'bundler'
|
|
10
|
+
gem 'rake'
|
|
11
|
+
gem 'juwelier'
|
|
12
|
+
gem 'rspec'
|
|
13
|
+
gem 'simplecov'
|
|
14
14
|
|
|
15
15
|
# gem 'stackprof'
|
|
16
16
|
gem 'ruby-prof'
|
|
17
17
|
gem 'rspec_junit_formatter'
|
|
18
|
+
|
|
19
|
+
gem 'rubocop'
|
|
18
20
|
end
|
data/README.rdoc
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
= rubyXL
|
|
2
|
-
{
|
|
3
|
-
{
|
|
4
|
-
{
|
|
2
|
+
{rdoc-image:https://badge.fury.io/rb/rubyXL.svg}[http://badge.fury.io/rb/rubyXL]
|
|
3
|
+
{rdoc-image:https://codeclimate.com/github/weshatheleopard/rubyXL.png}[https://codeclimate.com/github/weshatheleopard/rubyXL]
|
|
4
|
+
{rdoc-image:https://circleci.com/gh/weshatheleopard/rubyXL.svg?style=svg}[https://circleci.com/gh/weshatheleopard/rubyXL]
|
|
5
5
|
|
|
6
6
|
This gem supports operating on +xlsx+ files (Open XML format). While it is capable
|
|
7
7
|
of properly parsing the entire OOXML structure, its current main emphasis is on
|
|
@@ -55,6 +55,14 @@ Please note that row is a _sparse_ array of cells. Your code *must* expect that
|
|
|
55
55
|
worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
|
|
56
56
|
worksheet[0][0] # Returns cell A1 in the worksheet
|
|
57
57
|
|
|
58
|
+
cell = worksheet[0][0]
|
|
59
|
+
cell.value # Returns a properly converted value in the cell (if the file claims that the cell
|
|
60
|
+
# is holding a number, returns a respective Integer or Float, and so on).
|
|
61
|
+
|
|
62
|
+
Or, if you prefer Excel-style references (single-cell only!)
|
|
63
|
+
|
|
64
|
+
cell = worksheet.cell_at('B11')
|
|
65
|
+
|
|
58
66
|
==== Wrappers for accessing Cell properties
|
|
59
67
|
cell = workbook[0][0][0]
|
|
60
68
|
cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
|
|
@@ -134,26 +142,25 @@ Please note: these methods are being phased out in favor of the OOXML object mod
|
|
|
134
142
|
|
|
135
143
|
==== Changing Alignment
|
|
136
144
|
===== Horizontal
|
|
137
|
-
center, distributed, justify, left, right
|
|
145
|
+
# Possible alignments: center, distributed, justify, left, right
|
|
138
146
|
worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
|
|
139
147
|
worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
|
|
140
148
|
worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
|
|
141
149
|
|
|
142
150
|
===== Vertical
|
|
143
|
-
bottom, center, distributed, top
|
|
151
|
+
# Possible alignments: bottom, center, distributed, top
|
|
144
152
|
worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
|
|
145
153
|
worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
|
|
146
154
|
worksheet.change_column_vertical_alignment(0, 'top') # Sets first column to be top aligned
|
|
147
155
|
|
|
148
156
|
===== Rotation
|
|
157
|
+
# Possible values:
|
|
158
|
+
# * 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;
|
|
159
|
+
# * 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;
|
|
160
|
+
# * 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible
|
|
161
|
+
# * 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.
|
|
149
162
|
worksheet.sheet_data[0][0].change_text_rotation(90) # Sets A1 to be rotated by 90 degrees
|
|
150
163
|
|
|
151
|
-
Values:
|
|
152
|
-
* 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;
|
|
153
|
-
* 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;
|
|
154
|
-
* 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible
|
|
155
|
-
* 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.
|
|
156
|
-
|
|
157
164
|
==== Changing Row Height
|
|
158
165
|
worksheet.change_row_height(0, 30) # Sets first row height to 30
|
|
159
166
|
|
|
@@ -161,7 +168,9 @@ Values:
|
|
|
161
168
|
worksheet.change_column_width(0, 30) # Sets first column width to 30
|
|
162
169
|
|
|
163
170
|
==== Merging Cells
|
|
164
|
-
worksheet.merge_cells(0,
|
|
171
|
+
worksheet.merge_cells(0, 1, 2, 3) # Merges B1:D3
|
|
172
|
+
worksheet.merge_cells('A2:C4') # Merges A2:C4
|
|
173
|
+
worksheet.merge_cells(row_from: 0, row_to: 1, col_from 2:, col_to: 3) # Merges C1:D2
|
|
165
174
|
|
|
166
175
|
==== Insert Row
|
|
167
176
|
This method will insert a row at specified index, pushing all rows below it down. It also copies styles from row above.
|
|
@@ -207,8 +216,14 @@ WARNING: Use of this method WILL break formulas referencing cells which have bee
|
|
|
207
216
|
cell = worksheet[0][0]
|
|
208
217
|
cell.set_number_format '0.0000%' # For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68
|
|
209
218
|
cell.change_text_wrap(true) # Makes the text in the cell to wrap.
|
|
219
|
+
cell.change_shrink_to_fit(true) # Makes the text in the cell to shrink to fit.
|
|
210
220
|
cell.change_text_indent(1) # Indents the text in the cell by 1 level
|
|
211
221
|
|
|
222
|
+
==== Add hyperlink to a Cell
|
|
223
|
+
cell.add_hyperlink('http://example.com')
|
|
224
|
+
cell.add_hyperlink('http://example.com', 'Some tooltip text')
|
|
225
|
+
|
|
226
|
+
|
|
212
227
|
== I/O
|
|
213
228
|
|
|
214
229
|
By default, the gem operates with files on the local filesystem:
|
|
@@ -229,6 +244,10 @@ It can also operate on +StringIO+ objects, thus eliminating the need to save the
|
|
|
229
244
|
|
|
230
245
|
RubyXL.class_variable_set(:@@suppress_warnings, true)
|
|
231
246
|
|
|
247
|
+
== Data validation (colloquially referred to as "dropdown list")
|
|
248
|
+
|
|
249
|
+
worksheet.add_validation_list("A1", [ "value1", "value2" ])
|
|
250
|
+
|
|
232
251
|
== For more information
|
|
233
252
|
Take a look at the files in spec/lib/ for rspecs on most methods
|
|
234
253
|
|
|
@@ -244,5 +263,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
|
|
|
244
263
|
|
|
245
264
|
== Copyright
|
|
246
265
|
|
|
247
|
-
Copyright (c) 2011 Vivek Bhagwat, 2013-
|
|
266
|
+
Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
|
|
248
267
|
See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
|
@@ -1,29 +1,28 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
1
|
require 'rubygems'
|
|
3
2
|
|
|
4
3
|
require 'bundler'
|
|
5
4
|
begin
|
|
6
5
|
Bundler.setup(:default, :development)
|
|
7
6
|
rescue Bundler::BundlerError => e
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
warn e.message
|
|
8
|
+
warn 'Run `bundle install` to install missing gems'
|
|
10
9
|
exit e.status_code
|
|
11
10
|
end
|
|
12
11
|
|
|
13
|
-
require '
|
|
14
|
-
|
|
12
|
+
require 'juwelier'
|
|
13
|
+
Juwelier::Tasks.new do |gem|
|
|
15
14
|
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
|
16
|
-
gem.name =
|
|
17
|
-
gem.homepage =
|
|
18
|
-
gem.license =
|
|
19
|
-
gem.summary = %
|
|
20
|
-
gem.description = %
|
|
21
|
-
gem.email =
|
|
22
|
-
gem.authors = [
|
|
15
|
+
gem.name = 'rubyXL'
|
|
16
|
+
gem.homepage = 'http://github.com/gilt/rubyXL'
|
|
17
|
+
gem.license = 'MIT'
|
|
18
|
+
gem.summary = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
|
19
|
+
gem.description = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
|
|
20
|
+
gem.email = 'bhagwat.vivek@gmail.com'
|
|
21
|
+
gem.authors = ['Vivek Bhagwat', 'Wesha']
|
|
23
22
|
# gem.required_ruby_version = '>2.1'
|
|
24
23
|
# dependencies defined in Gemfile
|
|
25
24
|
end
|
|
26
|
-
|
|
25
|
+
Juwelier::RubygemsDotOrgTasks.new
|
|
27
26
|
|
|
28
27
|
require 'rake/testtask'
|
|
29
28
|
Rake::TestTask.new(:test) do |test|
|
|
@@ -39,7 +38,7 @@ task :default => :rspec
|
|
|
39
38
|
|
|
40
39
|
require 'rdoc/task'
|
|
41
40
|
Rake::RDocTask.new do |rdoc|
|
|
42
|
-
version = File.exist?('VERSION') ? File.read('VERSION') :
|
|
41
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ''
|
|
43
42
|
|
|
44
43
|
rdoc.rdoc_dir = 'rdoc'
|
|
45
44
|
rdoc.title = "rubyXL #{version}"
|
|
@@ -47,42 +46,42 @@ Rake::RDocTask.new do |rdoc|
|
|
|
47
46
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
48
47
|
end
|
|
49
48
|
|
|
50
|
-
desc
|
|
49
|
+
desc 'Dump profiling data with stackprof'
|
|
51
50
|
task :stackprof do
|
|
52
51
|
require 'benchmark'
|
|
53
52
|
require 'stackprof'
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
|
|
56
55
|
require './lib/rubyXL'
|
|
57
56
|
|
|
58
|
-
spreadsheets = Dir.glob(File.join(
|
|
57
|
+
spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
|
|
59
58
|
|
|
60
59
|
spreadsheets.each { |input|
|
|
61
60
|
puts "<<<--- Profiling parsing of #{input}..."
|
|
62
61
|
doc = nil
|
|
63
|
-
StackProf.run(:mode => :cpu, :interval => 100,
|
|
64
|
-
:out => "tmp/stackprof-cpu-parse-#{File.basename(input)}.dump") {
|
|
62
|
+
StackProf.run(:mode => :cpu, :interval => 100,
|
|
63
|
+
:out => "tmp/stackprof-cpu-parse-#{File.basename(input)}.dump") {
|
|
65
64
|
doc = RubyXL::Parser.parse(input)
|
|
66
65
|
}
|
|
67
66
|
|
|
68
|
-
output = File.join(
|
|
69
|
-
puts
|
|
70
|
-
StackProf.run(:mode => :cpu, :interval => 100,
|
|
67
|
+
output = File.join('test', 'output', File.basename(input))
|
|
68
|
+
puts "--->>> Profiling writing of #{output}..."
|
|
69
|
+
StackProf.run(:mode => :cpu, :interval => 100,
|
|
71
70
|
:out => "tmp/stackprof-cpu-write-#{File.basename(input)}.dump") {
|
|
72
71
|
doc.write(output)
|
|
73
72
|
}
|
|
74
73
|
}
|
|
75
74
|
end
|
|
76
75
|
|
|
77
|
-
desc
|
|
76
|
+
desc 'Dump profiling data with ruby-prof'
|
|
78
77
|
task :rubyprof do
|
|
79
78
|
require 'benchmark'
|
|
80
79
|
require 'ruby-prof'
|
|
81
80
|
|
|
82
|
-
|
|
81
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
|
|
83
82
|
require './lib/rubyXL'
|
|
84
83
|
|
|
85
|
-
spreadsheets = Dir.glob(File.join(
|
|
84
|
+
spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
|
|
86
85
|
|
|
87
86
|
spreadsheets.each { |input|
|
|
88
87
|
puts "<<<--- Profiling parsing of #{input}..."
|
|
@@ -93,8 +92,8 @@ task :rubyprof do
|
|
|
93
92
|
printer = RubyProf::CallStackPrinter.new(result)
|
|
94
93
|
File.open("tmp/ruby-prof-parse-#{File.basename(input)}.html", 'w') { |f| printer.print(f, {}) }
|
|
95
94
|
|
|
96
|
-
output = File.join(
|
|
97
|
-
puts
|
|
95
|
+
output = File.join('test', 'output', File.basename(input))
|
|
96
|
+
puts "--->>> Profiling writing of #{output}..."
|
|
98
97
|
result = RubyProf.profile {
|
|
99
98
|
doc.write(output)
|
|
100
99
|
}
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.4.
|
|
1
|
+
3.4.33
|
data/lib/rubyXL/cell.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
module RubyXL
|
|
2
|
-
|
|
3
2
|
module LegacyCell
|
|
4
3
|
def workbook
|
|
5
4
|
@worksheet.workbook
|
|
@@ -7,7 +6,7 @@ module RubyXL
|
|
|
7
6
|
|
|
8
7
|
private
|
|
9
8
|
|
|
10
|
-
def validate_workbook
|
|
9
|
+
def validate_workbook
|
|
11
10
|
unless workbook.nil? || workbook.worksheets.nil?
|
|
12
11
|
workbook.worksheets.each { |sheet|
|
|
13
12
|
unless sheet.nil? || sheet.sheet_data.nil? || sheet.sheet_data[row].nil?
|
|
@@ -20,10 +19,9 @@ module RubyXL
|
|
|
20
19
|
raise "This cell #{self} is not in workbook #{workbook}"
|
|
21
20
|
end
|
|
22
21
|
|
|
23
|
-
def validate_worksheet
|
|
22
|
+
def validate_worksheet
|
|
24
23
|
return if @worksheet && @worksheet[row] && @worksheet[row][column].equal?(self)
|
|
25
24
|
raise "Cell #{self} is not in worksheet #{worksheet}"
|
|
26
25
|
end
|
|
27
|
-
|
|
28
26
|
end
|
|
29
27
|
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
module RubyXL
|
|
2
2
|
module CellConvenienceMethods
|
|
3
|
-
|
|
4
3
|
def change_contents(data, formula_expression = nil)
|
|
5
4
|
validate_worksheet
|
|
6
5
|
|
|
@@ -9,12 +8,12 @@ module RubyXL
|
|
|
9
8
|
self.formula = RubyXL::Formula.new(:expression => formula_expression)
|
|
10
9
|
else
|
|
11
10
|
self.datatype = case data
|
|
12
|
-
when Date, Numeric then nil
|
|
11
|
+
when Date, Time, Numeric then nil
|
|
13
12
|
else RubyXL::DataType::RAW_STRING
|
|
14
13
|
end
|
|
15
14
|
end
|
|
16
15
|
|
|
17
|
-
data = workbook.date_to_num(data) if data.is_a?(Date)
|
|
16
|
+
data = workbook.date_to_num(data) if data.is_a?(Date) || data.is_a?(Time)
|
|
18
17
|
|
|
19
18
|
self.raw_value = data
|
|
20
19
|
end
|
|
@@ -54,6 +53,11 @@ module RubyXL
|
|
|
54
53
|
self.style_index = workbook.modify_alignment(self.style_index) { |a| a.wrap_text = wrap }
|
|
55
54
|
end
|
|
56
55
|
|
|
56
|
+
def change_shrink_to_fit(shrink_to_fit = false)
|
|
57
|
+
validate_worksheet
|
|
58
|
+
self.style_index = workbook.modify_alignment(self.style_index) { |a| a.shrink_to_fit = shrink_to_fit }
|
|
59
|
+
end
|
|
60
|
+
|
|
57
61
|
def change_text_rotation(rot)
|
|
58
62
|
validate_worksheet
|
|
59
63
|
self.style_index = workbook.modify_alignment(self.style_index) { |a| a.text_rotation = rot }
|
|
@@ -75,75 +79,75 @@ module RubyXL
|
|
|
75
79
|
self.style_index = workbook.modify_border_color(self.style_index, direction, color)
|
|
76
80
|
end
|
|
77
81
|
|
|
78
|
-
def is_italicized
|
|
82
|
+
def is_italicized
|
|
79
83
|
validate_worksheet
|
|
80
84
|
get_cell_font.is_italic
|
|
81
85
|
end
|
|
82
86
|
|
|
83
|
-
def is_bolded
|
|
87
|
+
def is_bolded
|
|
84
88
|
validate_worksheet
|
|
85
89
|
get_cell_font.is_bold
|
|
86
90
|
end
|
|
87
91
|
|
|
88
|
-
def is_underlined
|
|
92
|
+
def is_underlined
|
|
89
93
|
validate_worksheet
|
|
90
94
|
get_cell_font.is_underlined
|
|
91
95
|
end
|
|
92
96
|
|
|
93
|
-
def is_struckthrough
|
|
97
|
+
def is_struckthrough
|
|
94
98
|
validate_worksheet
|
|
95
99
|
get_cell_font.is_strikethrough
|
|
96
100
|
end
|
|
97
101
|
|
|
98
|
-
def font_name
|
|
102
|
+
def font_name
|
|
99
103
|
validate_worksheet
|
|
100
104
|
get_cell_font.get_name
|
|
101
105
|
end
|
|
102
106
|
|
|
103
|
-
def font_size
|
|
107
|
+
def font_size
|
|
104
108
|
validate_worksheet
|
|
105
109
|
get_cell_font.get_size
|
|
106
110
|
end
|
|
107
111
|
|
|
108
|
-
def font_color
|
|
112
|
+
def font_color
|
|
109
113
|
validate_worksheet
|
|
110
114
|
get_cell_font.get_rgb_color || '000000'
|
|
111
115
|
end
|
|
112
116
|
|
|
113
|
-
def fill_color
|
|
117
|
+
def fill_color
|
|
114
118
|
validate_worksheet
|
|
115
|
-
|
|
119
|
+
workbook.get_fill_color(get_cell_xf)
|
|
116
120
|
end
|
|
117
121
|
|
|
118
|
-
def horizontal_alignment
|
|
122
|
+
def horizontal_alignment
|
|
119
123
|
validate_worksheet
|
|
120
124
|
xf_obj = get_cell_xf
|
|
121
125
|
return nil if xf_obj.alignment.nil?
|
|
122
126
|
xf_obj.alignment.horizontal
|
|
123
127
|
end
|
|
124
128
|
|
|
125
|
-
def vertical_alignment
|
|
129
|
+
def vertical_alignment
|
|
126
130
|
validate_worksheet
|
|
127
131
|
xf_obj = get_cell_xf
|
|
128
132
|
return nil if xf_obj.alignment.nil?
|
|
129
133
|
xf_obj.alignment.vertical
|
|
130
134
|
end
|
|
131
135
|
|
|
132
|
-
def text_wrap
|
|
136
|
+
def text_wrap
|
|
133
137
|
validate_worksheet
|
|
134
138
|
xf_obj = get_cell_xf
|
|
135
139
|
return nil if xf_obj.alignment.nil?
|
|
136
140
|
xf_obj.alignment.wrap_text
|
|
137
141
|
end
|
|
138
|
-
|
|
142
|
+
|
|
139
143
|
def text_rotation
|
|
140
144
|
validate_worksheet
|
|
141
145
|
xf_obj = get_cell_xf
|
|
142
146
|
return nil if xf_obj.alignment.nil?
|
|
143
|
-
xf_obj.alignment.text_rotation
|
|
147
|
+
xf_obj.alignment.text_rotation
|
|
144
148
|
end
|
|
145
149
|
|
|
146
|
-
def text_indent
|
|
150
|
+
def text_indent
|
|
147
151
|
validate_worksheet
|
|
148
152
|
xf_obj = get_cell_xf
|
|
149
153
|
return nil if xf_obj.alignment.nil?
|
|
@@ -249,23 +253,23 @@ module RubyXL
|
|
|
249
253
|
end
|
|
250
254
|
end
|
|
251
255
|
|
|
252
|
-
=
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
# define_attribute(:tooltip, :string)
|
|
259
|
-
# define_attribute(:display, :string)
|
|
260
|
-
|
|
261
|
-
end
|
|
256
|
+
def add_hyperlink(url, tooltip = nil)
|
|
257
|
+
worksheet.relationship_container ||= RubyXL::OOXMLRelationshipsFile.new
|
|
258
|
+
relationships = worksheet.relationship_container.relationships
|
|
259
|
+
r_id = "rId#{relationships.size + 1}"
|
|
260
|
+
relationships << RubyXL::Relationship.new(:id => r_id, :target => url, :target_mode => 'External',
|
|
261
|
+
:type => RubyXL::HyperlinkRelFile::REL_TYPE)
|
|
262
262
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
263
|
+
hyperlink = RubyXL::Hyperlink.new(:ref => self.r, :r_id => r_id)
|
|
264
|
+
hyperlink.tooltip = tooltip if tooltip
|
|
265
|
+
worksheet.hyperlinks ||= RubyXL::Hyperlinks.new
|
|
266
|
+
worksheet.hyperlinks << hyperlink
|
|
266
267
|
end
|
|
267
|
-
=end
|
|
268
268
|
|
|
269
|
+
# def add_shared_string(str)
|
|
270
|
+
# self.datatype = RubyXL::DataType::SHARED_STRING
|
|
271
|
+
# self.raw_value = @workbook.shared_strings_container.add(str)
|
|
272
|
+
# end
|
|
269
273
|
end
|
|
270
274
|
|
|
271
275
|
RubyXL::Cell.send(:include, RubyXL::CellConvenienceMethods) # ruby 2.1 compat
|