rubyXL 1.2.10 → 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 +7 -0
- data/.circleci/config.yml +60 -0
- data/.codeclimate.yml +3 -0
- data/.rubocop.yml +124 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile +18 -14
- data/LICENSE.txt +1 -1
- data/README.rdoc +170 -100
- data/Rakefile +76 -26
- data/VERSION +1 -1
- data/lib/rubyXL/cell.rb +13 -447
- 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 -0
- data/lib/rubyXL/objects/border.rb +71 -0
- data/lib/rubyXL/objects/calculation_chain.rb +31 -0
- data/lib/rubyXL/objects/cell_style.rb +63 -0
- data/lib/rubyXL/objects/chartsheet.rb +88 -0
- data/lib/rubyXL/objects/color.rb +25 -0
- data/lib/rubyXL/objects/column_range.rb +93 -0
- data/lib/rubyXL/objects/comments.rb +44 -0
- data/lib/rubyXL/objects/connection.rb +175 -0
- data/lib/rubyXL/objects/container_nodes.rb +131 -0
- data/lib/rubyXL/objects/content_types.rb +74 -0
- data/lib/rubyXL/objects/data_validation.rb +37 -0
- data/lib/rubyXL/objects/document_properties.rb +156 -0
- data/lib/rubyXL/objects/extensions.rb +51 -0
- data/lib/rubyXL/objects/external_links.rb +115 -0
- data/lib/rubyXL/objects/fill.rb +52 -0
- data/lib/rubyXL/objects/filters.rb +118 -0
- data/lib/rubyXL/objects/font.rb +43 -0
- data/lib/rubyXL/objects/formula.rb +22 -0
- data/lib/rubyXL/objects/ooxml_object.rb +469 -0
- data/lib/rubyXL/objects/query_table.rb +106 -0
- data/lib/rubyXL/objects/reference.rb +119 -0
- data/lib/rubyXL/objects/relationships.rb +213 -0
- data/lib/rubyXL/objects/root.rb +84 -0
- data/lib/rubyXL/objects/shared_strings.rb +67 -0
- data/lib/rubyXL/objects/sheet_common.rb +49 -0
- data/lib/rubyXL/objects/sheet_data.rb +219 -0
- data/lib/rubyXL/objects/simple_types.rb +249 -0
- data/lib/rubyXL/objects/storage.rb +193 -0
- data/lib/rubyXL/objects/stylesheet.rb +224 -0
- data/lib/rubyXL/objects/text.rb +92 -0
- data/lib/rubyXL/objects/theme.rb +1730 -0
- data/lib/rubyXL/objects/workbook.rb +572 -0
- data/lib/rubyXL/objects/worksheet.rb +762 -0
- data/lib/rubyXL/parser.rb +18 -459
- data/lib/rubyXL/worksheet.rb +73 -1461
- data/lib/rubyXL.rb +9 -7
- data/rdoc/README_rdoc.html +534 -0
- data/rdoc/RubyXL/AExtension.html +187 -0
- data/rdoc/RubyXL/AExtensionStorageArea.html +97 -0
- data/rdoc/RubyXL/ActiveX.html +156 -0
- data/rdoc/RubyXL/ActiveXBinary.html +106 -0
- data/rdoc/RubyXL/AdjustHandleList.html +99 -0
- data/rdoc/RubyXL/Alignment.html +99 -0
- data/rdoc/RubyXL/AlternateContent.html +97 -0
- data/rdoc/RubyXL/AlternateUrls.html +99 -0
- data/rdoc/RubyXL/Authors.html +99 -0
- data/rdoc/RubyXL/AutoFilter.html +99 -0
- data/rdoc/RubyXL/AutoFilterColumn.html +99 -0
- data/rdoc/RubyXL/BinaryImageFile.html +108 -0
- data/rdoc/RubyXL/BodyProperties.html +99 -0
- data/rdoc/RubyXL/BooleanNode.html +97 -0
- data/rdoc/RubyXL/BooleanValue.html +97 -0
- data/rdoc/RubyXL/Border.html +223 -0
- data/rdoc/RubyXL/BorderEdge.html +160 -0
- data/rdoc/RubyXL/Borders.html +138 -0
- data/rdoc/RubyXL/Break.html +99 -0
- data/rdoc/RubyXL/BreakList.html +99 -0
- data/rdoc/RubyXL/CT_AdjPoint2D.html +99 -0
- data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +99 -0
- data/rdoc/RubyXL/CT_AlphaModulateEffect.html +99 -0
- data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +99 -0
- data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +99 -0
- data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +99 -0
- data/rdoc/RubyXL/CT_Backdrop.html +99 -0
- data/rdoc/RubyXL/CT_Bevel.html +99 -0
- data/rdoc/RubyXL/CT_BiLevelEffect.html +99 -0
- data/rdoc/RubyXL/CT_BlendEffect.html +99 -0
- data/rdoc/RubyXL/CT_Blip.html +99 -0
- data/rdoc/RubyXL/CT_BlipFillProperties.html +99 -0
- data/rdoc/RubyXL/CT_BlurEffect.html +99 -0
- data/rdoc/RubyXL/CT_Camera.html +99 -0
- data/rdoc/RubyXL/CT_Color.html +99 -0
- data/rdoc/RubyXL/CT_ColorChangeEffect.html +99 -0
- data/rdoc/RubyXL/CT_ColorMapping.html +99 -0
- data/rdoc/RubyXL/CT_ColorScheme.html +99 -0
- data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +99 -0
- data/rdoc/RubyXL/CT_ConnectionSite.html +99 -0
- data/rdoc/RubyXL/CT_ConnectionSiteList.html +99 -0
- data/rdoc/RubyXL/CT_DashStop.html +99 -0
- data/rdoc/RubyXL/CT_DashStopList.html +99 -0
- data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +99 -0
- data/rdoc/RubyXL/CT_DuotoneEffect.html +99 -0
- data/rdoc/RubyXL/CT_EffectContainer.html +99 -0
- data/rdoc/RubyXL/CT_EffectList.html +99 -0
- data/rdoc/RubyXL/CT_EffectReference.html +99 -0
- data/rdoc/RubyXL/CT_EffectStyleItem.html +99 -0
- data/rdoc/RubyXL/CT_EffectStyleList.html +99 -0
- data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +99 -0
- data/rdoc/RubyXL/CT_FillEffect.html +99 -0
- data/rdoc/RubyXL/CT_FillOverlayEffect.html +99 -0
- data/rdoc/RubyXL/CT_FillStyleList.html +99 -0
- data/rdoc/RubyXL/CT_FlatText.html +99 -0
- data/rdoc/RubyXL/CT_FontCollection.html +99 -0
- data/rdoc/RubyXL/CT_FontReference.html +99 -0
- data/rdoc/RubyXL/CT_GeomGuideList.html +99 -0
- data/rdoc/RubyXL/CT_GlowEffect.html +99 -0
- data/rdoc/RubyXL/CT_GradientFillProperties.html +99 -0
- data/rdoc/RubyXL/CT_GradientStop.html +99 -0
- data/rdoc/RubyXL/CT_GradientStopList.html +99 -0
- data/rdoc/RubyXL/CT_HSLEffect.html +99 -0
- data/rdoc/RubyXL/CT_HslColor.html +99 -0
- data/rdoc/RubyXL/CT_Hyperlink.html +99 -0
- data/rdoc/RubyXL/CT_InnerShadowEffect.html +99 -0
- data/rdoc/RubyXL/CT_LightRig.html +99 -0
- data/rdoc/RubyXL/CT_LineEndProperties.html +99 -0
- data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +99 -0
- data/rdoc/RubyXL/CT_LineProperties.html +99 -0
- data/rdoc/RubyXL/CT_LineStyleList.html +99 -0
- data/rdoc/RubyXL/CT_LinearShadeProperties.html +99 -0
- data/rdoc/RubyXL/CT_LuminanceEffect.html +99 -0
- data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +99 -0
- data/rdoc/RubyXL/CT_OuterShadowEffect.html +99 -0
- data/rdoc/RubyXL/CT_Path2D.html +99 -0
- data/rdoc/RubyXL/CT_Path2DArcTo.html +99 -0
- data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +99 -0
- data/rdoc/RubyXL/CT_Path2DList.html +99 -0
- data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +99 -0
- data/rdoc/RubyXL/CT_Path2DTo.html +99 -0
- data/rdoc/RubyXL/CT_PathShadeProperties.html +99 -0
- data/rdoc/RubyXL/CT_PatternFillProperties.html +99 -0
- data/rdoc/RubyXL/CT_Point3D.html +99 -0
- data/rdoc/RubyXL/CT_PolarAdjustHandle.html +99 -0
- data/rdoc/RubyXL/CT_PresetColor.html +99 -0
- data/rdoc/RubyXL/CT_PresetLineDashProperties.html +99 -0
- data/rdoc/RubyXL/CT_PresetShadowEffect.html +99 -0
- data/rdoc/RubyXL/CT_PresetTextShape.html +99 -0
- data/rdoc/RubyXL/CT_ReflectionEffect.html +99 -0
- data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +99 -0
- data/rdoc/RubyXL/CT_RelativeRect.html +99 -0
- data/rdoc/RubyXL/CT_SRgbColor.html +99 -0
- data/rdoc/RubyXL/CT_ScRgbColor.html +99 -0
- data/rdoc/RubyXL/CT_Scene3D.html +99 -0
- data/rdoc/RubyXL/CT_SchemeColor.html +99 -0
- data/rdoc/RubyXL/CT_Shape3D.html +99 -0
- data/rdoc/RubyXL/CT_ShapeStyle.html +99 -0
- data/rdoc/RubyXL/CT_SoftEdgesEffect.html +99 -0
- data/rdoc/RubyXL/CT_SphereCoords.html +99 -0
- data/rdoc/RubyXL/CT_StretchInfoProperties.html +99 -0
- data/rdoc/RubyXL/CT_StyleMatrix.html +99 -0
- data/rdoc/RubyXL/CT_StyleMatrixReference.html +99 -0
- data/rdoc/RubyXL/CT_SupplementalFont.html +99 -0
- data/rdoc/RubyXL/CT_SystemColor.html +99 -0
- data/rdoc/RubyXL/CT_TextAutonumberBullet.html +99 -0
- data/rdoc/RubyXL/CT_TextBlipBullet.html +99 -0
- data/rdoc/RubyXL/CT_TextCharBullet.html +99 -0
- data/rdoc/RubyXL/CT_TextCharacterProperties.html +99 -0
- data/rdoc/RubyXL/CT_TextFont.html +99 -0
- data/rdoc/RubyXL/CT_TextListStyle.html +99 -0
- data/rdoc/RubyXL/CT_TextNormalAutofit.html +99 -0
- data/rdoc/RubyXL/CT_TextParagraphProperties.html +99 -0
- data/rdoc/RubyXL/CT_TextSpacing.html +99 -0
- data/rdoc/RubyXL/CT_TextTabStop.html +99 -0
- data/rdoc/RubyXL/CT_TextTabStopList.html +99 -0
- data/rdoc/RubyXL/CT_TileInfoProperties.html +99 -0
- data/rdoc/RubyXL/CT_TintEffect.html +99 -0
- data/rdoc/RubyXL/CT_Transform2D.html +99 -0
- data/rdoc/RubyXL/CT_TransformEffect.html +99 -0
- data/rdoc/RubyXL/CT_Vector3D.html +99 -0
- data/rdoc/RubyXL/CT_XYAdjustHandle.html +99 -0
- data/rdoc/RubyXL/CalculationChain.html +149 -0
- data/rdoc/RubyXL/CalculationChainCell.html +99 -0
- data/rdoc/RubyXL/CalculationProperties.html +99 -0
- data/rdoc/RubyXL/Cell.html +510 -0
- data/rdoc/RubyXL/CellConvenienceMethods.html +1077 -0
- data/rdoc/RubyXL/CellExt.html +99 -0
- data/rdoc/RubyXL/CellSmartTag.html +99 -0
- data/rdoc/RubyXL/CellSmartTagProperty.html +99 -0
- data/rdoc/RubyXL/CellSmartTags.html +99 -0
- data/rdoc/RubyXL/CellStyle.html +99 -0
- data/rdoc/RubyXL/CellStyleXFs.html +138 -0
- data/rdoc/RubyXL/CellStyles.html +138 -0
- data/rdoc/RubyXL/CellValue.html +139 -0
- data/rdoc/RubyXL/CellWatch.html +99 -0
- data/rdoc/RubyXL/CellWatches.html +99 -0
- data/rdoc/RubyXL/CellXFs.html +139 -0
- data/rdoc/RubyXL/ChartColorsFile.html +108 -0
- data/rdoc/RubyXL/ChartFile.html +160 -0
- data/rdoc/RubyXL/ChartStyleFile.html +108 -0
- data/rdoc/RubyXL/ChartUserShapesFile.html +108 -0
- data/rdoc/RubyXL/Chartsheet.html +213 -0
- data/rdoc/RubyXL/ChartsheetPageSetup.html +99 -0
- data/rdoc/RubyXL/ChartsheetProperties.html +99 -0
- data/rdoc/RubyXL/ChartsheetProtection.html +99 -0
- data/rdoc/RubyXL/ChartsheetView.html +99 -0
- data/rdoc/RubyXL/ChartsheetViews.html +99 -0
- data/rdoc/RubyXL/Color.html +151 -0
- 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 +99 -0
- data/rdoc/RubyXL/ColorScale.html +99 -0
- data/rdoc/RubyXL/ColorSet.html +99 -0
- data/rdoc/RubyXL/Colors.html +99 -0
- data/rdoc/RubyXL/ColumnRange.html +230 -0
- data/rdoc/RubyXL/ColumnRanges.html +237 -0
- data/rdoc/RubyXL/Comment.html +99 -0
- data/rdoc/RubyXL/CommentList.html +99 -0
- data/rdoc/RubyXL/CommentsFile.html +165 -0
- data/rdoc/RubyXL/ConditionalFormatValue.html +99 -0
- data/rdoc/RubyXL/ConditionalFormatting.html +99 -0
- data/rdoc/RubyXL/ConditionalFormattingRule.html +99 -0
- 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 +97 -0
- data/rdoc/RubyXL/ContentTypeOverride.html +97 -0
- data/rdoc/RubyXL/ContentTypes.html +211 -0
- data/rdoc/RubyXL/ControlPropertiesFile.html +108 -0
- data/rdoc/RubyXL/CorePropertiesFile.html +355 -0
- data/rdoc/RubyXL/CustomColor.html +99 -0
- data/rdoc/RubyXL/CustomColorList.html +99 -0
- data/rdoc/RubyXL/CustomFilter.html +99 -0
- data/rdoc/RubyXL/CustomFilters.html +99 -0
- data/rdoc/RubyXL/CustomGeometry.html +99 -0
- data/rdoc/RubyXL/CustomProperties.html +99 -0
- data/rdoc/RubyXL/CustomPropertiesFile.html +108 -0
- data/rdoc/RubyXL/CustomProperty.html +99 -0
- data/rdoc/RubyXL/CustomPropertyFile.html +108 -0
- data/rdoc/RubyXL/CustomSheetView.html +99 -0
- data/rdoc/RubyXL/CustomSheetViews.html +99 -0
- data/rdoc/RubyXL/CustomWorkbookView.html +99 -0
- data/rdoc/RubyXL/CustomWorkbookViews.html +99 -0
- data/rdoc/RubyXL/CustomXMLFile.html +106 -0
- data/rdoc/RubyXL/DXF.html +99 -0
- data/rdoc/RubyXL/DXFs.html +99 -0
- data/rdoc/RubyXL/DataBar.html +99 -0
- data/rdoc/RubyXL/DataConsolidate.html +99 -0
- data/rdoc/RubyXL/DataConsolidationReference.html +99 -0
- data/rdoc/RubyXL/DataConsolidationReferences.html +99 -0
- data/rdoc/RubyXL/DataType.html +114 -0
- data/rdoc/RubyXL/DataValidation.html +99 -0
- data/rdoc/RubyXL/DataValidations.html +99 -0
- data/rdoc/RubyXL/DateGroupItem.html +99 -0
- data/rdoc/RubyXL/DefinedName.html +99 -0
- data/rdoc/RubyXL/DefinedNameExt.html +99 -0
- data/rdoc/RubyXL/DefinedNames.html +99 -0
- data/rdoc/RubyXL/DefinedNamesExt.html +99 -0
- data/rdoc/RubyXL/DocumentPropertiesFile.html +213 -0
- data/rdoc/RubyXL/DrawingFile.html +159 -0
- data/rdoc/RubyXL/DynamicFilter.html +99 -0
- data/rdoc/RubyXL/EmbeddedControl.html +99 -0
- data/rdoc/RubyXL/EmbeddedControls.html +99 -0
- data/rdoc/RubyXL/Extension.html +99 -0
- data/rdoc/RubyXL/ExtensionStorageArea.html +99 -0
- data/rdoc/RubyXL/Extents.html +99 -0
- data/rdoc/RubyXL/ExternalBook.html +99 -0
- data/rdoc/RubyXL/ExternalLinksFile.html +155 -0
- data/rdoc/RubyXL/ExternalReference.html +99 -0
- data/rdoc/RubyXL/ExternalReferences.html +99 -0
- data/rdoc/RubyXL/ExtraColorSchemeList.html +99 -0
- data/rdoc/RubyXL/FieldItem.html +99 -0
- data/rdoc/RubyXL/FileRecoveryProperties.html +99 -0
- data/rdoc/RubyXL/FileSharing.html +99 -0
- data/rdoc/RubyXL/FileVersion.html +99 -0
- data/rdoc/RubyXL/Fill.html +138 -0
- data/rdoc/RubyXL/Fills.html +138 -0
- data/rdoc/RubyXL/FilterContainer.html +99 -0
- data/rdoc/RubyXL/FloatNode.html +97 -0
- data/rdoc/RubyXL/FloatValue.html +97 -0
- data/rdoc/RubyXL/Font.html +148 -0
- data/rdoc/RubyXL/FontConvenienceMethods.html +442 -0
- data/rdoc/RubyXL/FontScheme.html +99 -0
- data/rdoc/RubyXL/Fonts.html +138 -0
- data/rdoc/RubyXL/Formula.html +99 -0
- data/rdoc/RubyXL/FunctionGroup.html +99 -0
- data/rdoc/RubyXL/FunctionGroups.html +99 -0
- data/rdoc/RubyXL/GenericStorageObject.html +241 -0
- data/rdoc/RubyXL/GradientFill.html +99 -0
- data/rdoc/RubyXL/HeaderFooterSettings.html +99 -0
- data/rdoc/RubyXL/Hyperlink.html +99 -0
- data/rdoc/RubyXL/HyperlinkRelFile.html +106 -0
- data/rdoc/RubyXL/Hyperlinks.html +99 -0
- data/rdoc/RubyXL/IconFilter.html +99 -0
- data/rdoc/RubyXL/IconSet.html +99 -0
- data/rdoc/RubyXL/IgnoredError.html +99 -0
- data/rdoc/RubyXL/IgnoredErrors.html +99 -0
- data/rdoc/RubyXL/IndexedColors.html +99 -0
- data/rdoc/RubyXL/InputCells.html +99 -0
- data/rdoc/RubyXL/IntegerNode.html +97 -0
- data/rdoc/RubyXL/IntegerValue.html +97 -0
- data/rdoc/RubyXL/LegacyCell.html +130 -0
- data/rdoc/RubyXL/LegacyWorksheet.html +306 -0
- data/rdoc/RubyXL/MRUColors.html +99 -0
- data/rdoc/RubyXL/MacrosFile.html +108 -0
- data/rdoc/RubyXL/MergedCell.html +99 -0
- data/rdoc/RubyXL/MergedCells.html +99 -0
- data/rdoc/RubyXL/NumFmt.html +99 -0
- data/rdoc/RubyXL/NumberFormat.html +139 -0
- data/rdoc/RubyXL/NumberFormats.html +147 -0
- data/rdoc/RubyXL/OLEObject.html +99 -0
- data/rdoc/RubyXL/OLEObjectFile.html +108 -0
- data/rdoc/RubyXL/OLEObjects.html +99 -0
- data/rdoc/RubyXL/OLESize.html +99 -0
- data/rdoc/RubyXL/OOXMLContainerObject.html +309 -0
- data/rdoc/RubyXL/OOXMLIgnored.html +167 -0
- data/rdoc/RubyXL/OOXMLObject.html +107 -0
- data/rdoc/RubyXL/OOXMLObjectClassMethods.html +455 -0
- data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +442 -0
- data/rdoc/RubyXL/OOXMLRelationshipsFile.html +470 -0
- data/rdoc/RubyXL/OOXMLTopLevelObject.html +297 -0
- data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
- data/rdoc/RubyXL/Offset.html +99 -0
- 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 +99 -0
- data/rdoc/RubyXL/PageMargins.html +99 -0
- data/rdoc/RubyXL/PageSetup.html +99 -0
- data/rdoc/RubyXL/PageSetupProperties.html +99 -0
- data/rdoc/RubyXL/Pane.html +99 -0
- data/rdoc/RubyXL/Parser.html +174 -0
- data/rdoc/RubyXL/PatternFill.html +99 -0
- data/rdoc/RubyXL/PersonMetadata.html +108 -0
- data/rdoc/RubyXL/PhoneticProperties.html +99 -0
- data/rdoc/RubyXL/PhoneticRun.html +99 -0
- data/rdoc/RubyXL/PivotArea.html +99 -0
- data/rdoc/RubyXL/PivotCache.html +99 -0
- data/rdoc/RubyXL/PivotCacheDefinitionFile.html +116 -0
- data/rdoc/RubyXL/PivotCacheRecordsFile.html +108 -0
- data/rdoc/RubyXL/PivotCaches.html +99 -0
- data/rdoc/RubyXL/PivotReference.html +99 -0
- data/rdoc/RubyXL/PivotReferences.html +99 -0
- data/rdoc/RubyXL/PivotTableFile.html +116 -0
- data/rdoc/RubyXL/PivotTableSelection.html +99 -0
- data/rdoc/RubyXL/PresetGeometry.html +99 -0
- data/rdoc/RubyXL/PrintOptions.html +99 -0
- data/rdoc/RubyXL/PrinterSettingsFile.html +108 -0
- data/rdoc/RubyXL/ProtectedRange.html +99 -0
- data/rdoc/RubyXL/ProtectedRanges.html +99 -0
- data/rdoc/RubyXL/Protection.html +99 -0
- 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 +97 -0
- data/rdoc/RubyXL/RawOOXML.html +187 -0
- data/rdoc/RubyXL/Reference.html +510 -0
- data/rdoc/RubyXL/Relationship.html +97 -0
- data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +131 -0
- data/rdoc/RubyXL/RelationshipSupport.html +336 -0
- data/rdoc/RubyXL/RevisionPointer.html +99 -0
- data/rdoc/RubyXL/RichText.html +141 -0
- data/rdoc/RubyXL/RichTextRun.html +138 -0
- data/rdoc/RubyXL/Row.html +357 -0
- data/rdoc/RubyXL/RowExt.html +99 -0
- data/rdoc/RubyXL/RunProperties.html +99 -0
- data/rdoc/RubyXL/Scenario.html +99 -0
- data/rdoc/RubyXL/Scenarios.html +99 -0
- data/rdoc/RubyXL/Selection.html +146 -0
- data/rdoc/RubyXL/ShapeGuide.html +99 -0
- data/rdoc/RubyXL/ShapeTextRectangle.html +99 -0
- data/rdoc/RubyXL/SharedStringsTable.html +328 -0
- data/rdoc/RubyXL/Sheet.html +99 -0
- data/rdoc/RubyXL/SheetCalculationProperties.html +99 -0
- data/rdoc/RubyXL/SheetData.html +162 -0
- data/rdoc/RubyXL/SheetDataExt.html +99 -0
- data/rdoc/RubyXL/SheetDataSet.html +99 -0
- data/rdoc/RubyXL/SheetMetadata.html +108 -0
- data/rdoc/RubyXL/SheetName.html +99 -0
- data/rdoc/RubyXL/SheetNames.html +99 -0
- data/rdoc/RubyXL/Sheets.html +99 -0
- data/rdoc/RubyXL/SlicerCacheFile.html +108 -0
- data/rdoc/RubyXL/SlicerFile.html +108 -0
- data/rdoc/RubyXL/SmartTagProperties.html +99 -0
- data/rdoc/RubyXL/SmartTagType.html +99 -0
- data/rdoc/RubyXL/SmartTagTypes.html +99 -0
- data/rdoc/RubyXL/SmartTags.html +99 -0
- data/rdoc/RubyXL/SortCondition.html +99 -0
- data/rdoc/RubyXL/SortState.html +99 -0
- data/rdoc/RubyXL/Sqref.html +167 -0
- data/rdoc/RubyXL/Stop.html +99 -0
- data/rdoc/RubyXL/StringNode.html +97 -0
- data/rdoc/RubyXL/StringNodeW3C.html +167 -0
- data/rdoc/RubyXL/StringValue.html +97 -0
- data/rdoc/RubyXL/Stylesheet.html +281 -0
- data/rdoc/RubyXL/TableFile.html +108 -0
- data/rdoc/RubyXL/TableParts.html +97 -0
- data/rdoc/RubyXL/TableStyle.html +99 -0
- data/rdoc/RubyXL/TableStyles.html +99 -0
- data/rdoc/RubyXL/Text.html +175 -0
- data/rdoc/RubyXL/TextImportSettings.html +99 -0
- data/rdoc/RubyXL/Theme.html +535 -0
- data/rdoc/RubyXL/ThemeElements.html +99 -0
- data/rdoc/RubyXL/ThumbnailFile.html +108 -0
- data/rdoc/RubyXL/Top10.html +99 -0
- data/rdoc/RubyXL/VMLDrawingFile.html +116 -0
- data/rdoc/RubyXL/Variant.html +99 -0
- data/rdoc/RubyXL/Vector.html +142 -0
- data/rdoc/RubyXL/VectorValue.html +97 -0
- data/rdoc/RubyXL/VisualProperties.html +99 -0
- data/rdoc/RubyXL/WebPublishObject.html +99 -0
- data/rdoc/RubyXL/WebPublishObjects.html +99 -0
- data/rdoc/RubyXL/WebPublishingItem.html +99 -0
- data/rdoc/RubyXL/WebPublishingItems.html +99 -0
- data/rdoc/RubyXL/WebPublishingProperties.html +99 -0
- data/rdoc/RubyXL/WebQueryProperties.html +99 -0
- data/rdoc/RubyXL/Workbook.html +948 -0
- data/rdoc/RubyXL/WorkbookConvenienceMethods.html +596 -0
- data/rdoc/RubyXL/WorkbookProperties.html +99 -0
- data/rdoc/RubyXL/WorkbookProtection.html +99 -0
- data/rdoc/RubyXL/WorkbookRoot.html +325 -0
- data/rdoc/RubyXL/WorkbookView.html +99 -0
- data/rdoc/RubyXL/WorkbookViews.html +99 -0
- data/rdoc/RubyXL/Worksheet.html +418 -0
- data/rdoc/RubyXL/WorksheetConvenienceMethods.html +2205 -0
- data/rdoc/RubyXL/WorksheetDimensions.html +99 -0
- data/rdoc/RubyXL/WorksheetFormatProperties.html +97 -0
- data/rdoc/RubyXL/WorksheetProperties.html +99 -0
- data/rdoc/RubyXL/WorksheetProtection.html +99 -0
- data/rdoc/RubyXL/WorksheetView.html +99 -0
- data/rdoc/RubyXL/WorksheetViews.html +99 -0
- data/rdoc/RubyXL/XF.html +99 -0
- data/rdoc/RubyXL.html +338 -0
- data/rdoc/created.rid +45 -0
- data/rdoc/css/fonts.css +167 -0
- data/rdoc/css/rdoc.css +687 -0
- data/rdoc/fonts/Lato-Light.ttf +0 -0
- data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
- data/rdoc/fonts/Lato-Regular.ttf +0 -0
- data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
- data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
- data/rdoc/images/add.png +0 -0
- data/rdoc/images/arrow_up.png +0 -0
- data/rdoc/images/brick.png +0 -0
- data/rdoc/images/brick_link.png +0 -0
- data/rdoc/images/bug.png +0 -0
- data/rdoc/images/bullet_black.png +0 -0
- data/rdoc/images/bullet_toggle_minus.png +0 -0
- data/rdoc/images/bullet_toggle_plus.png +0 -0
- data/rdoc/images/date.png +0 -0
- data/rdoc/images/delete.png +0 -0
- data/rdoc/images/find.png +0 -0
- data/rdoc/images/loadingAnimation.gif +0 -0
- data/rdoc/images/macFFBgHack.png +0 -0
- data/rdoc/images/package.png +0 -0
- data/rdoc/images/page_green.png +0 -0
- data/rdoc/images/page_white_text.png +0 -0
- data/rdoc/images/page_white_width.png +0 -0
- data/rdoc/images/plugin.png +0 -0
- data/rdoc/images/ruby.png +0 -0
- data/rdoc/images/tag_blue.png +0 -0
- data/rdoc/images/tag_green.png +0 -0
- data/rdoc/images/transparent.png +0 -0
- data/rdoc/images/wrench.png +0 -0
- data/rdoc/images/wrench_orange.png +0 -0
- data/rdoc/images/zoom.png +0 -0
- data/rdoc/index.html +477 -0
- data/rdoc/js/darkfish.js +97 -0
- data/rdoc/js/navigation.js +105 -0
- data/rdoc/js/navigation.js.gz +0 -0
- data/rdoc/js/search.js +110 -0
- data/rdoc/js/search_index.js +1 -0
- data/rdoc/js/search_index.js.gz +0 -0
- data/rdoc/js/searcher.js +229 -0
- data/rdoc/js/searcher.js.gz +0 -0
- data/rdoc/table_of_contents.html +3021 -0
- data/rubyXL.gemspec +521 -60
- data/spec/lib/cell_spec.rb +386 -143
- data/spec/lib/color_spec.rb +11 -4
- data/spec/lib/parser_spec.rb +90 -38
- data/spec/lib/reference_spec.rb +64 -0
- data/spec/lib/rgb_color_spec.rb +29 -0
- data/spec/lib/stylesheet_spec.rb +27 -0
- data/spec/lib/text_spec.rb +27 -0
- data/spec/lib/workbook_spec.rb +168 -22
- data/spec/lib/worksheet_spec.rb +1207 -1220
- data/spec/spec_helper.rb +13 -0
- data/test/input/.gitkeep +0 -0
- data/test/output/.gitkeep +0 -0
- data/test/test_parse_write.rb +15 -0
- data/tmp/.gitignore +1 -0
- metadata +634 -168
- data/Gemfile.lock +0 -34
- data/lib/.DS_Store +0 -0
- data/lib/rubyXL/Hash.rb +0 -60
- data/lib/rubyXL/color.rb +0 -14
- data/lib/rubyXL/private_class.rb +0 -265
- data/lib/rubyXL/workbook.rb +0 -450
- data/lib/rubyXL/writer/app_writer.rb +0 -62
- data/lib/rubyXL/writer/calc_chain_writer.rb +0 -33
- data/lib/rubyXL/writer/content_types_writer.rb +0 -77
- data/lib/rubyXL/writer/core_writer.rb +0 -51
- data/lib/rubyXL/writer/root_rels_writer.rb +0 -25
- data/lib/rubyXL/writer/shared_strings_writer.rb +0 -30
- data/lib/rubyXL/writer/styles_writer.rb +0 -407
- data/lib/rubyXL/writer/theme_writer.rb +0 -343
- data/lib/rubyXL/writer/workbook_rels_writer.rb +0 -59
- data/lib/rubyXL/writer/workbook_writer.rb +0 -77
- data/lib/rubyXL/writer/worksheet_writer.rb +0 -230
- data/lib/rubyXL/zip.rb +0 -20
- data/spec/lib/hash_spec.rb +0 -28
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 14119a8af99822bbe1fd209a060d5374e92fe921750766cc83fa2cebdf586963
|
4
|
+
data.tar.gz: a3870a59650bd9b32c82bd6ad950aa720cb9f50370b96956eecb522d1c8e8fce
|
5
|
+
SHA512:
|
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/.codeclimate.yml
ADDED
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,16 +1,20 @@
|
|
1
|
-
source
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
1
|
+
source 'http://rubygems.org'
|
5
2
|
|
6
|
-
#
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
gem
|
13
|
-
gem
|
14
|
-
gem
|
15
|
-
gem
|
3
|
+
# Dependencies required to run this gem.
|
4
|
+
gem 'nokogiri', '>= 1.10.8'
|
5
|
+
gem 'rubyzip', '>= 1.3.0' , :require => 'zip'
|
6
|
+
|
7
|
+
# Development dependencies.
|
8
|
+
group :development, :test do
|
9
|
+
gem 'bundler'
|
10
|
+
gem 'rake'
|
11
|
+
gem 'juwelier'
|
12
|
+
gem 'rspec'
|
13
|
+
gem 'simplecov'
|
14
|
+
|
15
|
+
# gem 'stackprof'
|
16
|
+
gem 'ruby-prof'
|
17
|
+
gem 'rspec_junit_formatter'
|
18
|
+
|
19
|
+
gem 'rubocop'
|
16
20
|
end
|
data/LICENSE.txt
CHANGED
data/README.rdoc
CHANGED
@@ -1,181 +1,252 @@
|
|
1
1
|
= rubyXL
|
2
|
+
{rdoc-image:https://badge.fury.io/rb/rubyXL.svg}[http://badge.fury.io/rb/rubyXL]
|
3
|
+
{rdoc-image:https://codeclimate.com/github/weshatheleopard/rubyXL.png}[https://codeclimate.com/github/weshatheleopard/rubyXL]
|
4
|
+
{rdoc-image:https://circleci.com/gh/weshatheleopard/rubyXL.svg?style=svg}[https://circleci.com/gh/weshatheleopard/rubyXL]
|
5
|
+
|
6
|
+
This gem supports operating on +xlsx+ files (Open XML format). While it is capable
|
7
|
+
of properly parsing the entire OOXML structure, its current main emphasis is on
|
8
|
+
reading files produced by MS Excel, making minor modifications to them and saving
|
9
|
+
them to be opened again, while preserving as much of the structure as possible.
|
10
|
+
|
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.
|
2
12
|
|
3
13
|
== To Install:
|
4
14
|
gem install rubyXL
|
5
15
|
|
6
16
|
== To Use:
|
7
|
-
require 'rubyXL' #
|
17
|
+
require 'rubyXL' # Assuming rubygems is already required
|
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'
|
8
30
|
|
9
31
|
=== Parsing an existing workbook
|
10
32
|
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
|
11
33
|
|
12
|
-
|
13
34
|
=== Creating a new Workbook
|
14
35
|
workbook = RubyXL::Workbook.new
|
15
36
|
|
16
37
|
=== Accessing
|
17
38
|
|
18
39
|
==== Accessing a Worksheet
|
19
|
-
workbook.worksheets[0] #
|
20
|
-
workbook[0]
|
21
|
-
|
22
|
-
==== Accessing Only the Values
|
23
|
-
workbook.worksheets[0].extract_data #produces a 2d array which consists only of the values (instead of the Cell objects which include other variables)
|
40
|
+
workbook.worksheets[0] # Returns first worksheet
|
41
|
+
workbook[0] # Returns first worksheet
|
42
|
+
workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1". Note that sheet names in Excel are limited to 31 character.
|
24
43
|
|
25
44
|
==== Accessing a Row (Array of Cells)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
workbook[0]
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
workbook[0]
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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>.
|
46
|
+
|
47
|
+
worksheet = workbook[0]
|
48
|
+
worksheet.sheet_data[0] # Returns first row of the worksheet
|
49
|
+
worksheet[0] # Returns first row of the worksheet
|
50
|
+
|
51
|
+
==== Accessing a Cell object
|
52
|
+
Please note that row is a _sparse_ array of cells. Your code *must* expect that any cell it plucks from the array may be <tt>nil</tt>.
|
53
|
+
|
54
|
+
worksheet = workbook[0]
|
55
|
+
worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
|
56
|
+
worksheet[0][0] # Returns cell A1 in the worksheet
|
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
|
+
|
66
|
+
==== Wrappers for accessing Cell properties
|
67
|
+
cell = workbook[0][0][0]
|
68
|
+
cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
|
69
|
+
cell.font_name
|
70
|
+
cell.font_size
|
71
|
+
cell.font_color
|
72
|
+
cell.fill_color
|
73
|
+
cell.horizontal_alignment
|
74
|
+
cell.vertical_alignment
|
75
|
+
cell.get_border(:top)
|
76
|
+
cell.get_border_color(:top)
|
77
|
+
cell.text_rotation
|
78
|
+
|
79
|
+
==== Wrappers for accessing Row properties
|
80
|
+
Please note: these methods are being phased out in favor of the OOXML object model.
|
81
|
+
worksheet = workbook[0]
|
82
|
+
worksheet.get_row_fill(0)
|
83
|
+
worksheet.get_row_font_name(0)
|
84
|
+
worksheet.get_row_font_size(0)
|
85
|
+
worksheet.get_row_font_color(0)
|
86
|
+
worksheet.is_row_underlined(0)
|
87
|
+
worksheet.get_row_height(0)
|
88
|
+
worksheet.get_row_alignment(0, true)
|
89
|
+
worksheet.get_row_alignment(0, false)
|
90
|
+
worksheet.get_row_border(0, :right)
|
91
|
+
worksheet.get_row_border_color(0, :right)
|
53
92
|
|
54
93
|
==== Accessing column properties
|
55
|
-
|
56
|
-
workbook[0]
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
#it returns the following structure
|
68
|
-
{
|
69
|
-
:Name=>["John", "Jane", "Joe"],
|
70
|
-
:Height=>[70, 65, 68],
|
71
|
-
:Age=>[30, 25, 35]
|
72
|
-
:table=>[
|
73
|
-
{:Name=>"John", :Height=>70, :Age=>30},
|
74
|
-
{:Name=>"Jane", :Height=>65, :Age=>25},
|
75
|
-
{:Name=>"Joe", :Height=>68, :Age=>35}
|
76
|
-
]
|
77
|
-
}
|
94
|
+
Please note: these methods are being phased out in favor of the OOXML object model.
|
95
|
+
worksheet = workbook[0]
|
96
|
+
worksheet.get_column_fill(0)
|
97
|
+
worksheet.get_column_font_name(0)
|
98
|
+
worksheet.get_column_font_size(0)
|
99
|
+
worksheet.get_column_font_color(0)
|
100
|
+
worksheet.is_column_underlined(0)
|
101
|
+
worksheet.get_column_width(0)
|
102
|
+
worksheet.get_column_alignment(0, :horizontal)
|
103
|
+
worksheet.get_column_alignment(0, :vertical)
|
104
|
+
worksheet.get_column_border(0, :right)
|
105
|
+
worksheet.get_column_border_color(0, :right)
|
78
106
|
|
79
107
|
=== Modifying
|
80
108
|
|
81
109
|
==== Adding Worksheets
|
82
|
-
|
110
|
+
worksheet = workbook.add_worksheet('Sheet2')
|
111
|
+
|
112
|
+
==== Renaming Worksheets
|
113
|
+
worksheet.sheet_name = 'Cool New Name' # Note that sheet name is limited to 31 characters by Excel.
|
83
114
|
|
84
115
|
==== Adding Cells
|
85
|
-
|
86
|
-
|
116
|
+
worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
|
117
|
+
worksheet.add_cell(0, 1, '', 'A1') # Sets formula in the cell B1 to '=A1'
|
87
118
|
|
88
|
-
workbook.worksheets[0].add_cell_obj(Cell.new(1,0,'blah')) #sets A2 to 'blah'
|
89
|
-
|
90
119
|
==== Changing Cells
|
91
|
-
|
120
|
+
worksheet[0][0].change_contents("", worksheet[0][0].formula) # Sets value of cell A1 to empty string, preserves formula
|
92
121
|
|
93
122
|
==== Changing Fonts
|
94
|
-
|
95
|
-
|
96
|
-
|
123
|
+
worksheet.sheet_data[0][0].change_font_bold(true) # Makes A1 bold
|
124
|
+
worksheet.change_row_italics(0,true) # Makes first row italicized
|
125
|
+
worksheet.change_column_font_name(0, 'Courier') # Makes first column have font Courier
|
97
126
|
|
98
127
|
==== Changing Fills
|
99
|
-
|
100
|
-
|
101
|
-
|
128
|
+
worksheet.sheet_data[0][0].change_fill('0ba53d') # Sets A1 to have fill #0ba53d
|
129
|
+
worksheet.change_row_fill(0, '0ba53d') # Sets first row to have fill #0ba53d
|
130
|
+
worksheet.change_column_fill(0, '0ba53d') # Sets first column to have fill #0ba53d
|
102
131
|
|
103
132
|
==== Changing Borders
|
104
133
|
# Possible weights: hairline, thin, medium, thick
|
105
134
|
# Possible "directions": top, bottom, left, right, diagonal
|
106
|
-
|
107
|
-
|
108
|
-
|
135
|
+
worksheet.sheet_data[0][0].change_border(:top, 'thin') # Sets A1 to have a top, thin border
|
136
|
+
worksheet.change_row_border(0, :left, 'hairline') # Sets first row to have a left, hairline border
|
137
|
+
worksheet.change_column_border(0, :diagonal, 'medium') # Sets first column to have diagonal, medium border
|
138
|
+
|
139
|
+
# Set the border style first so there's something to color.
|
140
|
+
worksheet.change_row_border_color(0, :top, '0ba53d') # Sets first row to have a green top border
|
141
|
+
worksheet.change_column_border_color(0, :top, '0ba53d') # Sets first column to have a green top border
|
109
142
|
|
110
143
|
==== Changing Alignment
|
111
144
|
===== Horizontal
|
112
|
-
center, distributed, justify, left, right
|
113
|
-
|
114
|
-
|
115
|
-
|
145
|
+
# Possible alignments: center, distributed, justify, left, right
|
146
|
+
worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
|
147
|
+
worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
|
148
|
+
worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
|
116
149
|
|
117
150
|
===== Vertical
|
118
|
-
bottom, center, distributed, top
|
119
|
-
|
120
|
-
|
121
|
-
|
151
|
+
# Possible alignments: bottom, center, distributed, top
|
152
|
+
worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
|
153
|
+
worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
|
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
|
122
163
|
|
123
164
|
==== Changing Row Height
|
124
|
-
|
165
|
+
worksheet.change_row_height(0, 30) # Sets first row height to 30
|
125
166
|
|
126
167
|
==== Changing Column Width
|
127
|
-
|
168
|
+
worksheet.change_column_width(0, 30) # Sets first column width to 30
|
128
169
|
|
129
170
|
==== Merging Cells
|
130
|
-
|
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
|
131
174
|
|
132
175
|
==== Insert Row
|
133
176
|
This method will insert a row at specified index, pushing all rows below it down. It also copies styles from row above.
|
134
177
|
|
135
178
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows
|
136
|
-
|
179
|
+
worksheet.insert_row(1)
|
137
180
|
|
138
181
|
==== Insert Column
|
139
182
|
This method will insert a column at specified index, pushing all columns to the right of it one to the right. It also copies styles from column to the left
|
140
183
|
|
141
184
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns
|
142
|
-
|
185
|
+
worksheet.insert_column(1)
|
143
186
|
|
144
187
|
==== Delete Row
|
145
188
|
This method will delete a row at specified index, pushing all rows below it up.
|
146
189
|
|
147
190
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows
|
148
|
-
|
191
|
+
worksheet.delete_row(1)
|
149
192
|
|
150
193
|
==== Delete Column
|
151
194
|
This method will delete a column at specified index, pushing all columns to the right of it left.
|
152
195
|
|
153
196
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns
|
154
|
-
|
197
|
+
worksheet.delete_column(1)
|
155
198
|
|
156
199
|
==== Insert Cell
|
157
200
|
This method will insert a cell at specified position. It takes a :right or :down option, to shift cells either left or down upon inserting (nil means replacing the cell)
|
158
201
|
|
159
202
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells
|
160
|
-
|
161
|
-
|
162
|
-
|
203
|
+
worksheet.insert_cell(0, 0, "blah", formula = nil, :right) # Inserts cell at A1, shifts cells in first row right
|
204
|
+
worksheet.insert_cell(0, 0, "blah", formula = nil, :down) # Inserts cell at A1, shifts cells in first column down
|
205
|
+
worksheet.insert_cell(0, 0, "blah") # Inserts cell at A1, shifts nothing
|
163
206
|
|
164
207
|
==== Delete Cell
|
165
208
|
This method will delete a cell at specified position. It takes a :left or :up option, to shift cells either up or left upon deletion (nil means simply deleting the cell contents)
|
166
209
|
|
167
210
|
WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells
|
168
|
-
|
169
|
-
|
170
|
-
|
211
|
+
worksheet.delete_cell(0, 0, :left) # Deletes A1, shifts contents of first row left
|
212
|
+
worksheet.delete_cell(0, 0, :up) # Deletes A1, shifts contents of first column up
|
213
|
+
worksheet.delete_cell(0, 0) # Deletes A1, does not shift cells
|
214
|
+
|
215
|
+
==== Modifying Cell Format
|
216
|
+
cell = worksheet[0][0]
|
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
|
171
221
|
|
172
|
-
|
222
|
+
==== Add hyperlink to a Cell
|
223
|
+
cell.add_hyperlink('http://example.com')
|
224
|
+
cell.add_hyperlink('http://example.com', 'Some tooltip text')
|
225
|
+
|
226
|
+
|
227
|
+
== I/O
|
228
|
+
|
229
|
+
By default, the gem operates with files on the local filesystem:
|
230
|
+
|
231
|
+
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
|
173
232
|
workbook.write("path/to/desired/Excel/file.xlsx")
|
174
233
|
|
234
|
+
It can also operate on +StringIO+ objects, thus eliminating the need to save the +xlsx+ file to disk. This capability comes in handy for web servers.
|
235
|
+
|
236
|
+
workbook = RubyXL::Parser.parse_buffer(buffer)
|
237
|
+
workbook.stream
|
175
238
|
|
176
|
-
|
177
|
-
|
178
|
-
|
239
|
+
== Miscellaneous
|
240
|
+
RubyXL::Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
|
241
|
+
RubyXL::Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index
|
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" ])
|
179
250
|
|
180
251
|
== For more information
|
181
252
|
Take a look at the files in spec/lib/ for rspecs on most methods
|
@@ -192,6 +263,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
|
|
192
263
|
|
193
264
|
== Copyright
|
194
265
|
|
195
|
-
Copyright (c) 2011 Vivek Bhagwat
|
196
|
-
further details.
|
197
|
-
|
266
|
+
Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
|
267
|
+
See LICENSE.txt for further details.
|