rubyXL 3.4.12 → 3.4.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (456) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +2 -1
  3. data/Gemfile +8 -8
  4. data/Gemfile.lock +82 -50
  5. data/README.rdoc +26 -9
  6. data/Rakefile +26 -27
  7. data/VERSION +1 -1
  8. data/lib/rubyXL/cell.rb +2 -4
  9. data/lib/rubyXL/convenience_methods/cell.rb +35 -31
  10. data/lib/rubyXL/convenience_methods/color.rb +6 -8
  11. data/lib/rubyXL/convenience_methods/workbook.rb +9 -4
  12. data/lib/rubyXL/convenience_methods/worksheet.rb +77 -1
  13. data/lib/rubyXL/objects/border.rb +0 -3
  14. data/lib/rubyXL/objects/calculation_chain.rb +2 -2
  15. data/lib/rubyXL/objects/cell_style.rb +1 -3
  16. data/lib/rubyXL/objects/chartsheet.rb +6 -10
  17. data/lib/rubyXL/objects/color.rb +1 -3
  18. data/lib/rubyXL/objects/column_range.rb +0 -3
  19. data/lib/rubyXL/objects/comments.rb +1 -4
  20. data/lib/rubyXL/objects/connection.rb +11 -11
  21. data/lib/rubyXL/objects/container_nodes.rb +1 -5
  22. data/lib/rubyXL/objects/content_types.rb +3 -6
  23. data/lib/rubyXL/objects/data_validation.rb +2 -2
  24. data/lib/rubyXL/objects/document_properties.rb +9 -13
  25. data/lib/rubyXL/objects/extensions.rb +0 -2
  26. data/lib/rubyXL/objects/external_links.rb +29 -7
  27. data/lib/rubyXL/objects/fill.rb +2 -5
  28. data/lib/rubyXL/objects/filters.rb +5 -7
  29. data/lib/rubyXL/objects/font.rb +2 -4
  30. data/lib/rubyXL/objects/formula.rb +3 -5
  31. data/lib/rubyXL/objects/ooxml_object.rb +18 -18
  32. data/lib/rubyXL/objects/query_table.rb +3 -3
  33. data/lib/rubyXL/objects/reference.rb +6 -8
  34. data/lib/rubyXL/objects/relationships.rb +6 -11
  35. data/lib/rubyXL/objects/root.rb +0 -2
  36. data/lib/rubyXL/objects/shared_strings.rb +3 -6
  37. data/lib/rubyXL/objects/sheet_common.rb +1 -3
  38. data/lib/rubyXL/objects/sheet_data.rb +6 -8
  39. data/lib/rubyXL/objects/simple_types.rb +3 -1
  40. data/lib/rubyXL/objects/storage.rb +51 -50
  41. data/lib/rubyXL/objects/stylesheet.rb +8 -15
  42. data/lib/rubyXL/objects/text.rb +5 -7
  43. data/lib/rubyXL/objects/theme.rb +5 -8
  44. data/lib/rubyXL/objects/workbook.rb +35 -31
  45. data/lib/rubyXL/objects/worksheet.rb +33 -29
  46. data/lib/rubyXL/parser.rb +1 -3
  47. data/lib/rubyXL/worksheet.rb +83 -84
  48. data/lib/rubyXL.rb +0 -1
  49. data/rdoc/README_rdoc.html +42 -28
  50. data/rdoc/RubyXL/AExtension.html +9 -49
  51. data/rdoc/RubyXL/AExtensionStorageArea.html +5 -12
  52. data/rdoc/RubyXL/ActiveX.html +12 -41
  53. data/rdoc/RubyXL/ActiveXBinary.html +5 -17
  54. data/rdoc/RubyXL/AdjustHandleList.html +5 -12
  55. data/rdoc/RubyXL/Alignment.html +5 -12
  56. data/rdoc/RubyXL/AlternateContent.html +5 -12
  57. data/rdoc/RubyXL/Authors.html +5 -12
  58. data/rdoc/RubyXL/AutoFilter.html +5 -12
  59. data/rdoc/RubyXL/AutoFilterColumn.html +5 -12
  60. data/rdoc/RubyXL/BinaryImageFile.html +5 -20
  61. data/rdoc/RubyXL/BodyProperties.html +5 -12
  62. data/rdoc/RubyXL/BooleanNode.html +5 -12
  63. data/rdoc/RubyXL/BooleanValue.html +5 -12
  64. data/rdoc/RubyXL/Border.html +12 -72
  65. data/rdoc/RubyXL/BorderEdge.html +10 -44
  66. data/rdoc/RubyXL/Borders.html +9 -30
  67. data/rdoc/RubyXL/Break.html +5 -12
  68. data/rdoc/RubyXL/BreakList.html +5 -12
  69. data/rdoc/RubyXL/CT_AdjPoint2D.html +5 -12
  70. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +5 -12
  71. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +5 -12
  72. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +5 -12
  73. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +5 -12
  74. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +5 -12
  75. data/rdoc/RubyXL/CT_Backdrop.html +5 -12
  76. data/rdoc/RubyXL/CT_Bevel.html +5 -12
  77. data/rdoc/RubyXL/CT_BiLevelEffect.html +5 -12
  78. data/rdoc/RubyXL/CT_BlendEffect.html +5 -12
  79. data/rdoc/RubyXL/CT_Blip.html +5 -12
  80. data/rdoc/RubyXL/CT_BlipFillProperties.html +5 -12
  81. data/rdoc/RubyXL/CT_BlurEffect.html +5 -12
  82. data/rdoc/RubyXL/CT_Camera.html +5 -12
  83. data/rdoc/RubyXL/CT_Color.html +5 -12
  84. data/rdoc/RubyXL/CT_ColorChangeEffect.html +5 -12
  85. data/rdoc/RubyXL/CT_ColorMapping.html +5 -12
  86. data/rdoc/RubyXL/CT_ColorScheme.html +5 -12
  87. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +5 -12
  88. data/rdoc/RubyXL/CT_ConnectionSite.html +5 -12
  89. data/rdoc/RubyXL/CT_ConnectionSiteList.html +5 -12
  90. data/rdoc/RubyXL/CT_DashStop.html +5 -12
  91. data/rdoc/RubyXL/CT_DashStopList.html +5 -12
  92. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +5 -12
  93. data/rdoc/RubyXL/CT_DuotoneEffect.html +5 -12
  94. data/rdoc/RubyXL/CT_EffectContainer.html +5 -12
  95. data/rdoc/RubyXL/CT_EffectList.html +5 -12
  96. data/rdoc/RubyXL/CT_EffectReference.html +5 -12
  97. data/rdoc/RubyXL/CT_EffectStyleItem.html +5 -12
  98. data/rdoc/RubyXL/CT_EffectStyleList.html +5 -12
  99. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +5 -12
  100. data/rdoc/RubyXL/CT_FillEffect.html +5 -12
  101. data/rdoc/RubyXL/CT_FillOverlayEffect.html +5 -12
  102. data/rdoc/RubyXL/CT_FillStyleList.html +5 -12
  103. data/rdoc/RubyXL/CT_FlatText.html +5 -12
  104. data/rdoc/RubyXL/CT_FontCollection.html +5 -12
  105. data/rdoc/RubyXL/CT_FontReference.html +5 -12
  106. data/rdoc/RubyXL/CT_GeomGuideList.html +5 -12
  107. data/rdoc/RubyXL/CT_GlowEffect.html +5 -12
  108. data/rdoc/RubyXL/CT_GradientFillProperties.html +5 -12
  109. data/rdoc/RubyXL/CT_GradientStop.html +5 -12
  110. data/rdoc/RubyXL/CT_GradientStopList.html +5 -12
  111. data/rdoc/RubyXL/CT_HSLEffect.html +5 -12
  112. data/rdoc/RubyXL/CT_HslColor.html +5 -12
  113. data/rdoc/RubyXL/CT_Hyperlink.html +5 -12
  114. data/rdoc/RubyXL/CT_InnerShadowEffect.html +5 -12
  115. data/rdoc/RubyXL/CT_LightRig.html +5 -12
  116. data/rdoc/RubyXL/CT_LineEndProperties.html +5 -12
  117. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +5 -12
  118. data/rdoc/RubyXL/CT_LineProperties.html +5 -12
  119. data/rdoc/RubyXL/CT_LineStyleList.html +5 -12
  120. data/rdoc/RubyXL/CT_LinearShadeProperties.html +5 -12
  121. data/rdoc/RubyXL/CT_LuminanceEffect.html +5 -12
  122. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +5 -12
  123. data/rdoc/RubyXL/CT_OuterShadowEffect.html +5 -12
  124. data/rdoc/RubyXL/CT_Path2D.html +5 -12
  125. data/rdoc/RubyXL/CT_Path2DArcTo.html +5 -12
  126. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +5 -12
  127. data/rdoc/RubyXL/CT_Path2DList.html +5 -12
  128. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +5 -12
  129. data/rdoc/RubyXL/CT_Path2DTo.html +5 -12
  130. data/rdoc/RubyXL/CT_PathShadeProperties.html +5 -12
  131. data/rdoc/RubyXL/CT_PatternFillProperties.html +5 -12
  132. data/rdoc/RubyXL/CT_Point3D.html +5 -12
  133. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +5 -12
  134. data/rdoc/RubyXL/CT_PresetColor.html +5 -12
  135. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +5 -12
  136. data/rdoc/RubyXL/CT_PresetShadowEffect.html +5 -12
  137. data/rdoc/RubyXL/CT_PresetTextShape.html +5 -12
  138. data/rdoc/RubyXL/CT_ReflectionEffect.html +5 -12
  139. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +5 -12
  140. data/rdoc/RubyXL/CT_RelativeRect.html +5 -12
  141. data/rdoc/RubyXL/CT_SRgbColor.html +5 -12
  142. data/rdoc/RubyXL/CT_ScRgbColor.html +5 -12
  143. data/rdoc/RubyXL/CT_Scene3D.html +5 -12
  144. data/rdoc/RubyXL/CT_SchemeColor.html +5 -12
  145. data/rdoc/RubyXL/CT_Shape3D.html +5 -12
  146. data/rdoc/RubyXL/CT_ShapeStyle.html +5 -12
  147. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +5 -12
  148. data/rdoc/RubyXL/CT_SphereCoords.html +5 -12
  149. data/rdoc/RubyXL/CT_StretchInfoProperties.html +5 -12
  150. data/rdoc/RubyXL/CT_StyleMatrix.html +5 -12
  151. data/rdoc/RubyXL/CT_StyleMatrixReference.html +5 -12
  152. data/rdoc/RubyXL/CT_SupplementalFont.html +5 -12
  153. data/rdoc/RubyXL/CT_SystemColor.html +5 -12
  154. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +5 -12
  155. data/rdoc/RubyXL/CT_TextBlipBullet.html +5 -12
  156. data/rdoc/RubyXL/CT_TextCharBullet.html +5 -12
  157. data/rdoc/RubyXL/CT_TextCharacterProperties.html +5 -12
  158. data/rdoc/RubyXL/CT_TextFont.html +5 -12
  159. data/rdoc/RubyXL/CT_TextListStyle.html +5 -12
  160. data/rdoc/RubyXL/CT_TextNormalAutofit.html +5 -12
  161. data/rdoc/RubyXL/CT_TextParagraphProperties.html +5 -12
  162. data/rdoc/RubyXL/CT_TextSpacing.html +5 -12
  163. data/rdoc/RubyXL/CT_TextTabStop.html +5 -12
  164. data/rdoc/RubyXL/CT_TextTabStopList.html +5 -12
  165. data/rdoc/RubyXL/CT_TileInfoProperties.html +5 -12
  166. data/rdoc/RubyXL/CT_TintEffect.html +5 -12
  167. data/rdoc/RubyXL/CT_Transform2D.html +5 -12
  168. data/rdoc/RubyXL/CT_TransformEffect.html +5 -12
  169. data/rdoc/RubyXL/CT_Vector3D.html +5 -12
  170. data/rdoc/RubyXL/CT_XYAdjustHandle.html +5 -12
  171. data/rdoc/RubyXL/CalculationChain.html +8 -37
  172. data/rdoc/RubyXL/CalculationChainCell.html +5 -12
  173. data/rdoc/RubyXL/CalculationProperties.html +5 -12
  174. data/rdoc/RubyXL/Cell.html +26 -228
  175. data/rdoc/RubyXL/CellConvenienceMethods.html +108 -503
  176. data/rdoc/RubyXL/CellExt.html +5 -12
  177. data/rdoc/RubyXL/CellSmartTag.html +5 -12
  178. data/rdoc/RubyXL/CellSmartTagProperty.html +5 -12
  179. data/rdoc/RubyXL/CellSmartTags.html +5 -12
  180. data/rdoc/RubyXL/CellStyle.html +5 -12
  181. data/rdoc/RubyXL/CellStyleXFs.html +9 -30
  182. data/rdoc/RubyXL/CellStyles.html +9 -30
  183. data/rdoc/RubyXL/CellValue.html +9 -30
  184. data/rdoc/RubyXL/CellWatch.html +5 -12
  185. data/rdoc/RubyXL/CellWatches.html +5 -12
  186. data/rdoc/RubyXL/CellXFs.html +10 -33
  187. data/rdoc/RubyXL/ChartColorsFile.html +5 -20
  188. data/rdoc/RubyXL/ChartFile.html +11 -43
  189. data/rdoc/RubyXL/ChartStyleFile.html +5 -20
  190. data/rdoc/RubyXL/ChartUserShapesFile.html +5 -20
  191. data/rdoc/RubyXL/Chartsheet.html +11 -60
  192. data/rdoc/RubyXL/ChartsheetPageSetup.html +5 -12
  193. data/rdoc/RubyXL/ChartsheetProperties.html +5 -12
  194. data/rdoc/RubyXL/ChartsheetProtection.html +5 -12
  195. data/rdoc/RubyXL/ChartsheetView.html +5 -12
  196. data/rdoc/RubyXL/ChartsheetViews.html +5 -12
  197. data/rdoc/RubyXL/Color.html +10 -36
  198. data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +10 -58
  199. data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +18 -78
  200. data/rdoc/RubyXL/ColorConvenienceClasses.html +3 -9
  201. data/rdoc/RubyXL/ColorConvenienceMethods.html +7 -27
  202. data/rdoc/RubyXL/ColorFilter.html +5 -12
  203. data/rdoc/RubyXL/ColorScale.html +5 -12
  204. data/rdoc/RubyXL/ColorSet.html +5 -12
  205. data/rdoc/RubyXL/Colors.html +5 -12
  206. data/rdoc/RubyXL/ColumnRange.html +11 -63
  207. data/rdoc/RubyXL/ColumnRanges.html +12 -72
  208. data/rdoc/RubyXL/Comment.html +5 -12
  209. data/rdoc/RubyXL/CommentList.html +5 -12
  210. data/rdoc/RubyXL/CommentsFile.html +9 -43
  211. data/rdoc/RubyXL/ConditionalFormatValue.html +5 -12
  212. data/rdoc/RubyXL/ConditionalFormatting.html +5 -12
  213. data/rdoc/RubyXL/ConditionalFormattingRule.html +5 -12
  214. data/rdoc/RubyXL/Connection.html +5 -12
  215. data/rdoc/RubyXL/ConnectionTable.html +5 -12
  216. data/rdoc/RubyXL/ConnectionTables.html +5 -12
  217. data/rdoc/RubyXL/ConnectionTextField.html +5 -12
  218. data/rdoc/RubyXL/ConnectionTextFields.html +5 -12
  219. data/rdoc/RubyXL/Connections.html +8 -37
  220. data/rdoc/RubyXL/ContentTypeDefault.html +5 -12
  221. data/rdoc/RubyXL/ContentTypeOverride.html +5 -12
  222. data/rdoc/RubyXL/ContentTypes.html +12 -54
  223. data/rdoc/RubyXL/ControlPropertiesFile.html +7 -17
  224. data/rdoc/RubyXL/CorePropertiesFile.html +17 -155
  225. data/rdoc/RubyXL/CustomColor.html +5 -12
  226. data/rdoc/RubyXL/CustomColorList.html +5 -12
  227. data/rdoc/RubyXL/CustomFilter.html +5 -12
  228. data/rdoc/RubyXL/CustomFilters.html +5 -12
  229. data/rdoc/RubyXL/CustomGeometry.html +5 -12
  230. data/rdoc/RubyXL/CustomProperties.html +5 -12
  231. data/rdoc/RubyXL/CustomPropertiesFile.html +5 -20
  232. data/rdoc/RubyXL/CustomProperty.html +5 -12
  233. data/rdoc/RubyXL/CustomPropertyFile.html +5 -20
  234. data/rdoc/RubyXL/CustomSheetView.html +5 -12
  235. data/rdoc/RubyXL/CustomSheetViews.html +5 -12
  236. data/rdoc/RubyXL/CustomWorkbookView.html +5 -12
  237. data/rdoc/RubyXL/CustomWorkbookViews.html +5 -12
  238. data/rdoc/RubyXL/CustomXMLFile.html +5 -17
  239. data/rdoc/RubyXL/DXF.html +5 -12
  240. data/rdoc/RubyXL/DXFs.html +5 -12
  241. data/rdoc/RubyXL/DataBar.html +5 -12
  242. data/rdoc/RubyXL/DataConsolidate.html +5 -12
  243. data/rdoc/RubyXL/DataConsolidationReference.html +5 -12
  244. data/rdoc/RubyXL/DataConsolidationReferences.html +5 -12
  245. data/rdoc/RubyXL/DataType.html +3 -32
  246. data/rdoc/RubyXL/DataValidation.html +5 -12
  247. data/rdoc/RubyXL/DataValidations.html +5 -12
  248. data/rdoc/RubyXL/DateGroupItem.html +5 -12
  249. data/rdoc/RubyXL/DefinedName.html +5 -12
  250. data/rdoc/RubyXL/DefinedNameExt.html +5 -12
  251. data/rdoc/RubyXL/DefinedNames.html +5 -12
  252. data/rdoc/RubyXL/DefinedNamesExt.html +5 -12
  253. data/rdoc/RubyXL/DocumentPropertiesFile.html +10 -57
  254. data/rdoc/RubyXL/DrawingFile.html +11 -43
  255. data/rdoc/RubyXL/DynamicFilter.html +5 -12
  256. data/rdoc/RubyXL/EmbeddedControl.html +5 -12
  257. data/rdoc/RubyXL/EmbeddedControls.html +5 -12
  258. data/rdoc/RubyXL/Extension.html +5 -12
  259. data/rdoc/RubyXL/ExtensionStorageArea.html +5 -12
  260. data/rdoc/RubyXL/Extents.html +5 -12
  261. data/rdoc/RubyXL/ExternalBook.html +5 -12
  262. data/rdoc/RubyXL/ExternalLinksFile.html +11 -43
  263. data/rdoc/RubyXL/ExternalReference.html +5 -12
  264. data/rdoc/RubyXL/ExternalReferences.html +5 -12
  265. data/rdoc/RubyXL/ExtraColorSchemeList.html +5 -12
  266. data/rdoc/RubyXL/FieldItem.html +5 -12
  267. data/rdoc/RubyXL/FileRecoveryProperties.html +5 -12
  268. data/rdoc/RubyXL/FileSharing.html +5 -12
  269. data/rdoc/RubyXL/FileVersion.html +5 -12
  270. data/rdoc/RubyXL/Fill.html +9 -30
  271. data/rdoc/RubyXL/Fills.html +9 -30
  272. data/rdoc/RubyXL/FilterContainer.html +5 -12
  273. data/rdoc/RubyXL/FloatNode.html +5 -12
  274. data/rdoc/RubyXL/FloatValue.html +5 -12
  275. data/rdoc/RubyXL/Font.html +11 -37
  276. data/rdoc/RubyXL/FontConvenienceMethods.html +7 -196
  277. data/rdoc/RubyXL/FontScheme.html +5 -12
  278. data/rdoc/RubyXL/Fonts.html +9 -30
  279. data/rdoc/RubyXL/Formula.html +5 -12
  280. data/rdoc/RubyXL/FunctionGroup.html +5 -12
  281. data/rdoc/RubyXL/FunctionGroups.html +5 -12
  282. data/rdoc/RubyXL/GenericStorageObject.html +12 -76
  283. data/rdoc/RubyXL/GradientFill.html +5 -12
  284. data/rdoc/RubyXL/HeaderFooterSettings.html +5 -12
  285. data/rdoc/RubyXL/Hyperlink.html +5 -12
  286. data/rdoc/RubyXL/HyperlinkRelFile.html +5 -17
  287. data/rdoc/RubyXL/Hyperlinks.html +5 -12
  288. data/rdoc/RubyXL/IconFilter.html +5 -12
  289. data/rdoc/RubyXL/IconSet.html +5 -12
  290. data/rdoc/RubyXL/IgnoredError.html +5 -12
  291. data/rdoc/RubyXL/IgnoredErrors.html +5 -12
  292. data/rdoc/RubyXL/IndexedColors.html +5 -12
  293. data/rdoc/RubyXL/InputCells.html +5 -12
  294. data/rdoc/RubyXL/IntegerNode.html +5 -12
  295. data/rdoc/RubyXL/IntegerValue.html +5 -12
  296. data/rdoc/RubyXL/LegacyCell.html +7 -27
  297. data/rdoc/RubyXL/LegacyWorksheet.html +11 -88
  298. data/rdoc/RubyXL/MRUColors.html +5 -12
  299. data/rdoc/RubyXL/MacrosFile.html +5 -20
  300. data/rdoc/RubyXL/MergedCell.html +5 -12
  301. data/rdoc/RubyXL/MergedCells.html +5 -12
  302. data/rdoc/RubyXL/NumFmt.html +5 -12
  303. data/rdoc/RubyXL/NumberFormat.html +10 -31
  304. data/rdoc/RubyXL/NumberFormats.html +9 -35
  305. data/rdoc/RubyXL/OLEObject.html +5 -12
  306. data/rdoc/RubyXL/OLEObjectFile.html +5 -20
  307. data/rdoc/RubyXL/OLEObjects.html +5 -12
  308. data/rdoc/RubyXL/OLESize.html +5 -12
  309. data/rdoc/RubyXL/OOXMLContainerObject.html +19 -114
  310. data/rdoc/RubyXL/OOXMLIgnored.html +11 -46
  311. data/rdoc/RubyXL/OOXMLObject.html +8 -18
  312. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +42 -92
  313. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +23 -144
  314. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +24 -181
  315. data/rdoc/RubyXL/OOXMLTopLevelObject.html +15 -102
  316. data/rdoc/RubyXL/OdbcOleDbProperties.html +5 -12
  317. data/rdoc/RubyXL/Offset.html +5 -12
  318. data/rdoc/RubyXL/OlapProperties.html +5 -12
  319. data/rdoc/RubyXL/OleItem.html +99 -0
  320. data/rdoc/RubyXL/OleItems.html +99 -0
  321. data/rdoc/RubyXL/OleLink.html +99 -0
  322. data/rdoc/RubyXL/OutlineProperties.html +5 -12
  323. data/rdoc/RubyXL/PageMargins.html +5 -12
  324. data/rdoc/RubyXL/PageSetup.html +5 -12
  325. data/rdoc/RubyXL/PageSetupProperties.html +5 -12
  326. data/rdoc/RubyXL/Pane.html +5 -12
  327. data/rdoc/RubyXL/Parser.html +11 -45
  328. data/rdoc/RubyXL/PatternFill.html +5 -12
  329. data/rdoc/RubyXL/PhoneticProperties.html +5 -12
  330. data/rdoc/RubyXL/PhoneticRun.html +5 -12
  331. data/rdoc/RubyXL/PivotArea.html +5 -12
  332. data/rdoc/RubyXL/PivotCache.html +5 -12
  333. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +7 -25
  334. data/rdoc/RubyXL/PivotCacheRecordsFile.html +5 -20
  335. data/rdoc/RubyXL/PivotCaches.html +5 -12
  336. data/rdoc/RubyXL/PivotReference.html +5 -12
  337. data/rdoc/RubyXL/PivotReferences.html +5 -12
  338. data/rdoc/RubyXL/PivotTableFile.html +7 -25
  339. data/rdoc/RubyXL/PivotTableSelection.html +5 -12
  340. data/rdoc/RubyXL/PresetGeometry.html +5 -12
  341. data/rdoc/RubyXL/PrintOptions.html +5 -12
  342. data/rdoc/RubyXL/PrinterSettingsFile.html +5 -20
  343. data/rdoc/RubyXL/ProtectedRange.html +5 -12
  344. data/rdoc/RubyXL/ProtectedRanges.html +5 -12
  345. data/rdoc/RubyXL/Protection.html +5 -12
  346. data/rdoc/RubyXL/QueryParameter.html +5 -12
  347. data/rdoc/RubyXL/QueryParameters.html +5 -12
  348. data/rdoc/RubyXL/QueryTable.html +10 -42
  349. data/rdoc/RubyXL/QueryTableDeletedField.html +5 -12
  350. data/rdoc/RubyXL/QueryTableDeletedFields.html +5 -12
  351. data/rdoc/RubyXL/QueryTableField.html +5 -12
  352. data/rdoc/RubyXL/QueryTableFields.html +5 -12
  353. data/rdoc/RubyXL/QueryTableRefresh.html +5 -12
  354. data/rdoc/RubyXL/RID.html +5 -12
  355. data/rdoc/RubyXL/RawOOXML.html +11 -51
  356. data/rdoc/RubyXL/Reference.html +42 -204
  357. data/rdoc/RubyXL/Relationship.html +5 -12
  358. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +7 -27
  359. data/rdoc/RubyXL/RelationshipSupport.html +15 -112
  360. data/rdoc/RubyXL/RevisionPointer.html +5 -12
  361. data/rdoc/RubyXL/RichText.html +11 -31
  362. data/rdoc/RubyXL/RichTextRun.html +9 -30
  363. data/rdoc/RubyXL/Row.html +8 -143
  364. data/rdoc/RubyXL/RowExt.html +5 -12
  365. data/rdoc/RubyXL/RunProperties.html +5 -12
  366. data/rdoc/RubyXL/Scenario.html +5 -12
  367. data/rdoc/RubyXL/Scenarios.html +5 -12
  368. data/rdoc/RubyXL/Selection.html +9 -30
  369. data/rdoc/RubyXL/ShapeGuide.html +5 -12
  370. data/rdoc/RubyXL/ShapeTextRectangle.html +5 -12
  371. data/rdoc/RubyXL/SharedStringsTable.html +16 -126
  372. data/rdoc/RubyXL/Sheet.html +5 -12
  373. data/rdoc/RubyXL/SheetCalculationProperties.html +5 -12
  374. data/rdoc/RubyXL/SheetData.html +8 -42
  375. data/rdoc/RubyXL/SheetDataExt.html +5 -12
  376. data/rdoc/RubyXL/SheetDataSet.html +5 -12
  377. data/rdoc/RubyXL/SheetMetadata.html +108 -0
  378. data/rdoc/RubyXL/SheetName.html +5 -12
  379. data/rdoc/RubyXL/SheetNames.html +5 -12
  380. data/rdoc/RubyXL/Sheets.html +5 -12
  381. data/rdoc/RubyXL/SlicerCacheFile.html +5 -20
  382. data/rdoc/RubyXL/SlicerFile.html +5 -20
  383. data/rdoc/RubyXL/SmartTagProperties.html +5 -12
  384. data/rdoc/RubyXL/SmartTagType.html +5 -12
  385. data/rdoc/RubyXL/SmartTagTypes.html +5 -12
  386. data/rdoc/RubyXL/SmartTags.html +5 -12
  387. data/rdoc/RubyXL/SortCondition.html +5 -12
  388. data/rdoc/RubyXL/SortState.html +5 -12
  389. data/rdoc/RubyXL/Sqref.html +11 -46
  390. data/rdoc/RubyXL/Stop.html +5 -12
  391. data/rdoc/RubyXL/StringNode.html +5 -12
  392. data/rdoc/RubyXL/StringNodeW3C.html +11 -46
  393. data/rdoc/RubyXL/StringValue.html +5 -12
  394. data/rdoc/RubyXL/Stylesheet.html +14 -97
  395. data/rdoc/RubyXL/TableFile.html +5 -20
  396. data/rdoc/RubyXL/TableParts.html +5 -12
  397. data/rdoc/RubyXL/TableStyle.html +5 -12
  398. data/rdoc/RubyXL/TableStyles.html +5 -12
  399. data/rdoc/RubyXL/Text.html +12 -54
  400. data/rdoc/RubyXL/TextImportSettings.html +5 -12
  401. data/rdoc/RubyXL/Theme.html +12 -68
  402. data/rdoc/RubyXL/ThemeElements.html +5 -12
  403. data/rdoc/RubyXL/ThumbnailFile.html +5 -20
  404. data/rdoc/RubyXL/Top10.html +5 -12
  405. data/rdoc/RubyXL/VMLDrawingFile.html +8 -26
  406. data/rdoc/RubyXL/Variant.html +5 -12
  407. data/rdoc/RubyXL/Vector.html +9 -30
  408. data/rdoc/RubyXL/VectorValue.html +5 -12
  409. data/rdoc/RubyXL/VisualProperties.html +5 -12
  410. data/rdoc/RubyXL/WebPublishObject.html +5 -12
  411. data/rdoc/RubyXL/WebPublishObjects.html +5 -12
  412. data/rdoc/RubyXL/WebPublishingItem.html +5 -12
  413. data/rdoc/RubyXL/WebPublishingItems.html +5 -12
  414. data/rdoc/RubyXL/WebPublishingProperties.html +5 -12
  415. data/rdoc/RubyXL/WebQueryProperties.html +5 -12
  416. data/rdoc/RubyXL/Workbook.html +45 -462
  417. data/rdoc/RubyXL/WorkbookConvenienceMethods.html +68 -239
  418. data/rdoc/RubyXL/WorkbookProperties.html +5 -12
  419. data/rdoc/RubyXL/WorkbookProtection.html +5 -12
  420. data/rdoc/RubyXL/WorkbookRoot.html +16 -104
  421. data/rdoc/RubyXL/WorkbookView.html +5 -12
  422. data/rdoc/RubyXL/WorkbookViews.html +5 -12
  423. data/rdoc/RubyXL/Worksheet.html +40 -135
  424. data/rdoc/RubyXL/WorksheetConvenienceMethods.html +170 -989
  425. data/rdoc/RubyXL/WorksheetDimensions.html +5 -12
  426. data/rdoc/RubyXL/WorksheetFormatProperties.html +5 -12
  427. data/rdoc/RubyXL/WorksheetProperties.html +5 -12
  428. data/rdoc/RubyXL/WorksheetProtection.html +5 -12
  429. data/rdoc/RubyXL/WorksheetView.html +5 -12
  430. data/rdoc/RubyXL/WorksheetViews.html +5 -12
  431. data/rdoc/RubyXL/XF.html +5 -12
  432. data/rdoc/RubyXL.html +8 -319
  433. data/rdoc/created.rid +44 -44
  434. data/rdoc/css/rdoc.css +21 -1
  435. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  436. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  437. data/rdoc/index.html +9 -388
  438. data/rdoc/js/navigation.js.gz +0 -0
  439. data/rdoc/js/search_index.js +1 -1
  440. data/rdoc/js/search_index.js.gz +0 -0
  441. data/rdoc/js/searcher.js.gz +0 -0
  442. data/rdoc/table_of_contents.html +57 -5
  443. data/rubyXL.gemspec +24 -30
  444. data/spec/lib/cell_spec.rb +38 -6
  445. data/spec/lib/color_spec.rb +1 -1
  446. data/spec/lib/parser_spec.rb +24 -27
  447. data/spec/lib/reference_spec.rb +9 -3
  448. data/spec/lib/rgb_color_spec.rb +27 -0
  449. data/spec/lib/stylesheet_spec.rb +8 -11
  450. data/spec/lib/text_spec.rb +1 -5
  451. data/spec/lib/workbook_spec.rb +14 -4
  452. data/spec/lib/worksheet_spec.rb +790 -447
  453. data/spec/spec_helper.rb +2 -0
  454. data/test/test_parse_write.rb +3 -3
  455. metadata +11 -8
  456. data/test/output/test.xlsx +0 -0
@@ -15,7 +15,6 @@ require 'rubyXL/objects/query_table'
15
15
  require 'rubyXL/worksheet'
16
16
 
17
17
  module RubyXL
18
-
19
18
  # Eventually, the entire code for Worksheet will be moved here. One small step at a time!
20
19
 
21
20
  # http://www.datypic.com/sc/ooxml/e-ssml_outlinePr-1.html
@@ -58,7 +57,7 @@ module RubyXL
58
57
  end
59
58
 
60
59
  class WorksheetFormatProperties < OOXMLObject
61
- define_attribute(:baseColWidth, :int, :default => 8)
60
+ define_attribute(:baseColWidth, :int, :default => 8)
62
61
  define_attribute(:defaultColWidth, :double)
63
62
  define_attribute(:defaultRowHeight, :double, :required => true)
64
63
  define_attribute(:customHeight, :bool, :default => false)
@@ -83,12 +82,12 @@ module RubyXL
83
82
  define_attribute(:blackAndWhite, :bool, :default => false)
84
83
  define_attribute(:draft, :bool, :default => false)
85
84
  define_attribute(:cellComments, RubyXL::ST_CellComments, :default => 'none')
86
- define_attribute(:useFirstPageNumber, :bool, :default => false)
85
+ define_attribute(:useFirstPageNumber, :bool, :default => false)
87
86
  define_attribute(:errors, RubyXL::ST_PrintError, :default => 'displayed')
88
87
  define_attribute(:horizontalDpi, :int, :default => 600)
89
88
  define_attribute(:verticalDpi, :int, :default => 600)
90
89
  define_attribute(:copies, :int, :default => 1)
91
- define_attribute(:'r:id', :string)
90
+ define_relationship
92
91
  define_element_name 'pageSetup'
93
92
  end
94
93
 
@@ -166,7 +165,7 @@ module RubyXL
166
165
  class ConditionalFormatValue < OOXMLObject
167
166
  define_attribute(:type, RubyXL::ST_CfvoType, :required => true)
168
167
  define_attribute(:val, :string)
169
- define_attribute(:gte, :bool, :default => true)
168
+ define_attribute(:gte, :bool, :default => true)
170
169
  define_child_node(RubyXL::ExtensionStorageArea)
171
170
  define_element_name 'cfvo'
172
171
  end
@@ -212,7 +211,7 @@ module RubyXL
212
211
  define_attribute(:timePeriod, RubyXL::ST_TimePeriod)
213
212
  define_attribute(:rank, :int)
214
213
  define_attribute(:stdDev, :int)
215
- define_attribute(:equalAverage, :bool, :default => false)
214
+ define_attribute(:equalAverage, :bool, :default => false)
216
215
  define_child_node(RubyXL::Formula, :collection => true, :node_name => :formula, :accessor => :formulas)
217
216
  define_child_node(RubyXL::ColorScale)
218
217
  define_child_node(RubyXL::DataBar)
@@ -301,8 +300,8 @@ module RubyXL
301
300
 
302
301
  # http://www.datypic.com/sc/ooxml/e-ssml_hyperlink-1.html
303
302
  class Hyperlink < OOXMLObject
304
- define_attribute(:ref, :ref, :required => true)
305
- define_attribute(:'r:id', :string)
303
+ define_attribute(:ref, :ref, :required => true)
304
+ define_relationship
306
305
  define_attribute(:location, :string)
307
306
  define_attribute(:tooltip, :string)
308
307
  define_attribute(:display, :string)
@@ -323,7 +322,7 @@ module RubyXL
323
322
  define_attribute(:oleUpdate, RubyXL::ST_OleUpdate)
324
323
  define_attribute(:autoLoad, :bool, :default => false)
325
324
  define_attribute(:shapeId, :int, :required => true)
326
- define_attribute(:'r:id', :string)
325
+ define_relationship
327
326
  define_element_name 'oleObject'
328
327
  end
329
328
 
@@ -339,7 +338,7 @@ module RubyXL
339
338
  define_attribute(:ref, :ref)
340
339
  define_attribute(:name, :string)
341
340
  define_attribute(:sheet, :string)
342
- define_attribute(:'r:id', :string)
341
+ define_relationship
343
342
  define_element_name 'dataRef'
344
343
  end
345
344
 
@@ -408,9 +407,9 @@ module RubyXL
408
407
  define_attribute(:hiddenRows, :bool, :default => false)
409
408
  define_attribute(:hiddenColumns, :bool, :default => false)
410
409
  define_attribute(:state, RubyXL::ST_Visibility, :default => 'visible')
411
- define_attribute(:filterUnique, :bool, :default => false)
410
+ define_attribute(:filterUnique, :bool, :default => false)
412
411
  define_attribute(:view, RubyXL::ST_SheetViewType, :default => 'normal')
413
- define_attribute(:showRuler, :bool, :default => true)
412
+ define_attribute(:showRuler, :bool, :default => true)
414
413
  define_attribute(:topLeftCell, :ref)
415
414
  define_child_node(RubyXL::Pane)
416
415
  define_child_node(RubyXL::Selection)
@@ -433,9 +432,9 @@ module RubyXL
433
432
 
434
433
  # http://www.datypic.com/sc/ooxml/e-ssml_control-1.html
435
434
  class EmbeddedControl < OOXMLObject
436
- define_attribute(:shapeId, :int, :required => true)
437
- define_attribute(:'r:id', :string, :required => true)
438
- define_attribute(:name, :string)
435
+ define_attribute(:shapeId, :int, :required => true)
436
+ define_relationship(:required => true)
437
+ define_attribute(:name, :string)
439
438
  define_element_name 'control'
440
439
  end
441
440
 
@@ -489,8 +488,8 @@ module RubyXL
489
488
 
490
489
  # http://www.datypic.com/sc/ooxml/e-ssml_customPr-1.html
491
490
  class CustomProperty < OOXMLObject
492
- define_attribute(:name, :string, :required => true)
493
- define_attribute(:'r:id', :string, :required => true)
491
+ define_attribute(:name, :string, :required => true)
492
+ define_relationship(:required => true)
494
493
  define_element_name 'customPr'
495
494
  end
496
495
 
@@ -546,7 +545,7 @@ module RubyXL
546
545
  define_attribute(:cacheIndex, :bool, :default => false)
547
546
  define_attribute(:outline, :bool, :default => true)
548
547
  define_attribute(:offset, :ref)
549
- define_attribute(:collapsedLevelsAreSubtotals, :bool, :default => false)
548
+ define_attribute(:collapsedLevelsAreSubtotals, :bool, :default => false)
550
549
  define_attribute(:axis, RubyXL::ST_Axis)
551
550
  define_attribute(:fieldPosition, :int, :default => 0)
552
551
  define_child_node(RubyXL::PivotReferences)
@@ -572,7 +571,7 @@ module RubyXL
572
571
  define_attribute(:previousRow, :uint, :default => 0)
573
572
  define_attribute(:previousCol, :uint, :default => 0)
574
573
  define_attribute(:click, :uint, :default => 0)
575
- define_attribute(:'r:id', :string)
574
+ define_relationship
576
575
  define_child_node(RubyXL::PivotArea)
577
576
  define_element_name 'pivotSelection'
578
577
  end
@@ -597,10 +596,10 @@ module RubyXL
597
596
  define_attribute(:zoomScaleNormal, :uint, :default => 0)
598
597
  define_attribute(:zoomScaleSheetLayoutView, :uint, :default => 0)
599
598
  define_attribute(:zoomScalePageLayoutView, :uint, :default => 0)
600
- define_attribute(:workbookViewId, :uint, :required => true, :default => 0 )
599
+ define_attribute(:workbookViewId, :uint, :required => true, :default => 0)
601
600
  define_child_node(RubyXL::Pane)
602
601
  define_child_node(RubyXL::Selection, :collection => true, :accessor => :selections)
603
- define_child_node(RubyXL::PivotTableSelection, :collection => true, :accessor => :pivot_table_selections )
602
+ define_child_node(RubyXL::PivotTableSelection, :collection => true, :accessor => :pivot_table_selections)
604
603
  define_child_node(RubyXL::ExtensionStorageArea)
605
604
  define_element_name 'sheetView'
606
605
  end
@@ -614,8 +613,8 @@ module RubyXL
614
613
 
615
614
  # http://www.datypic.com/sc/ooxml/e-ssml_worksheet.html
616
615
  class Worksheet < OOXMLTopLevelObject
617
- CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'
618
- REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'
616
+ CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'.freeze
617
+ REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'.freeze
619
618
 
620
619
  include RubyXL::RelationshipSupport
621
620
 
@@ -651,7 +650,7 @@ module RubyXL
651
650
  define_child_node(RubyXL::SortState)
652
651
  define_child_node(RubyXL::DataConsolidate)
653
652
  define_child_node(RubyXL::CustomSheetViews)
654
- define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
653
+ define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
655
654
  define_child_node(RubyXL::PhoneticProperties)
656
655
  define_child_node(RubyXL::ConditionalFormatting, :collection => [0..-1])
657
656
  define_child_node(RubyXL::DataValidations)
@@ -677,11 +676,11 @@ module RubyXL
677
676
  define_child_node(RubyXL::ExtensionStorageArea)
678
677
  define_child_node(RubyXL::AlternateContent)
679
678
  define_element_name 'worksheet'
680
- set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
679
+ set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
681
680
  'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r',
682
- 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
683
- 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' => 'x14ac',
684
- 'urn:schemas-microsoft-com:mac:vml' => 'mv')
681
+ 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
682
+ 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' => 'x14ac',
683
+ 'urn:schemas-microsoft-com:mac:vml' => 'mv')
685
684
 
686
685
  attr_accessor :workbook, :state, :sheet_name, :sheet_id, :rels
687
686
 
@@ -752,7 +751,12 @@ module RubyXL
752
751
  workbook.stylesheet.cell_xfs[get_row_style(row)]
753
752
  end
754
753
 
754
+ def cell_at(ref)
755
+ reference = RubyXL::Reference.new(ref)
756
+ raise "Invalid reference: #{ref}" unless reference.valid? && reference.single_cell?
757
+ sheet_data&.rows&.[](reference.first_row)&.cells&.[](reference.first_col)
758
+ end
759
+
755
760
  include LegacyWorksheet
756
761
  end
757
-
758
762
  end
data/lib/rubyXL/parser.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  module RubyXL
2
2
  class Parser
3
-
4
3
  # Parse <tt>.xslx</tt> file by reading it from local disk.
5
4
  def self.parse(src_file_path)
6
5
  begin
@@ -18,12 +17,11 @@ module RubyXL
18
17
  def self.parse_buffer(buffer)
19
18
  root = nil # Zip::File.open_buffer somehow fails to return the value from the block :(
20
19
  begin
21
- ::Zip::File.open_buffer(buffer) { |zip_file| root = RubyXL::WorkbookRoot.parse_zip_file(zip_file) }
20
+ ::Zip::File.open_buffer(buffer) { |zip_file| root = RubyXL::WorkbookRoot.parse_zip_file(zip_file) }
22
21
  root.workbook
23
22
  rescue ::Zip::Error => e
24
23
  raise e, "XLSX file format error: #{e}", e.backtrace
25
24
  end
26
25
  end
27
-
28
26
  end
29
27
  end
@@ -1,98 +1,97 @@
1
1
  module RubyXL
2
- module LegacyWorksheet
3
- include Enumerable
4
-
5
- def initialize(params = {})
6
- super
7
- self.workbook = params[:workbook]
8
- self.sheet_name = params[:sheet_name]
9
- self.sheet_id = params[:sheet_id]
10
- self.sheet_data = RubyXL::SheetData.new
11
- self.cols = RubyXL::ColumnRanges.new
12
- @comments = [] # Do not optimize! These are arrays, so they will share the pointer!
13
- @printer_settings = []
14
- @generic_storage = []
15
- end
16
-
17
- # allows for easier access to sheet_data
18
- def [](row = 0)
19
- sheet_data[row]
20
- end
21
-
22
- def each
23
- sheet_data.rows.each { |row| yield(row) }
24
- end
25
-
26
- def add_row(row_index = 0, params = {})
27
- new_row = RubyXL::Row.new(params)
28
- new_row.worksheet = self
29
- sheet_data.rows[row_index] = new_row
30
- end
31
-
32
- def add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true)
33
- validate_workbook
34
- validate_nonnegative(row_index)
35
- validate_nonnegative(column_index)
36
- row = sheet_data.rows[row_index] || add_row(row_index)
37
-
38
- c = row.cells[column_index]
39
-
40
- if overwrite || c.nil?
41
- c = RubyXL::Cell.new
42
- c.worksheet = self
43
- c.row = row_index
44
- c.column = column_index
45
-
46
- if formula then
47
- c.formula = RubyXL::Formula.new(:expression => formula)
48
- c.raw_value = data
49
- else
50
- case data
51
- when Numeric then c.raw_value = data
52
- when String then
2
+ module LegacyWorksheet
3
+ include Enumerable
4
+
5
+ def initialize(params = {})
6
+ super
7
+ self.workbook = params[:workbook]
8
+ self.sheet_name = params[:sheet_name]
9
+ self.sheet_id = params[:sheet_id]
10
+ self.sheet_data = RubyXL::SheetData.new
11
+ self.cols = RubyXL::ColumnRanges.new
12
+ @comments = [] # Do not optimize! These are arrays, so they will share the pointer!
13
+ @printer_settings = []
14
+ @generic_storage = []
15
+ end
16
+
17
+ # allows for easier access to sheet_data
18
+ def [](row = 0)
19
+ sheet_data[row]
20
+ end
21
+
22
+ def each
23
+ sheet_data.rows.each { |row| yield(row) }
24
+ end
25
+
26
+ def add_row(row_index = 0, params = {})
27
+ new_row = RubyXL::Row.new(params)
28
+ new_row.worksheet = self
29
+ sheet_data.rows[row_index] = new_row
30
+ end
31
+
32
+ def add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true)
33
+ validate_workbook
34
+ validate_nonnegative(row_index)
35
+ validate_nonnegative(column_index)
36
+ row = sheet_data.rows[row_index] || add_row(row_index)
37
+
38
+ c = row.cells[column_index]
39
+
40
+ if overwrite || c.nil?
41
+ c = RubyXL::Cell.new
42
+ c.worksheet = self
43
+ c.row = row_index
44
+ c.column = column_index
45
+
46
+ if formula then
47
+ c.formula = RubyXL::Formula.new(:expression => formula)
53
48
  c.raw_value = data
54
- c.datatype = RubyXL::DataType::RAW_STRING
55
- when RubyXL::RichText then
56
- c.is = data
57
- c.datatype = RubyXL::DataType::INLINE_STRING
58
- when Date, DateTime then
59
- c.raw_value = workbook.date_to_num(data)
60
- when NilClass then nil
49
+ else
50
+ case data
51
+ when Numeric then c.raw_value = data
52
+ when String then
53
+ c.raw_value = data
54
+ c.datatype = RubyXL::DataType::RAW_STRING
55
+ when RubyXL::RichText then
56
+ c.is = data
57
+ c.datatype = RubyXL::DataType::INLINE_STRING
58
+ when Time, Date, DateTime then
59
+ c.raw_value = workbook.date_to_num(data)
60
+ when NilClass then nil
61
+ end
61
62
  end
63
+
64
+ range = cols && cols.locate_range(column_index)
65
+ c.style_index = row.style_index || (range && range.style_index) || 0
66
+ row.cells[column_index] = c
62
67
  end
63
68
 
64
- range = cols && cols.locate_range(column_index)
65
- c.style_index = row.style_index || (range && range.style_index) || 0
66
- row.cells[column_index] = c
69
+ c
67
70
  end
68
71
 
69
- c
70
- end
72
+ private
71
73
 
72
- private
74
+ # validates Workbook, ensures that this worksheet is in @workbook
75
+ def validate_workbook
76
+ unless @workbook.nil? || @workbook.worksheets.nil?
77
+ return if @workbook.worksheets.any? { |sheet| sheet.equal?(self) }
78
+ end
73
79
 
74
- #validates Workbook, ensures that this worksheet is in @workbook
75
- def validate_workbook()
76
- unless @workbook.nil? || @workbook.worksheets.nil?
77
- return if @workbook.worksheets.any? { |sheet| sheet.equal?(self) }
80
+ raise "This worksheet #{self} is not in workbook #{@workbook}"
78
81
  end
79
82
 
80
- raise "This worksheet #{self} is not in workbook #{@workbook}"
81
- end
83
+ # Ensures that storage space for a cell with +row_index+ and +column_index+
84
+ # exists in +sheet_data+ arrays, growing them up if necessary.
85
+ def ensure_cell_exists(row_index, column_index = 0)
86
+ validate_nonnegative(row_index)
87
+ validate_nonnegative(column_index)
82
88
 
83
- # Ensures that storage space for a cell with +row_index+ and +column_index+
84
- # exists in +sheet_data+ arrays, growing them up if necessary.
85
- def ensure_cell_exists(row_index, column_index = 0)
86
- validate_nonnegative(row_index)
87
- validate_nonnegative(column_index)
88
-
89
- sheet_data.rows[row_index] || add_row(row_index)
90
- end
91
-
92
- def validate_nonnegative(row_or_col)
93
- raise 'Row and Column arguments must be nonnegative' if row_or_col < 0
94
- end
95
- private :validate_nonnegative
89
+ sheet_data.rows[row_index] || add_row(row_index)
90
+ end
96
91
 
97
- end #end class
92
+ def validate_nonnegative(row_or_col)
93
+ raise 'Row and Column arguments must be nonnegative' if row_or_col < 0
94
+ end
95
+ private :validate_nonnegative
96
+ end # end class
98
97
  end
data/lib/rubyXL.rb CHANGED
@@ -9,5 +9,4 @@ module RubyXL
9
9
  return path unless path.absolute?
10
10
  path.relative_path_from(OOXMLTopLevelObject::ROOT)
11
11
  end
12
-
13
12
  end
@@ -4,7 +4,7 @@
4
4
  <head>
5
5
  <meta charset="UTF-8">
6
6
 
7
- <title>README - rubyXL 3.4.12</title>
7
+ <title>README - rubyXL 3.4.25</title>
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "./";
@@ -21,7 +21,6 @@
21
21
  <link href="./css/rdoc.css" rel="stylesheet">
22
22
 
23
23
 
24
-
25
24
  <body id="top" role="document" class="file">
26
25
  <nav role="navigation">
27
26
  <div id="project-navigation">
@@ -94,9 +93,11 @@
94
93
  <li><a href="#label-Insert+Cell">Insert Cell</a>
95
94
  <li><a href="#label-Delete+Cell">Delete Cell</a>
96
95
  <li><a href="#label-Modifying+Cell+Format">Modifying Cell Format</a>
96
+ <li><a href="#label-Add+hyperlink+to+a+Cell">Add hyperlink to a Cell</a>
97
97
  <li><a href="#label-I-2FO">I/O</a>
98
98
  <li><a href="#label-Miscellaneous">Miscellaneous</a>
99
99
  <li><a href="#label-Suppress+warnings+about+malformed+input+files">Suppress warnings about malformed input files</a>
100
+ <li><a href="#label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">Data validation (colloquially referred to as “dropdown list”)</a>
100
101
  <li><a href="#label-For+more+information">For more information</a>
101
102
  <li><a href="#label-Contributing+to+rubyXL">Contributing to rubyXL</a>
102
103
  <li><a href="#label-Copyright">Copyright</a>
@@ -105,13 +106,12 @@
105
106
 
106
107
 
107
108
  <div id="project-metadata">
108
- <div id="fileindex-section" class="nav-section">
109
+
110
+ <div id="fileindex-section" class="nav-section">
109
111
  <h3>Pages</h3>
110
112
 
111
113
  <ul class="link-list">
112
-
113
114
  <li><a href="./README_rdoc.html">README</a>
114
-
115
115
  </ul>
116
116
  </div>
117
117
 
@@ -189,6 +189,15 @@
189
189
  <pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
190
190
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns cell A1 in the worksheet</span>
191
191
  <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns cell A1 in the worksheet</span>
192
+
193
+ <span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>]
194
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">value</span> <span class="ruby-comment"># Returns a properly converted value in the cell (if the file claims that the cell</span>
195
+ <span class="ruby-comment"># is holding a number, returns a respective Integer or Float, and so on).</span>
196
+ </pre>
197
+
198
+ <p>Or, if you prefer Excel-style references (single-cell only!)</p>
199
+
200
+ <pre class="ruby"><span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">cell_at</span>(<span class="ruby-string">&#39;B11&#39;</span>)
192
201
  </pre>
193
202
 
194
203
  <h4 id="label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties<span><a href="#label-Wrappers+for+accessing+Cell+properties">&para;</a> <a href="#top">&uarr;</a></span></h4>
@@ -294,38 +303,30 @@
294
303
 
295
304
  <h5 id="label-Horizontal">Horizontal<span><a href="#label-Horizontal">&para;</a> <a href="#top">&uarr;</a></span></h5>
296
305
 
297
- <p>center, distributed, justify, left, right</p>
298
-
299
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_horizontal_alignment</span>(<span class="ruby-string">&#39;center&#39;</span>) <span class="ruby-comment"># Sets A1 to be centered</span>
306
+ <pre class="ruby"><span class="ruby-comment"># Possible alignments: center, distributed, justify, left, right</span>
307
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_horizontal_alignment</span>(<span class="ruby-string">&#39;center&#39;</span>) <span class="ruby-comment"># Sets A1 to be centered</span>
300
308
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_horizontal_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;justify&#39;</span>) <span class="ruby-comment"># Sets first row to be justified</span>
301
309
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_horizontal_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;right&#39;</span>) <span class="ruby-comment"># Sets first column to be right-aligned</span>
302
310
  </pre>
303
311
 
304
312
  <h5 id="label-Vertical">Vertical<span><a href="#label-Vertical">&para;</a> <a href="#top">&uarr;</a></span></h5>
305
313
 
306
- <p>bottom, center, distributed, top</p>
307
-
308
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_vertical_alignment</span>(<span class="ruby-string">&#39;bottom&#39;</span>) <span class="ruby-comment"># Sets A1 to be bottom aligned</span>
314
+ <pre class="ruby"><span class="ruby-comment"># Possible alignments: bottom, center, distributed, top</span>
315
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_vertical_alignment</span>(<span class="ruby-string">&#39;bottom&#39;</span>) <span class="ruby-comment"># Sets A1 to be bottom aligned</span>
309
316
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_vertical_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;distributed&#39;</span>) <span class="ruby-comment"># Sets first row to be distributed vertically</span>
310
317
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_vertical_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;top&#39;</span>) <span class="ruby-comment"># Sets first column to be top aligned</span>
311
318
  </pre>
312
319
 
313
320
  <h5 id="label-Rotation">Rotation<span><a href="#label-Rotation">&para;</a> <a href="#top">&uarr;</a></span></h5>
314
321
 
315
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_text_rotation</span>(<span class="ruby-value">90</span>) <span class="ruby-comment"># Sets A1 to be rotated by 90 degrees</span>
322
+ <pre class="ruby"><span class="ruby-comment"># Possible values:</span>
323
+ <span class="ruby-comment"># * 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;</span>
324
+ <span class="ruby-comment"># * 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;</span>
325
+ <span class="ruby-comment"># * 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible</span>
326
+ <span class="ruby-comment"># * 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.</span>
327
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_text_rotation</span>(<span class="ruby-value">90</span>) <span class="ruby-comment"># Sets A1 to be rotated by 90 degrees</span>
316
328
  </pre>
317
329
 
318
- <p>Values:</p>
319
- <ul><li>
320
- <p>0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;</p>
321
- </li><li>
322
- <p>91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;</p>
323
- </li><li>
324
- <p>180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible</p>
325
- </li><li>
326
- <p>255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.</p>
327
- </li></ul>
328
-
329
330
  <h4 id="label-Changing+Row+Height">Changing Row Height<span><a href="#label-Changing+Row+Height">&para;</a> <a href="#top">&uarr;</a></span></h4>
330
331
 
331
332
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_height</span>(<span class="ruby-value">0</span>, <span class="ruby-value">30</span>) <span class="ruby-comment"># Sets first row height to 30</span>
@@ -404,9 +405,16 @@
404
405
  <pre class="ruby"><span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>]
405
406
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">set_number_format</span> <span class="ruby-string">&#39;0.0000%&#39;</span> <span class="ruby-comment"># For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68</span>
406
407
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_text_wrap</span>(<span class="ruby-keyword">true</span>) <span class="ruby-comment"># Makes the text in the cell to wrap.</span>
408
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_shrink_to_fit</span>(<span class="ruby-keyword">true</span>) <span class="ruby-comment"># Makes the text in the cell to shrink to fit.</span>
407
409
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_text_indent</span>(<span class="ruby-value">1</span>) <span class="ruby-comment"># Indents the text in the cell by 1 level</span>
408
410
  </pre>
409
411
 
412
+ <h4 id="label-Add+hyperlink+to+a+Cell">Add hyperlink to a Cell<span><a href="#label-Add+hyperlink+to+a+Cell">&para;</a> <a href="#top">&uarr;</a></span></h4>
413
+
414
+ <pre class="ruby"><span class="ruby-identifier">cell</span>.<span class="ruby-identifier">add_hyperlink</span>(<span class="ruby-string">&#39;http://example.com&#39;</span>)
415
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">add_hyperlink</span>(<span class="ruby-string">&#39;http://example.com&#39;</span>, <span class="ruby-string">&#39;Some tooltip text&#39;</span>)
416
+ </pre>
417
+
410
418
  <h2 id="label-I-2FO">I/O<span><a href="#label-I-2FO">&para;</a> <a href="#top">&uarr;</a></span></h2>
411
419
 
412
420
  <p>By default, the gem operates with files on the local filesystem:</p>
@@ -432,15 +440,20 @@
432
440
  <pre class="ruby"><span class="ruby-constant">RubyXL</span>.<span class="ruby-identifier">class_variable_set</span>(<span class="ruby-value">:@@suppress_warnings</span>, <span class="ruby-keyword">true</span>)
433
441
  </pre>
434
442
 
443
+ <h2 id="label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">Data validation (colloquially referred to as “dropdown list”)<span><a href="#label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">&para;</a> <a href="#top">&uarr;</a></span></h2>
444
+
445
+ <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">add_validation_list</span>(<span class="ruby-string">&quot;A1&quot;</span>, [ <span class="ruby-string">&quot;value1&quot;</span>, <span class="ruby-string">&quot;value2&quot;</span> ])
446
+ </pre>
447
+
435
448
  <h2 id="label-For+more+information">For more information<span><a href="#label-For+more+information">&para;</a> <a href="#top">&uarr;</a></span></h2>
436
449
 
437
450
  <p>Take a look at the files in spec/lib/ for rspecs on most methods</p>
438
451
 
439
452
  <h2 id="label-Contributing+to+rubyXL">Contributing to rubyXL<span><a href="#label-Contributing+to+rubyXL">&para;</a> <a href="#top">&uarr;</a></span></h2>
440
453
  <ul><li>
441
- <p>Check out the latest master to make sure the feature hasn&#39;t been implemented or the bug hasn&#39;t been fixed yet</p>
454
+ <p>Check out the latest master to make sure the feature hasnt been implemented or the bug hasnt been fixed yet</p>
442
455
  </li><li>
443
- <p>Check out the issue tracker to make sure someone already hasn&#39;t requested it and/or contributed it</p>
456
+ <p>Check out the issue tracker to make sure someone already hasnt requested it and/or contributed it</p>
444
457
  </li><li>
445
458
  <p>Fork the project</p>
446
459
  </li><li>
@@ -448,21 +461,22 @@
448
461
  </li><li>
449
462
  <p>Commit and push until you are happy with your contribution</p>
450
463
  </li><li>
451
- <p>Make sure to add tests for it. This is important so I don&#39;t break it in a future version unintentionally.</p>
464
+ <p>Make sure to add tests for it. This is important so I dont break it in a future version unintentionally.</p>
452
465
  </li><li>
453
466
  <p>Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.</p>
454
467
  </li></ul>
455
468
 
456
469
  <h2 id="label-Copyright">Copyright<span><a href="#label-Copyright">&para;</a> <a href="#top">&uarr;</a></span></h2>
457
470
 
458
- <p>Copyright © 2011 Vivek Bhagwat, 2013-2020 Wesha. See LICENSE.txt for further details.</p>
471
+ <p>Copyright © 2011 Vivek Bhagwat, 2013-2022 Wesha. See LICENSE.txt for further details.</p>
472
+
459
473
  </main>
460
474
 
461
475
 
462
476
 
463
477
  <footer id="validator-badges" role="contentinfo">
464
478
  <p><a href="https://validator.w3.org/check/referer">Validate</a>
465
- <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.0.
479
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.
466
480
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
467
481
  </footer>
468
482