rubyXL 3.3.33 → 3.4.25
Sign up to get free protection for your applications and to get access to all the features.
- 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
|