rubyXL 3.4.14 → 3.4.33

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