rubyXL 3.3.29 → 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 +5 -5
- data/.circleci/config.yml +60 -0
- data/.rubocop.yml +124 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +11 -8
- data/LICENSE.txt +1 -1
- data/README.rdoc +57 -19
- data/Rakefile +29 -29
- data/VERSION +1 -1
- data/lib/rubyXL/cell.rb +2 -29
- data/lib/rubyXL/convenience_methods/cell.rb +276 -0
- data/lib/rubyXL/convenience_methods/color.rb +156 -0
- data/lib/rubyXL/convenience_methods/font.rb +63 -0
- data/lib/rubyXL/convenience_methods/workbook.rb +137 -0
- data/lib/rubyXL/convenience_methods/worksheet.rb +734 -0
- data/lib/rubyXL/convenience_methods.rb +5 -1122
- data/lib/rubyXL/objects/border.rb +0 -3
- data/lib/rubyXL/objects/calculation_chain.rb +2 -2
- data/lib/rubyXL/objects/cell_style.rb +4 -6
- data/lib/rubyXL/objects/chartsheet.rb +8 -12
- data/lib/rubyXL/objects/color.rb +4 -6
- data/lib/rubyXL/objects/column_range.rb +16 -15
- data/lib/rubyXL/objects/comments.rb +1 -4
- data/lib/rubyXL/objects/connection.rb +175 -0
- 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 +12 -15
- data/lib/rubyXL/objects/extensions.rb +0 -2
- data/lib/rubyXL/objects/external_links.rb +38 -8
- data/lib/rubyXL/objects/fill.rb +2 -5
- data/lib/rubyXL/objects/filters.rb +5 -7
- data/lib/rubyXL/objects/font.rb +2 -7
- data/lib/rubyXL/objects/formula.rb +3 -5
- data/lib/rubyXL/objects/ooxml_object.rb +40 -31
- data/lib/rubyXL/objects/query_table.rb +106 -0
- data/lib/rubyXL/objects/reference.rb +26 -17
- data/lib/rubyXL/objects/relationships.rb +14 -14
- 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 +44 -17
- data/lib/rubyXL/objects/simple_types.rb +19 -2
- data/lib/rubyXL/objects/storage.rb +60 -49
- data/lib/rubyXL/objects/stylesheet.rb +9 -17
- data/lib/rubyXL/objects/text.rb +6 -8
- data/lib/rubyXL/objects/theme.rb +23 -9
- data/lib/rubyXL/objects/workbook.rb +144 -36
- data/lib/rubyXL/objects/worksheet.rb +48 -34
- data/lib/rubyXL/parser.rb +1 -3
- data/lib/rubyXL/worksheet.rb +86 -86
- data/lib/rubyXL.rb +1 -1
- data/rdoc/README_rdoc.html +212 -153
- data/rdoc/RubyXL/AExtension.html +33 -69
- data/rdoc/RubyXL/AExtensionStorageArea.html +12 -18
- data/rdoc/RubyXL/ActiveX.html +26 -52
- data/rdoc/RubyXL/ActiveXBinary.html +12 -23
- data/rdoc/RubyXL/AdjustHandleList.html +13 -20
- data/rdoc/RubyXL/Alignment.html +13 -20
- data/rdoc/RubyXL/AlternateContent.html +12 -18
- data/rdoc/RubyXL/AlternateUrls.html +99 -0
- data/rdoc/RubyXL/Authors.html +13 -20
- data/rdoc/RubyXL/AutoFilter.html +13 -20
- data/rdoc/RubyXL/AutoFilterColumn.html +13 -20
- data/rdoc/RubyXL/BinaryImageFile.html +12 -26
- data/rdoc/RubyXL/BodyProperties.html +13 -20
- data/rdoc/RubyXL/BooleanNode.html +12 -18
- data/rdoc/RubyXL/BooleanValue.html +12 -18
- data/rdoc/RubyXL/Border.html +49 -101
- data/rdoc/RubyXL/BorderEdge.html +32 -61
- data/rdoc/RubyXL/Borders.html +25 -44
- data/rdoc/RubyXL/Break.html +13 -20
- data/rdoc/RubyXL/BreakList.html +13 -20
- data/rdoc/RubyXL/CT_AdjPoint2D.html +13 -20
- data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +13 -20
- data/rdoc/RubyXL/CT_AlphaModulateEffect.html +13 -20
- data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +13 -20
- data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +13 -20
- data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +13 -20
- data/rdoc/RubyXL/CT_Backdrop.html +13 -20
- data/rdoc/RubyXL/CT_Bevel.html +13 -20
- data/rdoc/RubyXL/CT_BiLevelEffect.html +13 -20
- data/rdoc/RubyXL/CT_BlendEffect.html +13 -20
- data/rdoc/RubyXL/CT_Blip.html +13 -20
- data/rdoc/RubyXL/CT_BlipFillProperties.html +13 -20
- data/rdoc/RubyXL/CT_BlurEffect.html +13 -20
- data/rdoc/RubyXL/CT_Camera.html +13 -20
- data/rdoc/RubyXL/CT_Color.html +13 -20
- data/rdoc/RubyXL/CT_ColorChangeEffect.html +13 -20
- data/rdoc/RubyXL/CT_ColorMapping.html +13 -20
- data/rdoc/RubyXL/CT_ColorScheme.html +13 -20
- data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +13 -20
- data/rdoc/RubyXL/CT_ConnectionSite.html +13 -20
- data/rdoc/RubyXL/CT_ConnectionSiteList.html +13 -20
- data/rdoc/RubyXL/CT_DashStop.html +13 -20
- data/rdoc/RubyXL/CT_DashStopList.html +13 -20
- data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +13 -20
- data/rdoc/RubyXL/CT_DuotoneEffect.html +13 -20
- data/rdoc/RubyXL/CT_EffectContainer.html +13 -20
- data/rdoc/RubyXL/CT_EffectList.html +13 -20
- data/rdoc/RubyXL/CT_EffectReference.html +13 -20
- data/rdoc/RubyXL/CT_EffectStyleItem.html +13 -20
- data/rdoc/RubyXL/CT_EffectStyleList.html +13 -20
- data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +13 -20
- data/rdoc/RubyXL/CT_FillEffect.html +13 -20
- data/rdoc/RubyXL/CT_FillOverlayEffect.html +13 -20
- data/rdoc/RubyXL/CT_FillStyleList.html +13 -20
- data/rdoc/RubyXL/CT_FlatText.html +13 -20
- data/rdoc/RubyXL/CT_FontCollection.html +13 -20
- data/rdoc/RubyXL/CT_FontReference.html +13 -20
- data/rdoc/RubyXL/CT_GeomGuideList.html +13 -20
- data/rdoc/RubyXL/CT_GlowEffect.html +13 -20
- data/rdoc/RubyXL/CT_GradientFillProperties.html +13 -20
- data/rdoc/RubyXL/CT_GradientStop.html +13 -20
- data/rdoc/RubyXL/CT_GradientStopList.html +13 -20
- data/rdoc/RubyXL/CT_HSLEffect.html +13 -20
- data/rdoc/RubyXL/CT_HslColor.html +13 -20
- data/rdoc/RubyXL/CT_Hyperlink.html +13 -20
- data/rdoc/RubyXL/CT_InnerShadowEffect.html +13 -20
- data/rdoc/RubyXL/CT_LightRig.html +13 -20
- data/rdoc/RubyXL/CT_LineEndProperties.html +13 -20
- data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +13 -20
- data/rdoc/RubyXL/CT_LineProperties.html +13 -20
- data/rdoc/RubyXL/CT_LineStyleList.html +13 -20
- data/rdoc/RubyXL/CT_LinearShadeProperties.html +13 -20
- data/rdoc/RubyXL/CT_LuminanceEffect.html +13 -20
- data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +13 -20
- data/rdoc/RubyXL/CT_OuterShadowEffect.html +13 -20
- data/rdoc/RubyXL/CT_Path2D.html +13 -20
- data/rdoc/RubyXL/CT_Path2DArcTo.html +13 -20
- data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +13 -20
- data/rdoc/RubyXL/CT_Path2DList.html +13 -20
- data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +13 -20
- data/rdoc/RubyXL/CT_Path2DTo.html +13 -20
- data/rdoc/RubyXL/CT_PathShadeProperties.html +13 -20
- data/rdoc/RubyXL/CT_PatternFillProperties.html +13 -20
- data/rdoc/RubyXL/CT_Point3D.html +13 -20
- data/rdoc/RubyXL/CT_PolarAdjustHandle.html +13 -20
- data/rdoc/RubyXL/CT_PresetColor.html +13 -20
- data/rdoc/RubyXL/CT_PresetLineDashProperties.html +13 -20
- data/rdoc/RubyXL/CT_PresetShadowEffect.html +13 -20
- data/rdoc/RubyXL/CT_PresetTextShape.html +13 -20
- data/rdoc/RubyXL/CT_ReflectionEffect.html +13 -20
- data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +13 -20
- data/rdoc/RubyXL/CT_RelativeRect.html +13 -20
- data/rdoc/RubyXL/CT_SRgbColor.html +13 -20
- data/rdoc/RubyXL/CT_ScRgbColor.html +13 -20
- data/rdoc/RubyXL/CT_Scene3D.html +13 -20
- data/rdoc/RubyXL/CT_SchemeColor.html +13 -20
- data/rdoc/RubyXL/CT_Shape3D.html +13 -20
- data/rdoc/RubyXL/CT_ShapeStyle.html +13 -20
- data/rdoc/RubyXL/CT_SoftEdgesEffect.html +13 -20
- data/rdoc/RubyXL/CT_SphereCoords.html +13 -20
- data/rdoc/RubyXL/CT_StretchInfoProperties.html +13 -20
- data/rdoc/RubyXL/CT_StyleMatrix.html +13 -20
- data/rdoc/RubyXL/CT_StyleMatrixReference.html +13 -20
- data/rdoc/RubyXL/CT_SupplementalFont.html +13 -20
- data/rdoc/RubyXL/CT_SystemColor.html +13 -20
- data/rdoc/RubyXL/CT_TextAutonumberBullet.html +13 -20
- data/rdoc/RubyXL/CT_TextBlipBullet.html +13 -20
- data/rdoc/RubyXL/CT_TextCharBullet.html +13 -20
- data/rdoc/RubyXL/CT_TextCharacterProperties.html +13 -20
- data/rdoc/RubyXL/CT_TextFont.html +13 -20
- data/rdoc/RubyXL/CT_TextListStyle.html +13 -20
- data/rdoc/RubyXL/CT_TextNormalAutofit.html +13 -20
- data/rdoc/RubyXL/CT_TextParagraphProperties.html +13 -20
- data/rdoc/RubyXL/CT_TextSpacing.html +13 -20
- data/rdoc/RubyXL/CT_TextTabStop.html +13 -20
- data/rdoc/RubyXL/CT_TextTabStopList.html +13 -20
- data/rdoc/RubyXL/CT_TileInfoProperties.html +13 -20
- data/rdoc/RubyXL/CT_TintEffect.html +13 -20
- data/rdoc/RubyXL/CT_Transform2D.html +13 -20
- data/rdoc/RubyXL/CT_TransformEffect.html +13 -20
- data/rdoc/RubyXL/CT_Vector3D.html +13 -20
- data/rdoc/RubyXL/CT_XYAdjustHandle.html +13 -20
- data/rdoc/RubyXL/CalculationChain.html +23 -50
- data/rdoc/RubyXL/CalculationChainCell.html +13 -20
- data/rdoc/RubyXL/CalculationProperties.html +13 -20
- data/rdoc/RubyXL/Cell.html +210 -258
- data/rdoc/RubyXL/CellConvenienceMethods.html +438 -572
- data/rdoc/RubyXL/CellExt.html +13 -20
- data/rdoc/RubyXL/CellSmartTag.html +13 -20
- data/rdoc/RubyXL/CellSmartTagProperty.html +13 -20
- data/rdoc/RubyXL/CellSmartTags.html +13 -20
- data/rdoc/RubyXL/CellStyle.html +13 -20
- data/rdoc/RubyXL/CellStyleXFs.html +25 -44
- data/rdoc/RubyXL/CellStyles.html +25 -44
- data/rdoc/RubyXL/CellValue.html +24 -43
- data/rdoc/RubyXL/CellWatch.html +13 -20
- data/rdoc/RubyXL/CellWatches.html +13 -20
- data/rdoc/RubyXL/CellXFs.html +26 -48
- data/rdoc/RubyXL/ChartColorsFile.html +12 -26
- data/rdoc/RubyXL/ChartFile.html +25 -54
- data/rdoc/RubyXL/ChartStyleFile.html +12 -26
- data/rdoc/RubyXL/ChartUserShapesFile.html +12 -26
- data/rdoc/RubyXL/Chartsheet.html +26 -73
- data/rdoc/RubyXL/ChartsheetPageSetup.html +13 -20
- data/rdoc/RubyXL/ChartsheetProperties.html +13 -20
- data/rdoc/RubyXL/ChartsheetProtection.html +13 -20
- data/rdoc/RubyXL/ChartsheetView.html +13 -20
- data/rdoc/RubyXL/ChartsheetViews.html +13 -20
- data/rdoc/RubyXL/Color.html +24 -48
- data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +246 -0
- data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +285 -0
- data/rdoc/RubyXL/ColorConvenienceClasses.html +91 -0
- data/rdoc/RubyXL/ColorConvenienceMethods.html +139 -0
- data/rdoc/RubyXL/ColorFilter.html +13 -20
- data/rdoc/RubyXL/ColorScale.html +13 -20
- data/rdoc/RubyXL/ColorSet.html +13 -20
- data/rdoc/RubyXL/Colors.html +13 -20
- data/rdoc/RubyXL/ColumnRange.html +76 -91
- data/rdoc/RubyXL/ColumnRanges.html +54 -106
- data/rdoc/RubyXL/Comment.html +13 -20
- data/rdoc/RubyXL/CommentList.html +13 -20
- data/rdoc/RubyXL/CommentsFile.html +24 -56
- data/rdoc/RubyXL/ConditionalFormatValue.html +13 -20
- data/rdoc/RubyXL/ConditionalFormatting.html +13 -20
- data/rdoc/RubyXL/ConditionalFormattingRule.html +13 -20
- data/rdoc/RubyXL/Connection.html +99 -0
- data/rdoc/RubyXL/ConnectionTable.html +99 -0
- data/rdoc/RubyXL/ConnectionTables.html +99 -0
- data/rdoc/RubyXL/ConnectionTextField.html +99 -0
- data/rdoc/RubyXL/ConnectionTextFields.html +99 -0
- data/rdoc/RubyXL/Connections.html +149 -0
- data/rdoc/RubyXL/ContentTypeDefault.html +12 -18
- data/rdoc/RubyXL/ContentTypeOverride.html +12 -18
- data/rdoc/RubyXL/ContentTypes.html +35 -72
- data/rdoc/RubyXL/ControlPropertiesFile.html +14 -23
- data/rdoc/RubyXL/CorePropertiesFile.html +89 -208
- data/rdoc/RubyXL/CustomColor.html +13 -20
- data/rdoc/RubyXL/CustomColorList.html +13 -20
- data/rdoc/RubyXL/CustomFilter.html +13 -20
- data/rdoc/RubyXL/CustomFilters.html +13 -20
- data/rdoc/RubyXL/CustomGeometry.html +13 -20
- data/rdoc/RubyXL/CustomProperties.html +13 -20
- data/rdoc/RubyXL/CustomPropertiesFile.html +12 -26
- data/rdoc/RubyXL/CustomProperty.html +13 -20
- data/rdoc/RubyXL/CustomPropertyFile.html +108 -0
- data/rdoc/RubyXL/CustomSheetView.html +13 -20
- data/rdoc/RubyXL/CustomSheetViews.html +13 -20
- data/rdoc/RubyXL/CustomWorkbookView.html +13 -20
- data/rdoc/RubyXL/CustomWorkbookViews.html +13 -20
- data/rdoc/RubyXL/CustomXMLFile.html +12 -23
- data/rdoc/RubyXL/DXF.html +13 -20
- data/rdoc/RubyXL/DXFs.html +13 -20
- data/rdoc/RubyXL/DataBar.html +13 -20
- data/rdoc/RubyXL/DataConsolidate.html +13 -20
- data/rdoc/RubyXL/DataConsolidationReference.html +13 -20
- data/rdoc/RubyXL/DataConsolidationReferences.html +13 -20
- data/rdoc/RubyXL/DataType.html +11 -40
- data/rdoc/RubyXL/DataValidation.html +13 -20
- data/rdoc/RubyXL/DataValidations.html +13 -20
- data/rdoc/RubyXL/DateGroupItem.html +13 -20
- data/rdoc/RubyXL/DefinedName.html +13 -20
- data/rdoc/RubyXL/DefinedNameExt.html +13 -20
- data/rdoc/RubyXL/DefinedNames.html +13 -20
- data/rdoc/RubyXL/DefinedNamesExt.html +13 -20
- data/rdoc/RubyXL/DocumentPropertiesFile.html +34 -76
- data/rdoc/RubyXL/DrawingFile.html +25 -54
- data/rdoc/RubyXL/DynamicFilter.html +13 -20
- data/rdoc/RubyXL/EmbeddedControl.html +13 -20
- data/rdoc/RubyXL/EmbeddedControls.html +13 -20
- data/rdoc/RubyXL/Extension.html +13 -20
- data/rdoc/RubyXL/ExtensionStorageArea.html +13 -20
- data/rdoc/RubyXL/Extents.html +13 -20
- data/rdoc/RubyXL/ExternalBook.html +13 -20
- data/rdoc/RubyXL/ExternalLinksFile.html +25 -54
- data/rdoc/RubyXL/ExternalReference.html +13 -20
- data/rdoc/RubyXL/ExternalReferences.html +13 -20
- data/rdoc/RubyXL/ExtraColorSchemeList.html +13 -20
- data/rdoc/RubyXL/FieldItem.html +13 -20
- data/rdoc/RubyXL/FileRecoveryProperties.html +13 -20
- data/rdoc/RubyXL/FileSharing.html +13 -20
- data/rdoc/RubyXL/FileVersion.html +13 -20
- data/rdoc/RubyXL/Fill.html +25 -44
- data/rdoc/RubyXL/Fills.html +25 -44
- data/rdoc/RubyXL/FilterContainer.html +13 -20
- data/rdoc/RubyXL/FloatNode.html +12 -18
- data/rdoc/RubyXL/FloatValue.html +12 -18
- data/rdoc/RubyXL/Font.html +28 -64
- data/rdoc/RubyXL/FontConvenienceMethods.html +133 -294
- data/rdoc/RubyXL/FontScheme.html +13 -20
- data/rdoc/RubyXL/Fonts.html +25 -44
- data/rdoc/RubyXL/Formula.html +13 -20
- data/rdoc/RubyXL/FunctionGroup.html +13 -20
- data/rdoc/RubyXL/FunctionGroups.html +13 -20
- data/rdoc/RubyXL/GenericStorageObject.html +41 -98
- data/rdoc/RubyXL/GradientFill.html +13 -20
- data/rdoc/RubyXL/HeaderFooterSettings.html +13 -20
- data/rdoc/RubyXL/Hyperlink.html +13 -20
- data/rdoc/RubyXL/HyperlinkRelFile.html +12 -23
- data/rdoc/RubyXL/Hyperlinks.html +13 -20
- data/rdoc/RubyXL/IconFilter.html +13 -20
- data/rdoc/RubyXL/IconSet.html +13 -20
- data/rdoc/RubyXL/IgnoredError.html +13 -20
- data/rdoc/RubyXL/IgnoredErrors.html +13 -20
- data/rdoc/RubyXL/IndexedColors.html +13 -20
- data/rdoc/RubyXL/InputCells.html +13 -20
- data/rdoc/RubyXL/IntegerNode.html +12 -18
- data/rdoc/RubyXL/IntegerValue.html +12 -18
- data/rdoc/RubyXL/LegacyCell.html +20 -71
- data/rdoc/RubyXL/LegacyWorksheet.html +77 -126
- data/rdoc/RubyXL/MRUColors.html +13 -20
- data/rdoc/RubyXL/MacrosFile.html +12 -26
- data/rdoc/RubyXL/MergedCell.html +13 -20
- data/rdoc/RubyXL/MergedCells.html +13 -20
- data/rdoc/RubyXL/NumFmt.html +13 -20
- data/rdoc/RubyXL/NumberFormat.html +25 -44
- data/rdoc/RubyXL/NumberFormats.html +25 -50
- data/rdoc/RubyXL/OLEObject.html +13 -20
- data/rdoc/RubyXL/OLEObjectFile.html +12 -26
- data/rdoc/RubyXL/OLEObjects.html +13 -20
- data/rdoc/RubyXL/OLESize.html +13 -20
- data/rdoc/RubyXL/OOXMLContainerObject.html +72 -157
- data/rdoc/RubyXL/OOXMLIgnored.html +32 -62
- data/rdoc/RubyXL/OOXMLObject.html +15 -26
- data/rdoc/RubyXL/OOXMLObjectClassMethods.html +126 -203
- data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +104 -226
- data/rdoc/RubyXL/OOXMLRelationshipsFile.html +109 -242
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +67 -154
- data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
- data/rdoc/RubyXL/Offset.html +13 -20
- data/rdoc/RubyXL/OlapProperties.html +99 -0
- 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 +13 -20
- data/rdoc/RubyXL/PageMargins.html +13 -20
- data/rdoc/RubyXL/PageSetup.html +13 -20
- data/rdoc/RubyXL/PageSetupProperties.html +13 -20
- data/rdoc/RubyXL/Pane.html +13 -20
- data/rdoc/RubyXL/Parser.html +35 -65
- data/rdoc/RubyXL/PatternFill.html +13 -20
- data/rdoc/RubyXL/PersonMetadata.html +108 -0
- data/rdoc/RubyXL/PhoneticProperties.html +13 -20
- data/rdoc/RubyXL/PhoneticRun.html +13 -20
- data/rdoc/RubyXL/PivotArea.html +13 -20
- data/rdoc/RubyXL/PivotCache.html +13 -20
- data/rdoc/RubyXL/PivotCacheDefinitionFile.html +14 -31
- data/rdoc/RubyXL/PivotCacheRecordsFile.html +12 -26
- data/rdoc/RubyXL/PivotCaches.html +13 -20
- data/rdoc/RubyXL/PivotReference.html +13 -20
- data/rdoc/RubyXL/PivotReferences.html +13 -20
- data/rdoc/RubyXL/PivotTableFile.html +14 -31
- data/rdoc/RubyXL/PivotTableSelection.html +13 -20
- data/rdoc/RubyXL/PresetGeometry.html +13 -20
- data/rdoc/RubyXL/PrintOptions.html +13 -20
- data/rdoc/RubyXL/PrinterSettingsFile.html +12 -26
- data/rdoc/RubyXL/ProtectedRange.html +13 -20
- data/rdoc/RubyXL/ProtectedRanges.html +13 -20
- data/rdoc/RubyXL/Protection.html +13 -20
- data/rdoc/RubyXL/QueryParameter.html +99 -0
- data/rdoc/RubyXL/QueryParameters.html +99 -0
- data/rdoc/RubyXL/QueryTable.html +157 -0
- data/rdoc/RubyXL/QueryTableDeletedField.html +99 -0
- data/rdoc/RubyXL/QueryTableDeletedFields.html +99 -0
- data/rdoc/RubyXL/QueryTableField.html +99 -0
- data/rdoc/RubyXL/QueryTableFields.html +99 -0
- data/rdoc/RubyXL/QueryTableRefresh.html +99 -0
- data/rdoc/RubyXL/RID.html +12 -18
- data/rdoc/RubyXL/RawOOXML.html +33 -69
- data/rdoc/RubyXL/Reference.html +156 -286
- data/rdoc/RubyXL/Relationship.html +12 -18
- data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +20 -37
- data/rdoc/RubyXL/RelationshipSupport.html +62 -145
- data/rdoc/RubyXL/RevisionPointer.html +13 -23
- data/rdoc/RubyXL/RichText.html +27 -45
- data/rdoc/RubyXL/RichTextRun.html +24 -43
- data/rdoc/RubyXL/Row.html +88 -205
- data/rdoc/RubyXL/RowExt.html +13 -20
- data/rdoc/RubyXL/RunProperties.html +13 -20
- data/rdoc/RubyXL/Scenario.html +13 -20
- data/rdoc/RubyXL/Scenarios.html +13 -20
- data/rdoc/RubyXL/Selection.html +23 -42
- data/rdoc/RubyXL/ShapeGuide.html +13 -20
- data/rdoc/RubyXL/ShapeTextRectangle.html +13 -20
- data/rdoc/RubyXL/SharedStringsTable.html +81 -177
- data/rdoc/RubyXL/Sheet.html +13 -20
- data/rdoc/RubyXL/SheetCalculationProperties.html +13 -20
- data/rdoc/RubyXL/SheetData.html +32 -62
- data/rdoc/RubyXL/SheetDataExt.html +13 -20
- data/rdoc/RubyXL/SheetDataSet.html +13 -20
- data/rdoc/RubyXL/SheetMetadata.html +108 -0
- data/rdoc/RubyXL/SheetName.html +13 -20
- data/rdoc/RubyXL/SheetNames.html +13 -20
- data/rdoc/RubyXL/Sheets.html +13 -20
- data/rdoc/RubyXL/SlicerCacheFile.html +12 -26
- data/rdoc/RubyXL/SlicerFile.html +12 -26
- data/rdoc/RubyXL/SmartTagProperties.html +13 -20
- data/rdoc/RubyXL/SmartTagType.html +13 -20
- data/rdoc/RubyXL/SmartTagTypes.html +13 -20
- data/rdoc/RubyXL/SmartTags.html +13 -20
- data/rdoc/RubyXL/SortCondition.html +13 -20
- data/rdoc/RubyXL/SortState.html +13 -20
- data/rdoc/RubyXL/Sqref.html +33 -63
- data/rdoc/RubyXL/Stop.html +13 -20
- data/rdoc/RubyXL/StringNode.html +12 -18
- data/rdoc/RubyXL/StringNodeW3C.html +33 -63
- data/rdoc/RubyXL/StringValue.html +12 -18
- data/rdoc/RubyXL/Stylesheet.html +65 -138
- data/rdoc/RubyXL/TableFile.html +12 -26
- data/rdoc/RubyXL/TableParts.html +12 -18
- data/rdoc/RubyXL/TableStyle.html +13 -20
- data/rdoc/RubyXL/TableStyles.html +13 -20
- data/rdoc/RubyXL/Text.html +35 -76
- data/rdoc/RubyXL/TextImportSettings.html +99 -0
- data/rdoc/RubyXL/Theme.html +72 -72
- data/rdoc/RubyXL/ThemeElements.html +13 -20
- data/rdoc/RubyXL/ThumbnailFile.html +12 -26
- data/rdoc/RubyXL/Top10.html +13 -20
- data/rdoc/RubyXL/VMLDrawingFile.html +15 -33
- data/rdoc/RubyXL/Variant.html +13 -20
- data/rdoc/RubyXL/Vector.html +24 -43
- data/rdoc/RubyXL/VectorValue.html +12 -18
- data/rdoc/RubyXL/VisualProperties.html +13 -20
- data/rdoc/RubyXL/WebPublishObject.html +13 -20
- data/rdoc/RubyXL/WebPublishObjects.html +13 -20
- data/rdoc/RubyXL/WebPublishingItem.html +13 -20
- data/rdoc/RubyXL/WebPublishingItems.html +13 -20
- data/rdoc/RubyXL/WebPublishingProperties.html +13 -20
- data/rdoc/RubyXL/WebQueryProperties.html +99 -0
- data/rdoc/RubyXL/Workbook.html +581 -266
- data/rdoc/RubyXL/WorkbookConvenienceMethods.html +226 -951
- data/rdoc/RubyXL/WorkbookProperties.html +13 -20
- data/rdoc/RubyXL/WorkbookProtection.html +13 -20
- data/rdoc/RubyXL/WorkbookRoot.html +58 -135
- data/rdoc/RubyXL/WorkbookView.html +13 -20
- data/rdoc/RubyXL/WorkbookViews.html +13 -20
- data/rdoc/RubyXL/Worksheet.html +122 -137
- data/rdoc/RubyXL/WorksheetConvenienceMethods.html +717 -1373
- data/rdoc/RubyXL/WorksheetDimensions.html +13 -20
- data/rdoc/RubyXL/WorksheetFormatProperties.html +12 -18
- data/rdoc/RubyXL/WorksheetProperties.html +13 -20
- data/rdoc/RubyXL/WorksheetProtection.html +13 -20
- data/rdoc/RubyXL/WorksheetView.html +13 -20
- data/rdoc/RubyXL/WorksheetViews.html +13 -20
- data/rdoc/RubyXL/XF.html +13 -20
- data/rdoc/RubyXL.html +46 -306
- data/rdoc/created.rid +45 -38
- data/rdoc/css/rdoc.css +109 -12
- data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/rdoc/index.html +403 -726
- data/rdoc/js/darkfish.js +33 -97
- data/rdoc/js/navigation.js +12 -49
- data/rdoc/js/navigation.js.gz +0 -0
- data/rdoc/js/search.js +35 -34
- data/rdoc/js/search_index.js +1 -1
- data/rdoc/js/search_index.js.gz +0 -0
- data/rdoc/js/searcher.js +6 -6
- data/rdoc/js/searcher.js.gz +0 -0
- data/rdoc/table_of_contents.html +287 -45
- data/rubyXL.gemspec +77 -43
- data/spec/lib/cell_spec.rb +119 -6
- data/spec/lib/color_spec.rb +9 -1
- data/spec/lib/parser_spec.rb +28 -28
- data/spec/lib/reference_spec.rb +41 -5
- data/spec/lib/rgb_color_spec.rb +29 -0
- data/spec/lib/stylesheet_spec.rb +10 -11
- data/spec/lib/text_spec.rb +4 -6
- data/spec/lib/workbook_spec.rb +31 -8
- data/spec/lib/worksheet_spec.rb +886 -480
- data/spec/spec_helper.rb +2 -0
- data/test/test_parse_write.rb +15 -15
- metadata +76 -10
- data/rdoc/js/jquery.js +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
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
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# Ruby CircleCI 2.0 configuration file
|
2
|
+
#
|
3
|
+
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
|
4
|
+
#
|
5
|
+
version: 2
|
6
|
+
jobs:
|
7
|
+
build:
|
8
|
+
docker:
|
9
|
+
# specify the version you desire here
|
10
|
+
- image: cimg/ruby:3.1.4
|
11
|
+
|
12
|
+
# Specify service dependencies here if necessary
|
13
|
+
# CircleCI maintains a library of pre-built images
|
14
|
+
# documented at https://circleci.com/docs/2.0/circleci-images/
|
15
|
+
# - image: circleci/postgres:9.4
|
16
|
+
|
17
|
+
working_directory: ~/repo
|
18
|
+
|
19
|
+
steps:
|
20
|
+
- checkout
|
21
|
+
|
22
|
+
# Download and cache dependencies
|
23
|
+
- restore_cache:
|
24
|
+
keys:
|
25
|
+
- v1-dependencies-{{ checksum "Gemfile.lock" }}
|
26
|
+
# fallback to using the latest cache if no exact match is found
|
27
|
+
- v1-dependencies-
|
28
|
+
|
29
|
+
- run:
|
30
|
+
name: install dependencies
|
31
|
+
command: |
|
32
|
+
gem install bundler
|
33
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
34
|
+
|
35
|
+
- save_cache:
|
36
|
+
paths:
|
37
|
+
- ./vendor/bundle
|
38
|
+
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
|
39
|
+
|
40
|
+
# run tests!
|
41
|
+
- run:
|
42
|
+
name: run tests
|
43
|
+
command: |
|
44
|
+
mkdir /tmp/test-results
|
45
|
+
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
|
46
|
+
circleci tests split --split-by=timings)"
|
47
|
+
|
48
|
+
bundle exec rspec \
|
49
|
+
--format progress \
|
50
|
+
--format RspecJunitFormatter \
|
51
|
+
--out /tmp/test-results/rspec.xml \
|
52
|
+
--format progress \
|
53
|
+
$TEST_FILES
|
54
|
+
|
55
|
+
# collect reports
|
56
|
+
- store_test_results:
|
57
|
+
path: /tmp/test-results
|
58
|
+
- store_artifacts:
|
59
|
+
path: /tmp/test-results
|
60
|
+
destination: test-results
|
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,17 +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
|
+
gem 'rspec_junit_formatter'
|
18
|
+
|
19
|
+
gem 'rubocop'
|
17
20
|
end
|
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
= rubyXL
|
2
|
-
{
|
3
|
-
{
|
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]
|
4
5
|
|
5
6
|
This gem supports operating on +xlsx+ files (Open XML format). While it is capable
|
6
7
|
of properly parsing the entire OOXML structure, its current main emphasis is on
|
7
8
|
reading files produced by MS Excel, making minor modifications to them and saving
|
8
9
|
them to be opened again, while preserving as much of the structure as possible.
|
9
10
|
|
10
|
-
Please note that proprietary binary +xls+ format is *not* supported.
|
11
|
+
Please note that proprietary binary +xls+ format is *not* supported by this gem. If you need to parse those files, try {spreadsheet}[https://github.com/zdavatz/spreadsheet] gem.
|
11
12
|
|
12
13
|
== To Install:
|
13
14
|
gem install rubyXL
|
@@ -15,6 +16,18 @@ Please note that proprietary binary +xls+ format is *not* supported.
|
|
15
16
|
== To Use:
|
16
17
|
require 'rubyXL' # Assuming rubygems is already required
|
17
18
|
|
19
|
+
=== Convenience methods
|
20
|
+
|
21
|
+
Starting with version 3.4.0, the main data structure has been separated from the convenience methods that provide access to individual features of the +xlsx+ format, in order to decrease the memory footprint. If you intend to use these features, you will need to additionally include the respective files:
|
22
|
+
require 'rubyXL/convenience_methods/cell'
|
23
|
+
require 'rubyXL/convenience_methods/color'
|
24
|
+
require 'rubyXL/convenience_methods/font'
|
25
|
+
require 'rubyXL/convenience_methods/workbook'
|
26
|
+
require 'rubyXL/convenience_methods/worksheet'
|
27
|
+
|
28
|
+
If you do not care about your RAM usage, just include them all at once by adding the following line to your code so it can continue operating just as before:
|
29
|
+
require 'rubyXL/convenience_methods'
|
30
|
+
|
18
31
|
=== Parsing an existing workbook
|
19
32
|
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
|
20
33
|
|
@@ -26,7 +39,7 @@ Please note that proprietary binary +xls+ format is *not* supported.
|
|
26
39
|
==== Accessing a Worksheet
|
27
40
|
workbook.worksheets[0] # Returns first worksheet
|
28
41
|
workbook[0] # Returns first worksheet
|
29
|
-
workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1"
|
42
|
+
workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1". Note that sheet names in Excel are limited to 31 character.
|
30
43
|
|
31
44
|
==== Accessing a Row (Array of Cells)
|
32
45
|
Please note that worksheet is a _sparse_ array of rows. Your code *must* expect that any row it plucks from the array may be <tt>nil</tt>.
|
@@ -42,6 +55,14 @@ Please note that row is a _sparse_ array of cells. Your code *must* expect that
|
|
42
55
|
worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
|
43
56
|
worksheet[0][0] # Returns cell A1 in the worksheet
|
44
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
|
+
|
45
66
|
==== Wrappers for accessing Cell properties
|
46
67
|
cell = workbook[0][0][0]
|
47
68
|
cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
|
@@ -53,6 +74,7 @@ Please note that row is a _sparse_ array of cells. Your code *must* expect that
|
|
53
74
|
cell.vertical_alignment
|
54
75
|
cell.get_border(:top)
|
55
76
|
cell.get_border_color(:top)
|
77
|
+
cell.text_rotation
|
56
78
|
|
57
79
|
==== Wrappers for accessing Row properties
|
58
80
|
Please note: these methods are being phased out in favor of the OOXML object model.
|
@@ -82,23 +104,13 @@ Please note: these methods are being phased out in favor of the OOXML object mod
|
|
82
104
|
worksheet.get_column_border(0, :right)
|
83
105
|
worksheet.get_column_border_color(0, :right)
|
84
106
|
|
85
|
-
==== Table reading
|
86
|
-
In order to discourage unnecessary reshuffling of data in memory, methods +extract_data+ and +get_table+ are being deprecated. You should access and iterate through rows and cells directly:
|
87
|
-
|
88
|
-
worksheet.each { |row|
|
89
|
-
row && row.cells.each { |cell|
|
90
|
-
val = cell && cell.value
|
91
|
-
do_whatever_you_want(val)
|
92
|
-
}
|
93
|
-
}
|
94
|
-
|
95
107
|
=== Modifying
|
96
108
|
|
97
109
|
==== Adding Worksheets
|
98
110
|
worksheet = workbook.add_worksheet('Sheet2')
|
99
111
|
|
100
112
|
==== Renaming Worksheets
|
101
|
-
worksheet.sheet_name = 'Cool New Name'
|
113
|
+
worksheet.sheet_name = 'Cool New Name' # Note that sheet name is limited to 31 characters by Excel.
|
102
114
|
|
103
115
|
==== Adding Cells
|
104
116
|
worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
|
@@ -130,16 +142,24 @@ In order to discourage unnecessary reshuffling of data in memory, methods +extra
|
|
130
142
|
|
131
143
|
==== Changing Alignment
|
132
144
|
===== Horizontal
|
133
|
-
center, distributed, justify, left, right
|
145
|
+
# Possible alignments: center, distributed, justify, left, right
|
134
146
|
worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
|
135
147
|
worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
|
136
148
|
worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
|
137
149
|
|
138
150
|
===== Vertical
|
139
|
-
bottom, center, distributed, top
|
151
|
+
# Possible alignments: bottom, center, distributed, top
|
140
152
|
worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
|
141
153
|
worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
|
142
154
|
worksheet.change_column_vertical_alignment(0, 'top') # Sets first column to be top aligned
|
155
|
+
|
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.
|
162
|
+
worksheet.sheet_data[0][0].change_text_rotation(90) # Sets A1 to be rotated by 90 degrees
|
143
163
|
|
144
164
|
==== Changing Row Height
|
145
165
|
worksheet.change_row_height(0, 30) # Sets first row height to 30
|
@@ -148,7 +168,9 @@ bottom, center, distributed, top
|
|
148
168
|
worksheet.change_column_width(0, 30) # Sets first column width to 30
|
149
169
|
|
150
170
|
==== Merging Cells
|
151
|
-
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
|
152
174
|
|
153
175
|
==== Insert Row
|
154
176
|
This method will insert a row at specified index, pushing all rows below it down. It also copies styles from row above.
|
@@ -193,6 +215,14 @@ WARNING: Use of this method WILL break formulas referencing cells which have bee
|
|
193
215
|
==== Modifying Cell Format
|
194
216
|
cell = worksheet[0][0]
|
195
217
|
cell.set_number_format '0.0000%' # For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68
|
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.
|
220
|
+
cell.change_text_indent(1) # Indents the text in the cell by 1 level
|
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
|
+
|
196
226
|
|
197
227
|
== I/O
|
198
228
|
|
@@ -210,6 +240,14 @@ It can also operate on +StringIO+ objects, thus eliminating the need to save the
|
|
210
240
|
RubyXL::Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
|
211
241
|
RubyXL::Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index
|
212
242
|
|
243
|
+
=== Suppress warnings about malformed input files
|
244
|
+
|
245
|
+
RubyXL.class_variable_set(:@@suppress_warnings, true)
|
246
|
+
|
247
|
+
== Data validation (colloquially referred to as "dropdown list")
|
248
|
+
|
249
|
+
worksheet.add_validation_list("A1", [ "value1", "value2" ])
|
250
|
+
|
213
251
|
== For more information
|
214
252
|
Take a look at the files in spec/lib/ for rspecs on most methods
|
215
253
|
|
@@ -225,5 +263,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
|
|
225
263
|
|
226
264
|
== Copyright
|
227
265
|
|
228
|
-
Copyright (c) 2011 Vivek Bhagwat, 2013-
|
266
|
+
Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
|
229
267
|
See LICENSE.txt for further details.
|
data/Rakefile
CHANGED
@@ -1,28 +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']
|
22
|
+
# gem.required_ruby_version = '>2.1'
|
23
23
|
# dependencies defined in Gemfile
|
24
24
|
end
|
25
|
-
|
25
|
+
Juwelier::RubygemsDotOrgTasks.new
|
26
26
|
|
27
27
|
require 'rake/testtask'
|
28
28
|
Rake::TestTask.new(:test) do |test|
|
@@ -33,12 +33,12 @@ Rake::TestTask.new(:test) do |test|
|
|
33
33
|
end
|
34
34
|
|
35
35
|
require 'rspec/core/rake_task'
|
36
|
-
RSpec::Core::RakeTask.new(:
|
37
|
-
task :default => :
|
36
|
+
RSpec::Core::RakeTask.new(:rspec)
|
37
|
+
task :default => :rspec
|
38
38
|
|
39
39
|
require 'rdoc/task'
|
40
40
|
Rake::RDocTask.new do |rdoc|
|
41
|
-
version = File.exist?('VERSION') ? File.read('VERSION') :
|
41
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ''
|
42
42
|
|
43
43
|
rdoc.rdoc_dir = 'rdoc'
|
44
44
|
rdoc.title = "rubyXL #{version}"
|
@@ -46,42 +46,42 @@ Rake::RDocTask.new do |rdoc|
|
|
46
46
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
47
47
|
end
|
48
48
|
|
49
|
-
desc
|
49
|
+
desc 'Dump profiling data with stackprof'
|
50
50
|
task :stackprof do
|
51
51
|
require 'benchmark'
|
52
52
|
require 'stackprof'
|
53
53
|
|
54
|
-
|
54
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
|
55
55
|
require './lib/rubyXL'
|
56
56
|
|
57
|
-
spreadsheets = Dir.glob(File.join(
|
57
|
+
spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
|
58
58
|
|
59
59
|
spreadsheets.each { |input|
|
60
60
|
puts "<<<--- Profiling parsing of #{input}..."
|
61
61
|
doc = nil
|
62
|
-
StackProf.run(:mode => :cpu, :interval => 100,
|
63
|
-
: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") {
|
64
64
|
doc = RubyXL::Parser.parse(input)
|
65
65
|
}
|
66
66
|
|
67
|
-
output = File.join(
|
68
|
-
puts
|
69
|
-
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,
|
70
70
|
:out => "tmp/stackprof-cpu-write-#{File.basename(input)}.dump") {
|
71
71
|
doc.write(output)
|
72
72
|
}
|
73
73
|
}
|
74
74
|
end
|
75
75
|
|
76
|
-
desc
|
76
|
+
desc 'Dump profiling data with ruby-prof'
|
77
77
|
task :rubyprof do
|
78
78
|
require 'benchmark'
|
79
79
|
require 'ruby-prof'
|
80
80
|
|
81
|
-
|
81
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
|
82
82
|
require './lib/rubyXL'
|
83
83
|
|
84
|
-
spreadsheets = Dir.glob(File.join(
|
84
|
+
spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
|
85
85
|
|
86
86
|
spreadsheets.each { |input|
|
87
87
|
puts "<<<--- Profiling parsing of #{input}..."
|
@@ -92,8 +92,8 @@ task :rubyprof do
|
|
92
92
|
printer = RubyProf::CallStackPrinter.new(result)
|
93
93
|
File.open("tmp/ruby-prof-parse-#{File.basename(input)}.html", 'w') { |f| printer.print(f, {}) }
|
94
94
|
|
95
|
-
output = File.join(
|
96
|
-
puts
|
95
|
+
output = File.join('test', 'output', File.basename(input))
|
96
|
+
puts "--->>> Profiling writing of #{output}..."
|
97
97
|
result = RubyProf.profile {
|
98
98
|
doc.write(output)
|
99
99
|
}
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.4.33
|
data/lib/rubyXL/cell.rb
CHANGED
@@ -1,26 +1,12 @@
|
|
1
1
|
module RubyXL
|
2
|
-
|
3
|
-
# http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.cellvalues(v=office.14).aspx
|
4
|
-
module DataType
|
5
|
-
SHARED_STRING = 's'
|
6
|
-
RAW_STRING = 'str'
|
7
|
-
INLINE_STRING = 'inlineStr'
|
8
|
-
ERROR = 'e'
|
9
|
-
BOOLEAN = 'b'
|
10
|
-
NUMBER = 'n'
|
11
|
-
DATE = 'd' # Only available in Office2010.
|
12
|
-
end
|
13
|
-
|
14
2
|
module LegacyCell
|
15
|
-
attr_accessor :formula, :worksheet
|
16
|
-
|
17
3
|
def workbook
|
18
4
|
@worksheet.workbook
|
19
5
|
end
|
20
6
|
|
21
7
|
private
|
22
8
|
|
23
|
-
def validate_workbook
|
9
|
+
def validate_workbook
|
24
10
|
unless workbook.nil? || workbook.worksheets.nil?
|
25
11
|
workbook.worksheets.each { |sheet|
|
26
12
|
unless sheet.nil? || sheet.sheet_data.nil? || sheet.sheet_data[row].nil?
|
@@ -33,22 +19,9 @@ module RubyXL
|
|
33
19
|
raise "This cell #{self} is not in workbook #{workbook}"
|
34
20
|
end
|
35
21
|
|
36
|
-
def validate_worksheet
|
22
|
+
def validate_worksheet
|
37
23
|
return if @worksheet && @worksheet[row] && @worksheet[row][column].equal?(self)
|
38
24
|
raise "Cell #{self} is not in worksheet #{worksheet}"
|
39
25
|
end
|
40
|
-
|
41
|
-
def get_cell_xf
|
42
|
-
workbook.cell_xfs[self.style_index || 0]
|
43
|
-
end
|
44
|
-
|
45
|
-
def get_cell_font
|
46
|
-
workbook.fonts[get_cell_xf.font_id]
|
47
|
-
end
|
48
|
-
|
49
|
-
def get_cell_border
|
50
|
-
workbook.borders[get_cell_xf.border_id]
|
51
|
-
end
|
52
|
-
|
53
26
|
end
|
54
27
|
end
|