rubyXL 3.3.33 → 3.4.25
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 +60 -0
- data/Gemfile +9 -8
- data/Gemfile.lock +124 -0
- data/LICENSE.txt +1 -1
- data/README.rdoc +46 -22
- 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 +141 -0
- data/lib/rubyXL/convenience_methods/worksheet.rb +714 -0
- data/lib/rubyXL/convenience_methods.rb +5 -1301
- 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 +8 -12
- data/lib/rubyXL/objects/color.rb +3 -7
- data/lib/rubyXL/objects/column_range.rb +0 -3
- 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 +11 -15
- data/lib/rubyXL/objects/extensions.rb +0 -2
- data/lib/rubyXL/objects/external_links.rb +30 -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 +26 -19
- data/lib/rubyXL/objects/query_table.rb +104 -0
- data/lib/rubyXL/objects/reference.rb +6 -8
- data/lib/rubyXL/objects/relationships.rb +13 -13
- data/lib/rubyXL/objects/root.rb +0 -2
- data/lib/rubyXL/objects/shared_strings.rb +3 -6
- data/lib/rubyXL/objects/sheet_common.rb +1 -3
- data/lib/rubyXL/objects/sheet_data.rb +38 -11
- data/lib/rubyXL/objects/simple_types.rb +16 -1
- data/lib/rubyXL/objects/storage.rb +51 -50
- data/lib/rubyXL/objects/stylesheet.rb +8 -15
- data/lib/rubyXL/objects/text.rb +5 -7
- data/lib/rubyXL/objects/theme.rb +5 -8
- data/lib/rubyXL/objects/workbook.rb +140 -33
- data/lib/rubyXL/objects/worksheet.rb +44 -31
- data/lib/rubyXL/parser.rb +1 -3
- data/lib/rubyXL/worksheet.rb +83 -91
- data/lib/rubyXL.rb +1 -1
- data/rdoc/README_rdoc.html +111 -126
- data/rdoc/RubyXL/AExtension.html +20 -60
- data/rdoc/RubyXL/AExtensionStorageArea.html +11 -17
- data/rdoc/RubyXL/ActiveX.html +19 -47
- data/rdoc/RubyXL/ActiveXBinary.html +11 -22
- data/rdoc/RubyXL/AdjustHandleList.html +12 -19
- data/rdoc/RubyXL/Alignment.html +12 -19
- data/rdoc/RubyXL/AlternateContent.html +11 -17
- data/rdoc/RubyXL/Authors.html +12 -19
- data/rdoc/RubyXL/AutoFilter.html +12 -19
- data/rdoc/RubyXL/AutoFilterColumn.html +12 -19
- data/rdoc/RubyXL/BinaryImageFile.html +11 -25
- data/rdoc/RubyXL/BodyProperties.html +12 -19
- data/rdoc/RubyXL/BooleanNode.html +11 -17
- data/rdoc/RubyXL/BooleanValue.html +11 -17
- data/rdoc/RubyXL/Border.html +24 -84
- data/rdoc/RubyXL/BorderEdge.html +19 -52
- data/rdoc/RubyXL/Borders.html +18 -39
- data/rdoc/RubyXL/Break.html +12 -19
- data/rdoc/RubyXL/BreakList.html +12 -19
- data/rdoc/RubyXL/CT_AdjPoint2D.html +12 -19
- data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +12 -19
- data/rdoc/RubyXL/CT_AlphaModulateEffect.html +12 -19
- data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +12 -19
- data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +12 -19
- data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +12 -19
- data/rdoc/RubyXL/CT_Backdrop.html +12 -19
- data/rdoc/RubyXL/CT_Bevel.html +12 -19
- data/rdoc/RubyXL/CT_BiLevelEffect.html +12 -19
- data/rdoc/RubyXL/CT_BlendEffect.html +12 -19
- data/rdoc/RubyXL/CT_Blip.html +12 -19
- data/rdoc/RubyXL/CT_BlipFillProperties.html +12 -19
- data/rdoc/RubyXL/CT_BlurEffect.html +12 -19
- data/rdoc/RubyXL/CT_Camera.html +12 -19
- data/rdoc/RubyXL/CT_Color.html +12 -19
- data/rdoc/RubyXL/CT_ColorChangeEffect.html +12 -19
- data/rdoc/RubyXL/CT_ColorMapping.html +12 -19
- data/rdoc/RubyXL/CT_ColorScheme.html +12 -19
- data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +12 -19
- data/rdoc/RubyXL/CT_ConnectionSite.html +12 -19
- data/rdoc/RubyXL/CT_ConnectionSiteList.html +12 -19
- data/rdoc/RubyXL/CT_DashStop.html +12 -19
- data/rdoc/RubyXL/CT_DashStopList.html +12 -19
- data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +12 -19
- data/rdoc/RubyXL/CT_DuotoneEffect.html +12 -19
- data/rdoc/RubyXL/CT_EffectContainer.html +12 -19
- data/rdoc/RubyXL/CT_EffectList.html +12 -19
- data/rdoc/RubyXL/CT_EffectReference.html +12 -19
- data/rdoc/RubyXL/CT_EffectStyleItem.html +12 -19
- data/rdoc/RubyXL/CT_EffectStyleList.html +12 -19
- data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +12 -19
- data/rdoc/RubyXL/CT_FillEffect.html +12 -19
- data/rdoc/RubyXL/CT_FillOverlayEffect.html +12 -19
- data/rdoc/RubyXL/CT_FillStyleList.html +12 -19
- data/rdoc/RubyXL/CT_FlatText.html +12 -19
- data/rdoc/RubyXL/CT_FontCollection.html +12 -19
- data/rdoc/RubyXL/CT_FontReference.html +12 -19
- data/rdoc/RubyXL/CT_GeomGuideList.html +12 -19
- data/rdoc/RubyXL/CT_GlowEffect.html +12 -19
- data/rdoc/RubyXL/CT_GradientFillProperties.html +12 -19
- data/rdoc/RubyXL/CT_GradientStop.html +12 -19
- data/rdoc/RubyXL/CT_GradientStopList.html +12 -19
- data/rdoc/RubyXL/CT_HSLEffect.html +12 -19
- data/rdoc/RubyXL/CT_HslColor.html +12 -19
- data/rdoc/RubyXL/CT_Hyperlink.html +12 -19
- data/rdoc/RubyXL/CT_InnerShadowEffect.html +12 -19
- data/rdoc/RubyXL/CT_LightRig.html +12 -19
- data/rdoc/RubyXL/CT_LineEndProperties.html +12 -19
- data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +12 -19
- data/rdoc/RubyXL/CT_LineProperties.html +12 -19
- data/rdoc/RubyXL/CT_LineStyleList.html +12 -19
- data/rdoc/RubyXL/CT_LinearShadeProperties.html +12 -19
- data/rdoc/RubyXL/CT_LuminanceEffect.html +12 -19
- data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +12 -19
- data/rdoc/RubyXL/CT_OuterShadowEffect.html +12 -19
- data/rdoc/RubyXL/CT_Path2D.html +12 -19
- data/rdoc/RubyXL/CT_Path2DArcTo.html +12 -19
- data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +12 -19
- data/rdoc/RubyXL/CT_Path2DList.html +12 -19
- data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +12 -19
- data/rdoc/RubyXL/CT_Path2DTo.html +12 -19
- data/rdoc/RubyXL/CT_PathShadeProperties.html +12 -19
- data/rdoc/RubyXL/CT_PatternFillProperties.html +12 -19
- data/rdoc/RubyXL/CT_Point3D.html +12 -19
- data/rdoc/RubyXL/CT_PolarAdjustHandle.html +12 -19
- data/rdoc/RubyXL/CT_PresetColor.html +12 -19
- data/rdoc/RubyXL/CT_PresetLineDashProperties.html +12 -19
- data/rdoc/RubyXL/CT_PresetShadowEffect.html +12 -19
- data/rdoc/RubyXL/CT_PresetTextShape.html +12 -19
- data/rdoc/RubyXL/CT_ReflectionEffect.html +12 -19
- data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +12 -19
- data/rdoc/RubyXL/CT_RelativeRect.html +12 -19
- data/rdoc/RubyXL/CT_SRgbColor.html +12 -19
- data/rdoc/RubyXL/CT_ScRgbColor.html +12 -19
- data/rdoc/RubyXL/CT_Scene3D.html +12 -19
- data/rdoc/RubyXL/CT_SchemeColor.html +12 -19
- data/rdoc/RubyXL/CT_Shape3D.html +12 -19
- data/rdoc/RubyXL/CT_ShapeStyle.html +12 -19
- data/rdoc/RubyXL/CT_SoftEdgesEffect.html +12 -19
- data/rdoc/RubyXL/CT_SphereCoords.html +12 -19
- data/rdoc/RubyXL/CT_StretchInfoProperties.html +12 -19
- data/rdoc/RubyXL/CT_StyleMatrix.html +12 -19
- data/rdoc/RubyXL/CT_StyleMatrixReference.html +12 -19
- data/rdoc/RubyXL/CT_SupplementalFont.html +12 -19
- data/rdoc/RubyXL/CT_SystemColor.html +12 -19
- data/rdoc/RubyXL/CT_TextAutonumberBullet.html +12 -19
- data/rdoc/RubyXL/CT_TextBlipBullet.html +12 -19
- data/rdoc/RubyXL/CT_TextCharBullet.html +12 -19
- data/rdoc/RubyXL/CT_TextCharacterProperties.html +12 -19
- data/rdoc/RubyXL/CT_TextFont.html +12 -19
- data/rdoc/RubyXL/CT_TextListStyle.html +12 -19
- data/rdoc/RubyXL/CT_TextNormalAutofit.html +12 -19
- data/rdoc/RubyXL/CT_TextParagraphProperties.html +12 -19
- data/rdoc/RubyXL/CT_TextSpacing.html +12 -19
- data/rdoc/RubyXL/CT_TextTabStop.html +12 -19
- data/rdoc/RubyXL/CT_TextTabStopList.html +12 -19
- data/rdoc/RubyXL/CT_TileInfoProperties.html +12 -19
- data/rdoc/RubyXL/CT_TintEffect.html +12 -19
- data/rdoc/RubyXL/CT_Transform2D.html +12 -19
- data/rdoc/RubyXL/CT_TransformEffect.html +12 -19
- data/rdoc/RubyXL/CT_Vector3D.html +12 -19
- data/rdoc/RubyXL/CT_XYAdjustHandle.html +12 -19
- data/rdoc/RubyXL/CalculationChain.html +16 -45
- data/rdoc/RubyXL/CalculationChainCell.html +12 -19
- data/rdoc/RubyXL/CalculationProperties.html +12 -19
- data/rdoc/RubyXL/Cell.html +133 -209
- data/rdoc/RubyXL/CellConvenienceMethods.html +168 -522
- data/rdoc/RubyXL/CellExt.html +12 -19
- data/rdoc/RubyXL/CellSmartTag.html +12 -19
- data/rdoc/RubyXL/CellSmartTagProperty.html +12 -19
- data/rdoc/RubyXL/CellSmartTags.html +12 -19
- data/rdoc/RubyXL/CellStyle.html +12 -19
- data/rdoc/RubyXL/CellStyleXFs.html +18 -39
- data/rdoc/RubyXL/CellStyles.html +18 -39
- data/rdoc/RubyXL/CellValue.html +17 -38
- data/rdoc/RubyXL/CellWatch.html +12 -19
- data/rdoc/RubyXL/CellWatches.html +12 -19
- data/rdoc/RubyXL/CellXFs.html +19 -42
- data/rdoc/RubyXL/ChartColorsFile.html +11 -25
- data/rdoc/RubyXL/ChartFile.html +18 -49
- data/rdoc/RubyXL/ChartStyleFile.html +11 -25
- data/rdoc/RubyXL/ChartUserShapesFile.html +11 -25
- data/rdoc/RubyXL/Chartsheet.html +19 -68
- data/rdoc/RubyXL/ChartsheetPageSetup.html +12 -19
- data/rdoc/RubyXL/ChartsheetProperties.html +12 -19
- data/rdoc/RubyXL/ChartsheetProtection.html +12 -19
- data/rdoc/RubyXL/ChartsheetView.html +12 -19
- data/rdoc/RubyXL/ChartsheetViews.html +12 -19
- data/rdoc/RubyXL/Color.html +18 -55
- data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +18 -65
- data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +28 -88
- data/rdoc/RubyXL/ColorConvenienceClasses.html +9 -14
- data/rdoc/RubyXL/ColorConvenienceMethods.html +14 -33
- data/rdoc/RubyXL/ColorFilter.html +12 -19
- data/rdoc/RubyXL/ColorScale.html +12 -19
- data/rdoc/RubyXL/ColorSet.html +12 -19
- data/rdoc/RubyXL/Colors.html +12 -19
- data/rdoc/RubyXL/ColumnRange.html +22 -74
- data/rdoc/RubyXL/ColumnRanges.html +23 -83
- data/rdoc/RubyXL/Comment.html +12 -19
- data/rdoc/RubyXL/CommentList.html +12 -19
- data/rdoc/RubyXL/CommentsFile.html +17 -51
- data/rdoc/RubyXL/ConditionalFormatValue.html +12 -19
- data/rdoc/RubyXL/ConditionalFormatting.html +12 -19
- data/rdoc/RubyXL/ConditionalFormattingRule.html +12 -19
- 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 +147 -0
- data/rdoc/RubyXL/ContentTypeDefault.html +11 -17
- data/rdoc/RubyXL/ContentTypeOverride.html +11 -17
- data/rdoc/RubyXL/ContentTypes.html +22 -63
- data/rdoc/RubyXL/ControlPropertiesFile.html +13 -22
- data/rdoc/RubyXL/CorePropertiesFile.html +34 -171
- data/rdoc/RubyXL/CustomColor.html +12 -19
- data/rdoc/RubyXL/CustomColorList.html +12 -19
- data/rdoc/RubyXL/CustomFilter.html +12 -19
- data/rdoc/RubyXL/CustomFilters.html +12 -19
- data/rdoc/RubyXL/CustomGeometry.html +12 -19
- data/rdoc/RubyXL/CustomProperties.html +12 -19
- data/rdoc/RubyXL/CustomPropertiesFile.html +11 -25
- data/rdoc/RubyXL/CustomProperty.html +12 -19
- data/rdoc/RubyXL/CustomPropertyFile.html +11 -25
- data/rdoc/RubyXL/CustomSheetView.html +12 -19
- data/rdoc/RubyXL/CustomSheetViews.html +12 -19
- data/rdoc/RubyXL/CustomWorkbookView.html +12 -19
- data/rdoc/RubyXL/CustomWorkbookViews.html +12 -19
- data/rdoc/RubyXL/CustomXMLFile.html +11 -22
- data/rdoc/RubyXL/DXF.html +12 -19
- data/rdoc/RubyXL/DXFs.html +12 -19
- data/rdoc/RubyXL/DataBar.html +12 -19
- data/rdoc/RubyXL/DataConsolidate.html +12 -19
- data/rdoc/RubyXL/DataConsolidationReference.html +12 -19
- data/rdoc/RubyXL/DataConsolidationReferences.html +12 -19
- data/rdoc/RubyXL/DataType.html +10 -39
- data/rdoc/RubyXL/DataValidation.html +12 -19
- data/rdoc/RubyXL/DataValidations.html +12 -19
- data/rdoc/RubyXL/DateGroupItem.html +12 -19
- data/rdoc/RubyXL/DefinedName.html +12 -19
- data/rdoc/RubyXL/DefinedNameExt.html +12 -19
- data/rdoc/RubyXL/DefinedNames.html +12 -19
- data/rdoc/RubyXL/DefinedNamesExt.html +12 -19
- data/rdoc/RubyXL/DocumentPropertiesFile.html +21 -68
- data/rdoc/RubyXL/DrawingFile.html +18 -49
- data/rdoc/RubyXL/DynamicFilter.html +12 -19
- data/rdoc/RubyXL/EmbeddedControl.html +12 -19
- data/rdoc/RubyXL/EmbeddedControls.html +12 -19
- data/rdoc/RubyXL/Extension.html +12 -19
- data/rdoc/RubyXL/ExtensionStorageArea.html +12 -19
- data/rdoc/RubyXL/Extents.html +12 -19
- data/rdoc/RubyXL/ExternalBook.html +12 -19
- data/rdoc/RubyXL/ExternalLinksFile.html +18 -49
- data/rdoc/RubyXL/ExternalReference.html +12 -19
- data/rdoc/RubyXL/ExternalReferences.html +12 -19
- data/rdoc/RubyXL/ExtraColorSchemeList.html +12 -19
- data/rdoc/RubyXL/FieldItem.html +12 -19
- data/rdoc/RubyXL/FileRecoveryProperties.html +12 -19
- data/rdoc/RubyXL/FileSharing.html +12 -19
- data/rdoc/RubyXL/FileVersion.html +12 -19
- data/rdoc/RubyXL/Fill.html +18 -39
- data/rdoc/RubyXL/Fills.html +18 -39
- data/rdoc/RubyXL/FilterContainer.html +12 -19
- data/rdoc/RubyXL/FloatNode.html +11 -17
- data/rdoc/RubyXL/FloatValue.html +11 -17
- data/rdoc/RubyXL/Font.html +21 -59
- data/rdoc/RubyXL/FontConvenienceMethods.html +48 -237
- data/rdoc/RubyXL/FontScheme.html +12 -19
- data/rdoc/RubyXL/Fonts.html +18 -39
- data/rdoc/RubyXL/Formula.html +12 -19
- data/rdoc/RubyXL/FunctionGroup.html +12 -19
- data/rdoc/RubyXL/FunctionGroups.html +12 -19
- data/rdoc/RubyXL/GenericStorageObject.html +21 -84
- data/rdoc/RubyXL/GradientFill.html +12 -19
- data/rdoc/RubyXL/HeaderFooterSettings.html +12 -19
- data/rdoc/RubyXL/Hyperlink.html +12 -19
- data/rdoc/RubyXL/HyperlinkRelFile.html +11 -22
- data/rdoc/RubyXL/Hyperlinks.html +12 -19
- data/rdoc/RubyXL/IconFilter.html +12 -19
- data/rdoc/RubyXL/IconSet.html +12 -19
- data/rdoc/RubyXL/IgnoredError.html +12 -19
- data/rdoc/RubyXL/IgnoredErrors.html +12 -19
- data/rdoc/RubyXL/IndexedColors.html +12 -19
- data/rdoc/RubyXL/InputCells.html +12 -19
- data/rdoc/RubyXL/IntegerNode.html +11 -17
- data/rdoc/RubyXL/IntegerValue.html +11 -17
- data/rdoc/RubyXL/LegacyCell.html +13 -66
- data/rdoc/RubyXL/LegacyWorksheet.html +25 -99
- data/rdoc/RubyXL/MRUColors.html +12 -19
- data/rdoc/RubyXL/MacrosFile.html +11 -25
- data/rdoc/RubyXL/MergedCell.html +12 -19
- data/rdoc/RubyXL/MergedCells.html +12 -19
- data/rdoc/RubyXL/NumFmt.html +12 -19
- data/rdoc/RubyXL/NumberFormat.html +18 -39
- data/rdoc/RubyXL/NumberFormats.html +18 -45
- data/rdoc/RubyXL/OLEObject.html +12 -19
- data/rdoc/RubyXL/OLEObjectFile.html +11 -25
- data/rdoc/RubyXL/OLEObjects.html +12 -19
- data/rdoc/RubyXL/OLESize.html +12 -19
- data/rdoc/RubyXL/OOXMLContainerObject.html +35 -132
- data/rdoc/RubyXL/OOXMLIgnored.html +19 -53
- data/rdoc/RubyXL/OOXMLObject.html +14 -25
- data/rdoc/RubyXL/OOXMLObjectClassMethods.html +91 -183
- data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +48 -185
- data/rdoc/RubyXL/OOXMLRelationshipsFile.html +47 -200
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +36 -133
- data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
- data/rdoc/RubyXL/Offset.html +12 -19
- 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 +12 -19
- data/rdoc/RubyXL/PageMargins.html +12 -19
- data/rdoc/RubyXL/PageSetup.html +12 -19
- data/rdoc/RubyXL/PageSetupProperties.html +12 -19
- data/rdoc/RubyXL/Pane.html +12 -19
- data/rdoc/RubyXL/Parser.html +22 -56
- data/rdoc/RubyXL/PatternFill.html +12 -19
- data/rdoc/RubyXL/PhoneticProperties.html +12 -19
- data/rdoc/RubyXL/PhoneticRun.html +12 -19
- data/rdoc/RubyXL/PivotArea.html +12 -19
- data/rdoc/RubyXL/PivotCache.html +12 -19
- data/rdoc/RubyXL/PivotCacheDefinitionFile.html +13 -30
- data/rdoc/RubyXL/PivotCacheRecordsFile.html +11 -25
- data/rdoc/RubyXL/PivotCaches.html +12 -19
- data/rdoc/RubyXL/PivotReference.html +12 -19
- data/rdoc/RubyXL/PivotReferences.html +12 -19
- data/rdoc/RubyXL/PivotTableFile.html +13 -30
- data/rdoc/RubyXL/PivotTableSelection.html +12 -19
- data/rdoc/RubyXL/PresetGeometry.html +12 -19
- data/rdoc/RubyXL/PrintOptions.html +12 -19
- data/rdoc/RubyXL/PrinterSettingsFile.html +11 -25
- data/rdoc/RubyXL/ProtectedRange.html +12 -19
- data/rdoc/RubyXL/ProtectedRanges.html +12 -19
- data/rdoc/RubyXL/Protection.html +12 -19
- data/rdoc/RubyXL/QueryParameter.html +99 -0
- data/rdoc/RubyXL/QueryParameters.html +99 -0
- data/rdoc/RubyXL/QueryTable.html +155 -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 +11 -17
- data/rdoc/RubyXL/RawOOXML.html +20 -60
- data/rdoc/RubyXL/Reference.html +62 -228
- data/rdoc/RubyXL/Relationship.html +11 -17
- data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +13 -32
- data/rdoc/RubyXL/RelationshipSupport.html +25 -120
- data/rdoc/RubyXL/RevisionPointer.html +12 -22
- data/rdoc/RubyXL/RichText.html +19 -39
- data/rdoc/RubyXL/RichTextRun.html +17 -38
- data/rdoc/RubyXL/Row.html +33 -168
- data/rdoc/RubyXL/RowExt.html +12 -19
- data/rdoc/RubyXL/RunProperties.html +12 -19
- data/rdoc/RubyXL/Scenario.html +12 -19
- data/rdoc/RubyXL/Scenarios.html +12 -19
- data/rdoc/RubyXL/Selection.html +16 -37
- data/rdoc/RubyXL/ShapeGuide.html +12 -19
- data/rdoc/RubyXL/ShapeTextRectangle.html +12 -19
- data/rdoc/RubyXL/SharedStringsTable.html +37 -147
- data/rdoc/RubyXL/Sheet.html +12 -19
- data/rdoc/RubyXL/SheetCalculationProperties.html +12 -19
- data/rdoc/RubyXL/SheetData.html +19 -53
- data/rdoc/RubyXL/SheetDataExt.html +12 -19
- data/rdoc/RubyXL/SheetDataSet.html +12 -19
- data/rdoc/RubyXL/SheetMetadata.html +108 -0
- data/rdoc/RubyXL/SheetName.html +12 -19
- data/rdoc/RubyXL/SheetNames.html +12 -19
- data/rdoc/RubyXL/Sheets.html +12 -19
- data/rdoc/RubyXL/SlicerCacheFile.html +11 -25
- data/rdoc/RubyXL/SlicerFile.html +11 -25
- data/rdoc/RubyXL/SmartTagProperties.html +12 -19
- data/rdoc/RubyXL/SmartTagType.html +12 -19
- data/rdoc/RubyXL/SmartTagTypes.html +12 -19
- data/rdoc/RubyXL/SmartTags.html +12 -19
- data/rdoc/RubyXL/SortCondition.html +12 -19
- data/rdoc/RubyXL/SortState.html +12 -19
- data/rdoc/RubyXL/Sqref.html +19 -53
- data/rdoc/RubyXL/Stop.html +12 -19
- data/rdoc/RubyXL/StringNode.html +11 -17
- data/rdoc/RubyXL/StringNodeW3C.html +20 -54
- data/rdoc/RubyXL/StringValue.html +11 -17
- data/rdoc/RubyXL/Stylesheet.html +34 -117
- data/rdoc/RubyXL/TableFile.html +11 -25
- data/rdoc/RubyXL/TableParts.html +11 -17
- data/rdoc/RubyXL/TableStyle.html +12 -19
- data/rdoc/RubyXL/TableStyles.html +12 -19
- data/rdoc/RubyXL/Text.html +22 -67
- data/rdoc/RubyXL/TextImportSettings.html +99 -0
- data/rdoc/RubyXL/Theme.html +19 -75
- data/rdoc/RubyXL/ThemeElements.html +12 -19
- data/rdoc/RubyXL/ThumbnailFile.html +11 -25
- data/rdoc/RubyXL/Top10.html +12 -19
- data/rdoc/RubyXL/VMLDrawingFile.html +14 -32
- data/rdoc/RubyXL/Variant.html +12 -19
- data/rdoc/RubyXL/Vector.html +17 -38
- data/rdoc/RubyXL/VectorValue.html +11 -17
- data/rdoc/RubyXL/VisualProperties.html +12 -19
- data/rdoc/RubyXL/WebPublishObject.html +12 -19
- data/rdoc/RubyXL/WebPublishObjects.html +12 -19
- data/rdoc/RubyXL/WebPublishingItem.html +12 -19
- data/rdoc/RubyXL/WebPublishingItems.html +12 -19
- data/rdoc/RubyXL/WebPublishingProperties.html +12 -19
- data/rdoc/RubyXL/WebQueryProperties.html +99 -0
- data/rdoc/RubyXL/Workbook.html +486 -227
- data/rdoc/RubyXL/WorkbookConvenienceMethods.html +130 -888
- data/rdoc/RubyXL/WorkbookProperties.html +12 -19
- data/rdoc/RubyXL/WorkbookProtection.html +12 -19
- data/rdoc/RubyXL/WorkbookRoot.html +27 -114
- data/rdoc/RubyXL/WorkbookView.html +12 -19
- data/rdoc/RubyXL/WorkbookViews.html +12 -19
- data/rdoc/RubyXL/Worksheet.html +92 -121
- data/rdoc/RubyXL/WorksheetConvenienceMethods.html +298 -1109
- data/rdoc/RubyXL/WorksheetDimensions.html +12 -19
- data/rdoc/RubyXL/WorksheetFormatProperties.html +11 -17
- data/rdoc/RubyXL/WorksheetProperties.html +12 -19
- data/rdoc/RubyXL/WorksheetProtection.html +12 -19
- data/rdoc/RubyXL/WorksheetView.html +12 -19
- data/rdoc/RubyXL/WorksheetViews.html +12 -19
- data/rdoc/RubyXL/XF.html +12 -19
- data/rdoc/RubyXL.html +39 -318
- data/rdoc/created.rid +45 -38
- data/rdoc/css/rdoc.css +55 -6
- data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/rdoc/index.html +33 -373
- data/rdoc/js/darkfish.js +22 -99
- data/rdoc/js/navigation.js +4 -41
- data/rdoc/js/navigation.js.gz +0 -0
- data/rdoc/js/search.js +32 -31
- 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 +205 -45
- data/rubyXL.gemspec +53 -29
- data/spec/lib/cell_spec.rb +57 -6
- data/spec/lib/color_spec.rb +2 -1
- data/spec/lib/parser_spec.rb +24 -27
- data/spec/lib/reference_spec.rb +9 -3
- data/spec/lib/rgb_color_spec.rb +27 -0
- data/spec/lib/stylesheet_spec.rb +8 -11
- data/spec/lib/text_spec.rb +1 -5
- data/spec/lib/workbook_spec.rb +25 -4
- data/spec/lib/worksheet_spec.rb +873 -479
- data/spec/spec_helper.rb +2 -0
- data/test/test_parse_write.rb +15 -15
- metadata +54 -10
- data/rdoc/js/jquery.js +0 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 69ceee765ae742ca18903f3db0a368782e581e8324941fd9671e6642fb8ba5d9
|
|
4
|
+
data.tar.gz: 0bed16ef2323e2bd91e33d395a66c9a13b902e5e03cad2de415f4bafcbcb8b3b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d30a855437e79b15c975ad5e13148cfb72e4f2956449dcbc95d6ff691e60a668d729432e80909318010d473e75323c3c4f75c17b57f80c59f22f41bac43bfc35
|
|
7
|
+
data.tar.gz: fe740718fd69d6a8131383d8b5b326df918820d67c08c708e8e80959a9a04ad3f0f18c2d0efb02e6e660dc66456578a8008e98781ee094658ac78fee9319d90b
|
|
@@ -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: circleci/ruby:2.6.6-buster
|
|
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/Gemfile
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
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'
|
|
17
18
|
end
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: http://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
addressable (2.8.0)
|
|
5
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
6
|
+
builder (3.2.4)
|
|
7
|
+
descendants_tracker (0.0.4)
|
|
8
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
9
|
+
diff-lcs (1.5.0)
|
|
10
|
+
docile (1.4.0)
|
|
11
|
+
faraday (1.10.0)
|
|
12
|
+
faraday-em_http (~> 1.0)
|
|
13
|
+
faraday-em_synchrony (~> 1.0)
|
|
14
|
+
faraday-excon (~> 1.1)
|
|
15
|
+
faraday-httpclient (~> 1.0)
|
|
16
|
+
faraday-multipart (~> 1.0)
|
|
17
|
+
faraday-net_http (~> 1.0)
|
|
18
|
+
faraday-net_http_persistent (~> 1.0)
|
|
19
|
+
faraday-patron (~> 1.0)
|
|
20
|
+
faraday-rack (~> 1.0)
|
|
21
|
+
faraday-retry (~> 1.0)
|
|
22
|
+
ruby2_keywords (>= 0.0.4)
|
|
23
|
+
faraday-em_http (1.0.0)
|
|
24
|
+
faraday-em_synchrony (1.0.0)
|
|
25
|
+
faraday-excon (1.1.0)
|
|
26
|
+
faraday-httpclient (1.0.1)
|
|
27
|
+
faraday-multipart (1.0.3)
|
|
28
|
+
multipart-post (>= 1.2, < 3)
|
|
29
|
+
faraday-net_http (1.0.1)
|
|
30
|
+
faraday-net_http_persistent (1.2.0)
|
|
31
|
+
faraday-patron (1.0.0)
|
|
32
|
+
faraday-rack (1.0.0)
|
|
33
|
+
faraday-retry (1.0.3)
|
|
34
|
+
git (1.11.0)
|
|
35
|
+
rchardet (~> 1.8)
|
|
36
|
+
github_api (0.19.0)
|
|
37
|
+
addressable (~> 2.4)
|
|
38
|
+
descendants_tracker (~> 0.0.4)
|
|
39
|
+
faraday (>= 0.8, < 2)
|
|
40
|
+
hashie (~> 3.5, >= 3.5.2)
|
|
41
|
+
oauth2 (~> 1.0)
|
|
42
|
+
hashie (3.6.0)
|
|
43
|
+
highline (2.0.3)
|
|
44
|
+
juwelier (2.4.9)
|
|
45
|
+
builder
|
|
46
|
+
bundler
|
|
47
|
+
git
|
|
48
|
+
github_api
|
|
49
|
+
highline
|
|
50
|
+
kamelcase (~> 0)
|
|
51
|
+
nokogiri
|
|
52
|
+
psych
|
|
53
|
+
rake
|
|
54
|
+
rdoc
|
|
55
|
+
semver2
|
|
56
|
+
jwt (2.3.0)
|
|
57
|
+
kamelcase (0.0.2)
|
|
58
|
+
semver2 (~> 3)
|
|
59
|
+
mini_portile2 (2.8.0)
|
|
60
|
+
multi_json (1.15.0)
|
|
61
|
+
multi_xml (0.6.0)
|
|
62
|
+
multipart-post (2.1.1)
|
|
63
|
+
nokogiri (1.13.6)
|
|
64
|
+
mini_portile2 (~> 2.8.0)
|
|
65
|
+
racc (~> 1.4)
|
|
66
|
+
oauth2 (1.4.9)
|
|
67
|
+
faraday (>= 0.17.3, < 3.0)
|
|
68
|
+
jwt (>= 1.0, < 3.0)
|
|
69
|
+
multi_json (~> 1.3)
|
|
70
|
+
multi_xml (~> 0.5)
|
|
71
|
+
rack (>= 1.2, < 3)
|
|
72
|
+
psych (4.0.4)
|
|
73
|
+
stringio
|
|
74
|
+
public_suffix (4.0.7)
|
|
75
|
+
racc (1.6.0)
|
|
76
|
+
rack (2.2.3)
|
|
77
|
+
rake (13.0.6)
|
|
78
|
+
rchardet (1.8.0)
|
|
79
|
+
rdoc (6.4.0)
|
|
80
|
+
psych (>= 4.0.0)
|
|
81
|
+
rspec (3.11.0)
|
|
82
|
+
rspec-core (~> 3.11.0)
|
|
83
|
+
rspec-expectations (~> 3.11.0)
|
|
84
|
+
rspec-mocks (~> 3.11.0)
|
|
85
|
+
rspec-core (3.11.0)
|
|
86
|
+
rspec-support (~> 3.11.0)
|
|
87
|
+
rspec-expectations (3.11.0)
|
|
88
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
89
|
+
rspec-support (~> 3.11.0)
|
|
90
|
+
rspec-mocks (3.11.1)
|
|
91
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
92
|
+
rspec-support (~> 3.11.0)
|
|
93
|
+
rspec-support (3.11.0)
|
|
94
|
+
rspec_junit_formatter (0.5.1)
|
|
95
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
96
|
+
ruby-prof (1.4.3)
|
|
97
|
+
ruby2_keywords (0.0.5)
|
|
98
|
+
rubyzip (2.3.2)
|
|
99
|
+
semver2 (3.4.2)
|
|
100
|
+
simplecov (0.21.2)
|
|
101
|
+
docile (~> 1.1)
|
|
102
|
+
simplecov-html (~> 0.11)
|
|
103
|
+
simplecov_json_formatter (~> 0.1)
|
|
104
|
+
simplecov-html (0.12.3)
|
|
105
|
+
simplecov_json_formatter (0.1.4)
|
|
106
|
+
stringio (3.0.2)
|
|
107
|
+
thread_safe (0.3.6)
|
|
108
|
+
|
|
109
|
+
PLATFORMS
|
|
110
|
+
ruby
|
|
111
|
+
|
|
112
|
+
DEPENDENCIES
|
|
113
|
+
bundler
|
|
114
|
+
juwelier
|
|
115
|
+
nokogiri (>= 1.10.8)
|
|
116
|
+
rake
|
|
117
|
+
rspec
|
|
118
|
+
rspec_junit_formatter
|
|
119
|
+
ruby-prof
|
|
120
|
+
rubyzip (>= 1.3.0)
|
|
121
|
+
simplecov
|
|
122
|
+
|
|
123
|
+
BUNDLED WITH
|
|
124
|
+
2.3.5
|
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
= rubyXL
|
|
2
2
|
{<img src="https://badge.fury.io/rb/rubyXL.svg" alt="Gem Version" />}[http://badge.fury.io/rb/rubyXL]
|
|
3
3
|
{<img src="https://codeclimate.com/github/weshatheleopard/rubyXL.png" alt="Code Climate" />}[https://codeclimate.com/github/weshatheleopard/rubyXL]
|
|
4
|
+
{<img src="https://circleci.com/gh/weshatheleopard/rubyXL.svg?style=svg" alt="CircleCI" />}[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
|
|
@@ -83,23 +104,13 @@ Please note: these methods are being phased out in favor of the OOXML object mod
|
|
|
83
104
|
worksheet.get_column_border(0, :right)
|
|
84
105
|
worksheet.get_column_border_color(0, :right)
|
|
85
106
|
|
|
86
|
-
==== Table reading
|
|
87
|
-
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:
|
|
88
|
-
|
|
89
|
-
worksheet.each { |row|
|
|
90
|
-
row && row.cells.each { |cell|
|
|
91
|
-
val = cell && cell.value
|
|
92
|
-
do_whatever_you_want(val)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
107
|
=== Modifying
|
|
97
108
|
|
|
98
109
|
==== Adding Worksheets
|
|
99
110
|
worksheet = workbook.add_worksheet('Sheet2')
|
|
100
111
|
|
|
101
112
|
==== Renaming Worksheets
|
|
102
|
-
worksheet.sheet_name = 'Cool New Name'
|
|
113
|
+
worksheet.sheet_name = 'Cool New Name' # Note that sheet name is limited to 31 characters by Excel.
|
|
103
114
|
|
|
104
115
|
==== Adding Cells
|
|
105
116
|
worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
|
|
@@ -131,26 +142,25 @@ In order to discourage unnecessary reshuffling of data in memory, methods +extra
|
|
|
131
142
|
|
|
132
143
|
==== Changing Alignment
|
|
133
144
|
===== Horizontal
|
|
134
|
-
center, distributed, justify, left, right
|
|
145
|
+
# Possible alignments: center, distributed, justify, left, right
|
|
135
146
|
worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
|
|
136
147
|
worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
|
|
137
148
|
worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
|
|
138
149
|
|
|
139
150
|
===== Vertical
|
|
140
|
-
bottom, center, distributed, top
|
|
151
|
+
# Possible alignments: bottom, center, distributed, top
|
|
141
152
|
worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
|
|
142
153
|
worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
|
|
143
154
|
worksheet.change_column_vertical_alignment(0, 'top') # Sets first column to be top aligned
|
|
144
155
|
|
|
145
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.
|
|
146
162
|
worksheet.sheet_data[0][0].change_text_rotation(90) # Sets A1 to be rotated by 90 degrees
|
|
147
163
|
|
|
148
|
-
Values:
|
|
149
|
-
* 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;
|
|
150
|
-
* 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;
|
|
151
|
-
* 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible
|
|
152
|
-
* 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.
|
|
153
|
-
|
|
154
164
|
==== Changing Row Height
|
|
155
165
|
worksheet.change_row_height(0, 30) # Sets first row height to 30
|
|
156
166
|
|
|
@@ -204,8 +214,14 @@ WARNING: Use of this method WILL break formulas referencing cells which have bee
|
|
|
204
214
|
cell = worksheet[0][0]
|
|
205
215
|
cell.set_number_format '0.0000%' # For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68
|
|
206
216
|
cell.change_text_wrap(true) # Makes the text in the cell to wrap.
|
|
217
|
+
cell.change_shrink_to_fit(true) # Makes the text in the cell to shrink to fit.
|
|
207
218
|
cell.change_text_indent(1) # Indents the text in the cell by 1 level
|
|
208
219
|
|
|
220
|
+
==== Add hyperlink to a Cell
|
|
221
|
+
cell.add_hyperlink('http://example.com')
|
|
222
|
+
cell.add_hyperlink('http://example.com', 'Some tooltip text')
|
|
223
|
+
|
|
224
|
+
|
|
209
225
|
== I/O
|
|
210
226
|
|
|
211
227
|
By default, the gem operates with files on the local filesystem:
|
|
@@ -222,6 +238,14 @@ It can also operate on +StringIO+ objects, thus eliminating the need to save the
|
|
|
222
238
|
RubyXL::Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
|
|
223
239
|
RubyXL::Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index
|
|
224
240
|
|
|
241
|
+
=== Suppress warnings about malformed input files
|
|
242
|
+
|
|
243
|
+
RubyXL.class_variable_set(:@@suppress_warnings, true)
|
|
244
|
+
|
|
245
|
+
== Data validation (colloquially referred to as "dropdown list")
|
|
246
|
+
|
|
247
|
+
worksheet.add_validation_list("A1", [ "value1", "value2" ])
|
|
248
|
+
|
|
225
249
|
== For more information
|
|
226
250
|
Take a look at the files in spec/lib/ for rspecs on most methods
|
|
227
251
|
|
|
@@ -237,5 +261,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
|
|
|
237
261
|
|
|
238
262
|
== Copyright
|
|
239
263
|
|
|
240
|
-
Copyright (c) 2011 Vivek Bhagwat, 2013-
|
|
264
|
+
Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
|
|
241
265
|
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.25
|
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
|