rubyXL 3.3.33 → 3.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +60 -0
  3. data/Gemfile +9 -8
  4. data/Gemfile.lock +124 -0
  5. data/LICENSE.txt +1 -1
  6. data/README.rdoc +46 -22
  7. data/Rakefile +29 -29
  8. data/VERSION +1 -1
  9. data/lib/rubyXL/cell.rb +2 -29
  10. data/lib/rubyXL/convenience_methods/cell.rb +276 -0
  11. data/lib/rubyXL/convenience_methods/color.rb +156 -0
  12. data/lib/rubyXL/convenience_methods/font.rb +63 -0
  13. data/lib/rubyXL/convenience_methods/workbook.rb +141 -0
  14. data/lib/rubyXL/convenience_methods/worksheet.rb +714 -0
  15. data/lib/rubyXL/convenience_methods.rb +5 -1301
  16. data/lib/rubyXL/objects/border.rb +0 -3
  17. data/lib/rubyXL/objects/calculation_chain.rb +2 -2
  18. data/lib/rubyXL/objects/cell_style.rb +1 -3
  19. data/lib/rubyXL/objects/chartsheet.rb +8 -12
  20. data/lib/rubyXL/objects/color.rb +3 -7
  21. data/lib/rubyXL/objects/column_range.rb +0 -3
  22. data/lib/rubyXL/objects/comments.rb +1 -4
  23. data/lib/rubyXL/objects/connection.rb +175 -0
  24. data/lib/rubyXL/objects/container_nodes.rb +1 -5
  25. data/lib/rubyXL/objects/content_types.rb +3 -6
  26. data/lib/rubyXL/objects/data_validation.rb +2 -2
  27. data/lib/rubyXL/objects/document_properties.rb +11 -15
  28. data/lib/rubyXL/objects/extensions.rb +0 -2
  29. data/lib/rubyXL/objects/external_links.rb +30 -8
  30. data/lib/rubyXL/objects/fill.rb +2 -5
  31. data/lib/rubyXL/objects/filters.rb +5 -7
  32. data/lib/rubyXL/objects/font.rb +2 -7
  33. data/lib/rubyXL/objects/formula.rb +3 -5
  34. data/lib/rubyXL/objects/ooxml_object.rb +26 -19
  35. data/lib/rubyXL/objects/query_table.rb +104 -0
  36. data/lib/rubyXL/objects/reference.rb +6 -8
  37. data/lib/rubyXL/objects/relationships.rb +13 -13
  38. data/lib/rubyXL/objects/root.rb +0 -2
  39. data/lib/rubyXL/objects/shared_strings.rb +3 -6
  40. data/lib/rubyXL/objects/sheet_common.rb +1 -3
  41. data/lib/rubyXL/objects/sheet_data.rb +38 -11
  42. data/lib/rubyXL/objects/simple_types.rb +16 -1
  43. data/lib/rubyXL/objects/storage.rb +51 -50
  44. data/lib/rubyXL/objects/stylesheet.rb +8 -15
  45. data/lib/rubyXL/objects/text.rb +5 -7
  46. data/lib/rubyXL/objects/theme.rb +5 -8
  47. data/lib/rubyXL/objects/workbook.rb +140 -33
  48. data/lib/rubyXL/objects/worksheet.rb +44 -31
  49. data/lib/rubyXL/parser.rb +1 -3
  50. data/lib/rubyXL/worksheet.rb +83 -91
  51. data/lib/rubyXL.rb +1 -1
  52. data/rdoc/README_rdoc.html +111 -126
  53. data/rdoc/RubyXL/AExtension.html +20 -60
  54. data/rdoc/RubyXL/AExtensionStorageArea.html +11 -17
  55. data/rdoc/RubyXL/ActiveX.html +19 -47
  56. data/rdoc/RubyXL/ActiveXBinary.html +11 -22
  57. data/rdoc/RubyXL/AdjustHandleList.html +12 -19
  58. data/rdoc/RubyXL/Alignment.html +12 -19
  59. data/rdoc/RubyXL/AlternateContent.html +11 -17
  60. data/rdoc/RubyXL/Authors.html +12 -19
  61. data/rdoc/RubyXL/AutoFilter.html +12 -19
  62. data/rdoc/RubyXL/AutoFilterColumn.html +12 -19
  63. data/rdoc/RubyXL/BinaryImageFile.html +11 -25
  64. data/rdoc/RubyXL/BodyProperties.html +12 -19
  65. data/rdoc/RubyXL/BooleanNode.html +11 -17
  66. data/rdoc/RubyXL/BooleanValue.html +11 -17
  67. data/rdoc/RubyXL/Border.html +24 -84
  68. data/rdoc/RubyXL/BorderEdge.html +19 -52
  69. data/rdoc/RubyXL/Borders.html +18 -39
  70. data/rdoc/RubyXL/Break.html +12 -19
  71. data/rdoc/RubyXL/BreakList.html +12 -19
  72. data/rdoc/RubyXL/CT_AdjPoint2D.html +12 -19
  73. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +12 -19
  74. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +12 -19
  75. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +12 -19
  76. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +12 -19
  77. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +12 -19
  78. data/rdoc/RubyXL/CT_Backdrop.html +12 -19
  79. data/rdoc/RubyXL/CT_Bevel.html +12 -19
  80. data/rdoc/RubyXL/CT_BiLevelEffect.html +12 -19
  81. data/rdoc/RubyXL/CT_BlendEffect.html +12 -19
  82. data/rdoc/RubyXL/CT_Blip.html +12 -19
  83. data/rdoc/RubyXL/CT_BlipFillProperties.html +12 -19
  84. data/rdoc/RubyXL/CT_BlurEffect.html +12 -19
  85. data/rdoc/RubyXL/CT_Camera.html +12 -19
  86. data/rdoc/RubyXL/CT_Color.html +12 -19
  87. data/rdoc/RubyXL/CT_ColorChangeEffect.html +12 -19
  88. data/rdoc/RubyXL/CT_ColorMapping.html +12 -19
  89. data/rdoc/RubyXL/CT_ColorScheme.html +12 -19
  90. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +12 -19
  91. data/rdoc/RubyXL/CT_ConnectionSite.html +12 -19
  92. data/rdoc/RubyXL/CT_ConnectionSiteList.html +12 -19
  93. data/rdoc/RubyXL/CT_DashStop.html +12 -19
  94. data/rdoc/RubyXL/CT_DashStopList.html +12 -19
  95. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +12 -19
  96. data/rdoc/RubyXL/CT_DuotoneEffect.html +12 -19
  97. data/rdoc/RubyXL/CT_EffectContainer.html +12 -19
  98. data/rdoc/RubyXL/CT_EffectList.html +12 -19
  99. data/rdoc/RubyXL/CT_EffectReference.html +12 -19
  100. data/rdoc/RubyXL/CT_EffectStyleItem.html +12 -19
  101. data/rdoc/RubyXL/CT_EffectStyleList.html +12 -19
  102. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +12 -19
  103. data/rdoc/RubyXL/CT_FillEffect.html +12 -19
  104. data/rdoc/RubyXL/CT_FillOverlayEffect.html +12 -19
  105. data/rdoc/RubyXL/CT_FillStyleList.html +12 -19
  106. data/rdoc/RubyXL/CT_FlatText.html +12 -19
  107. data/rdoc/RubyXL/CT_FontCollection.html +12 -19
  108. data/rdoc/RubyXL/CT_FontReference.html +12 -19
  109. data/rdoc/RubyXL/CT_GeomGuideList.html +12 -19
  110. data/rdoc/RubyXL/CT_GlowEffect.html +12 -19
  111. data/rdoc/RubyXL/CT_GradientFillProperties.html +12 -19
  112. data/rdoc/RubyXL/CT_GradientStop.html +12 -19
  113. data/rdoc/RubyXL/CT_GradientStopList.html +12 -19
  114. data/rdoc/RubyXL/CT_HSLEffect.html +12 -19
  115. data/rdoc/RubyXL/CT_HslColor.html +12 -19
  116. data/rdoc/RubyXL/CT_Hyperlink.html +12 -19
  117. data/rdoc/RubyXL/CT_InnerShadowEffect.html +12 -19
  118. data/rdoc/RubyXL/CT_LightRig.html +12 -19
  119. data/rdoc/RubyXL/CT_LineEndProperties.html +12 -19
  120. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +12 -19
  121. data/rdoc/RubyXL/CT_LineProperties.html +12 -19
  122. data/rdoc/RubyXL/CT_LineStyleList.html +12 -19
  123. data/rdoc/RubyXL/CT_LinearShadeProperties.html +12 -19
  124. data/rdoc/RubyXL/CT_LuminanceEffect.html +12 -19
  125. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +12 -19
  126. data/rdoc/RubyXL/CT_OuterShadowEffect.html +12 -19
  127. data/rdoc/RubyXL/CT_Path2D.html +12 -19
  128. data/rdoc/RubyXL/CT_Path2DArcTo.html +12 -19
  129. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +12 -19
  130. data/rdoc/RubyXL/CT_Path2DList.html +12 -19
  131. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +12 -19
  132. data/rdoc/RubyXL/CT_Path2DTo.html +12 -19
  133. data/rdoc/RubyXL/CT_PathShadeProperties.html +12 -19
  134. data/rdoc/RubyXL/CT_PatternFillProperties.html +12 -19
  135. data/rdoc/RubyXL/CT_Point3D.html +12 -19
  136. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +12 -19
  137. data/rdoc/RubyXL/CT_PresetColor.html +12 -19
  138. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +12 -19
  139. data/rdoc/RubyXL/CT_PresetShadowEffect.html +12 -19
  140. data/rdoc/RubyXL/CT_PresetTextShape.html +12 -19
  141. data/rdoc/RubyXL/CT_ReflectionEffect.html +12 -19
  142. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +12 -19
  143. data/rdoc/RubyXL/CT_RelativeRect.html +12 -19
  144. data/rdoc/RubyXL/CT_SRgbColor.html +12 -19
  145. data/rdoc/RubyXL/CT_ScRgbColor.html +12 -19
  146. data/rdoc/RubyXL/CT_Scene3D.html +12 -19
  147. data/rdoc/RubyXL/CT_SchemeColor.html +12 -19
  148. data/rdoc/RubyXL/CT_Shape3D.html +12 -19
  149. data/rdoc/RubyXL/CT_ShapeStyle.html +12 -19
  150. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +12 -19
  151. data/rdoc/RubyXL/CT_SphereCoords.html +12 -19
  152. data/rdoc/RubyXL/CT_StretchInfoProperties.html +12 -19
  153. data/rdoc/RubyXL/CT_StyleMatrix.html +12 -19
  154. data/rdoc/RubyXL/CT_StyleMatrixReference.html +12 -19
  155. data/rdoc/RubyXL/CT_SupplementalFont.html +12 -19
  156. data/rdoc/RubyXL/CT_SystemColor.html +12 -19
  157. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +12 -19
  158. data/rdoc/RubyXL/CT_TextBlipBullet.html +12 -19
  159. data/rdoc/RubyXL/CT_TextCharBullet.html +12 -19
  160. data/rdoc/RubyXL/CT_TextCharacterProperties.html +12 -19
  161. data/rdoc/RubyXL/CT_TextFont.html +12 -19
  162. data/rdoc/RubyXL/CT_TextListStyle.html +12 -19
  163. data/rdoc/RubyXL/CT_TextNormalAutofit.html +12 -19
  164. data/rdoc/RubyXL/CT_TextParagraphProperties.html +12 -19
  165. data/rdoc/RubyXL/CT_TextSpacing.html +12 -19
  166. data/rdoc/RubyXL/CT_TextTabStop.html +12 -19
  167. data/rdoc/RubyXL/CT_TextTabStopList.html +12 -19
  168. data/rdoc/RubyXL/CT_TileInfoProperties.html +12 -19
  169. data/rdoc/RubyXL/CT_TintEffect.html +12 -19
  170. data/rdoc/RubyXL/CT_Transform2D.html +12 -19
  171. data/rdoc/RubyXL/CT_TransformEffect.html +12 -19
  172. data/rdoc/RubyXL/CT_Vector3D.html +12 -19
  173. data/rdoc/RubyXL/CT_XYAdjustHandle.html +12 -19
  174. data/rdoc/RubyXL/CalculationChain.html +16 -45
  175. data/rdoc/RubyXL/CalculationChainCell.html +12 -19
  176. data/rdoc/RubyXL/CalculationProperties.html +12 -19
  177. data/rdoc/RubyXL/Cell.html +133 -209
  178. data/rdoc/RubyXL/CellConvenienceMethods.html +168 -522
  179. data/rdoc/RubyXL/CellExt.html +12 -19
  180. data/rdoc/RubyXL/CellSmartTag.html +12 -19
  181. data/rdoc/RubyXL/CellSmartTagProperty.html +12 -19
  182. data/rdoc/RubyXL/CellSmartTags.html +12 -19
  183. data/rdoc/RubyXL/CellStyle.html +12 -19
  184. data/rdoc/RubyXL/CellStyleXFs.html +18 -39
  185. data/rdoc/RubyXL/CellStyles.html +18 -39
  186. data/rdoc/RubyXL/CellValue.html +17 -38
  187. data/rdoc/RubyXL/CellWatch.html +12 -19
  188. data/rdoc/RubyXL/CellWatches.html +12 -19
  189. data/rdoc/RubyXL/CellXFs.html +19 -42
  190. data/rdoc/RubyXL/ChartColorsFile.html +11 -25
  191. data/rdoc/RubyXL/ChartFile.html +18 -49
  192. data/rdoc/RubyXL/ChartStyleFile.html +11 -25
  193. data/rdoc/RubyXL/ChartUserShapesFile.html +11 -25
  194. data/rdoc/RubyXL/Chartsheet.html +19 -68
  195. data/rdoc/RubyXL/ChartsheetPageSetup.html +12 -19
  196. data/rdoc/RubyXL/ChartsheetProperties.html +12 -19
  197. data/rdoc/RubyXL/ChartsheetProtection.html +12 -19
  198. data/rdoc/RubyXL/ChartsheetView.html +12 -19
  199. data/rdoc/RubyXL/ChartsheetViews.html +12 -19
  200. data/rdoc/RubyXL/Color.html +18 -55
  201. data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +18 -65
  202. data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +28 -88
  203. data/rdoc/RubyXL/ColorConvenienceClasses.html +9 -14
  204. data/rdoc/RubyXL/ColorConvenienceMethods.html +14 -33
  205. data/rdoc/RubyXL/ColorFilter.html +12 -19
  206. data/rdoc/RubyXL/ColorScale.html +12 -19
  207. data/rdoc/RubyXL/ColorSet.html +12 -19
  208. data/rdoc/RubyXL/Colors.html +12 -19
  209. data/rdoc/RubyXL/ColumnRange.html +22 -74
  210. data/rdoc/RubyXL/ColumnRanges.html +23 -83
  211. data/rdoc/RubyXL/Comment.html +12 -19
  212. data/rdoc/RubyXL/CommentList.html +12 -19
  213. data/rdoc/RubyXL/CommentsFile.html +17 -51
  214. data/rdoc/RubyXL/ConditionalFormatValue.html +12 -19
  215. data/rdoc/RubyXL/ConditionalFormatting.html +12 -19
  216. data/rdoc/RubyXL/ConditionalFormattingRule.html +12 -19
  217. data/rdoc/RubyXL/Connection.html +99 -0
  218. data/rdoc/RubyXL/ConnectionTable.html +99 -0
  219. data/rdoc/RubyXL/ConnectionTables.html +99 -0
  220. data/rdoc/RubyXL/ConnectionTextField.html +99 -0
  221. data/rdoc/RubyXL/ConnectionTextFields.html +99 -0
  222. data/rdoc/RubyXL/Connections.html +147 -0
  223. data/rdoc/RubyXL/ContentTypeDefault.html +11 -17
  224. data/rdoc/RubyXL/ContentTypeOverride.html +11 -17
  225. data/rdoc/RubyXL/ContentTypes.html +22 -63
  226. data/rdoc/RubyXL/ControlPropertiesFile.html +13 -22
  227. data/rdoc/RubyXL/CorePropertiesFile.html +34 -171
  228. data/rdoc/RubyXL/CustomColor.html +12 -19
  229. data/rdoc/RubyXL/CustomColorList.html +12 -19
  230. data/rdoc/RubyXL/CustomFilter.html +12 -19
  231. data/rdoc/RubyXL/CustomFilters.html +12 -19
  232. data/rdoc/RubyXL/CustomGeometry.html +12 -19
  233. data/rdoc/RubyXL/CustomProperties.html +12 -19
  234. data/rdoc/RubyXL/CustomPropertiesFile.html +11 -25
  235. data/rdoc/RubyXL/CustomProperty.html +12 -19
  236. data/rdoc/RubyXL/CustomPropertyFile.html +11 -25
  237. data/rdoc/RubyXL/CustomSheetView.html +12 -19
  238. data/rdoc/RubyXL/CustomSheetViews.html +12 -19
  239. data/rdoc/RubyXL/CustomWorkbookView.html +12 -19
  240. data/rdoc/RubyXL/CustomWorkbookViews.html +12 -19
  241. data/rdoc/RubyXL/CustomXMLFile.html +11 -22
  242. data/rdoc/RubyXL/DXF.html +12 -19
  243. data/rdoc/RubyXL/DXFs.html +12 -19
  244. data/rdoc/RubyXL/DataBar.html +12 -19
  245. data/rdoc/RubyXL/DataConsolidate.html +12 -19
  246. data/rdoc/RubyXL/DataConsolidationReference.html +12 -19
  247. data/rdoc/RubyXL/DataConsolidationReferences.html +12 -19
  248. data/rdoc/RubyXL/DataType.html +10 -39
  249. data/rdoc/RubyXL/DataValidation.html +12 -19
  250. data/rdoc/RubyXL/DataValidations.html +12 -19
  251. data/rdoc/RubyXL/DateGroupItem.html +12 -19
  252. data/rdoc/RubyXL/DefinedName.html +12 -19
  253. data/rdoc/RubyXL/DefinedNameExt.html +12 -19
  254. data/rdoc/RubyXL/DefinedNames.html +12 -19
  255. data/rdoc/RubyXL/DefinedNamesExt.html +12 -19
  256. data/rdoc/RubyXL/DocumentPropertiesFile.html +21 -68
  257. data/rdoc/RubyXL/DrawingFile.html +18 -49
  258. data/rdoc/RubyXL/DynamicFilter.html +12 -19
  259. data/rdoc/RubyXL/EmbeddedControl.html +12 -19
  260. data/rdoc/RubyXL/EmbeddedControls.html +12 -19
  261. data/rdoc/RubyXL/Extension.html +12 -19
  262. data/rdoc/RubyXL/ExtensionStorageArea.html +12 -19
  263. data/rdoc/RubyXL/Extents.html +12 -19
  264. data/rdoc/RubyXL/ExternalBook.html +12 -19
  265. data/rdoc/RubyXL/ExternalLinksFile.html +18 -49
  266. data/rdoc/RubyXL/ExternalReference.html +12 -19
  267. data/rdoc/RubyXL/ExternalReferences.html +12 -19
  268. data/rdoc/RubyXL/ExtraColorSchemeList.html +12 -19
  269. data/rdoc/RubyXL/FieldItem.html +12 -19
  270. data/rdoc/RubyXL/FileRecoveryProperties.html +12 -19
  271. data/rdoc/RubyXL/FileSharing.html +12 -19
  272. data/rdoc/RubyXL/FileVersion.html +12 -19
  273. data/rdoc/RubyXL/Fill.html +18 -39
  274. data/rdoc/RubyXL/Fills.html +18 -39
  275. data/rdoc/RubyXL/FilterContainer.html +12 -19
  276. data/rdoc/RubyXL/FloatNode.html +11 -17
  277. data/rdoc/RubyXL/FloatValue.html +11 -17
  278. data/rdoc/RubyXL/Font.html +21 -59
  279. data/rdoc/RubyXL/FontConvenienceMethods.html +48 -237
  280. data/rdoc/RubyXL/FontScheme.html +12 -19
  281. data/rdoc/RubyXL/Fonts.html +18 -39
  282. data/rdoc/RubyXL/Formula.html +12 -19
  283. data/rdoc/RubyXL/FunctionGroup.html +12 -19
  284. data/rdoc/RubyXL/FunctionGroups.html +12 -19
  285. data/rdoc/RubyXL/GenericStorageObject.html +21 -84
  286. data/rdoc/RubyXL/GradientFill.html +12 -19
  287. data/rdoc/RubyXL/HeaderFooterSettings.html +12 -19
  288. data/rdoc/RubyXL/Hyperlink.html +12 -19
  289. data/rdoc/RubyXL/HyperlinkRelFile.html +11 -22
  290. data/rdoc/RubyXL/Hyperlinks.html +12 -19
  291. data/rdoc/RubyXL/IconFilter.html +12 -19
  292. data/rdoc/RubyXL/IconSet.html +12 -19
  293. data/rdoc/RubyXL/IgnoredError.html +12 -19
  294. data/rdoc/RubyXL/IgnoredErrors.html +12 -19
  295. data/rdoc/RubyXL/IndexedColors.html +12 -19
  296. data/rdoc/RubyXL/InputCells.html +12 -19
  297. data/rdoc/RubyXL/IntegerNode.html +11 -17
  298. data/rdoc/RubyXL/IntegerValue.html +11 -17
  299. data/rdoc/RubyXL/LegacyCell.html +13 -66
  300. data/rdoc/RubyXL/LegacyWorksheet.html +25 -99
  301. data/rdoc/RubyXL/MRUColors.html +12 -19
  302. data/rdoc/RubyXL/MacrosFile.html +11 -25
  303. data/rdoc/RubyXL/MergedCell.html +12 -19
  304. data/rdoc/RubyXL/MergedCells.html +12 -19
  305. data/rdoc/RubyXL/NumFmt.html +12 -19
  306. data/rdoc/RubyXL/NumberFormat.html +18 -39
  307. data/rdoc/RubyXL/NumberFormats.html +18 -45
  308. data/rdoc/RubyXL/OLEObject.html +12 -19
  309. data/rdoc/RubyXL/OLEObjectFile.html +11 -25
  310. data/rdoc/RubyXL/OLEObjects.html +12 -19
  311. data/rdoc/RubyXL/OLESize.html +12 -19
  312. data/rdoc/RubyXL/OOXMLContainerObject.html +35 -132
  313. data/rdoc/RubyXL/OOXMLIgnored.html +19 -53
  314. data/rdoc/RubyXL/OOXMLObject.html +14 -25
  315. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +91 -183
  316. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +48 -185
  317. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +47 -200
  318. data/rdoc/RubyXL/OOXMLTopLevelObject.html +36 -133
  319. data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
  320. data/rdoc/RubyXL/Offset.html +12 -19
  321. data/rdoc/RubyXL/OlapProperties.html +99 -0
  322. data/rdoc/RubyXL/OleItem.html +99 -0
  323. data/rdoc/RubyXL/OleItems.html +99 -0
  324. data/rdoc/RubyXL/OleLink.html +99 -0
  325. data/rdoc/RubyXL/OutlineProperties.html +12 -19
  326. data/rdoc/RubyXL/PageMargins.html +12 -19
  327. data/rdoc/RubyXL/PageSetup.html +12 -19
  328. data/rdoc/RubyXL/PageSetupProperties.html +12 -19
  329. data/rdoc/RubyXL/Pane.html +12 -19
  330. data/rdoc/RubyXL/Parser.html +22 -56
  331. data/rdoc/RubyXL/PatternFill.html +12 -19
  332. data/rdoc/RubyXL/PhoneticProperties.html +12 -19
  333. data/rdoc/RubyXL/PhoneticRun.html +12 -19
  334. data/rdoc/RubyXL/PivotArea.html +12 -19
  335. data/rdoc/RubyXL/PivotCache.html +12 -19
  336. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +13 -30
  337. data/rdoc/RubyXL/PivotCacheRecordsFile.html +11 -25
  338. data/rdoc/RubyXL/PivotCaches.html +12 -19
  339. data/rdoc/RubyXL/PivotReference.html +12 -19
  340. data/rdoc/RubyXL/PivotReferences.html +12 -19
  341. data/rdoc/RubyXL/PivotTableFile.html +13 -30
  342. data/rdoc/RubyXL/PivotTableSelection.html +12 -19
  343. data/rdoc/RubyXL/PresetGeometry.html +12 -19
  344. data/rdoc/RubyXL/PrintOptions.html +12 -19
  345. data/rdoc/RubyXL/PrinterSettingsFile.html +11 -25
  346. data/rdoc/RubyXL/ProtectedRange.html +12 -19
  347. data/rdoc/RubyXL/ProtectedRanges.html +12 -19
  348. data/rdoc/RubyXL/Protection.html +12 -19
  349. data/rdoc/RubyXL/QueryParameter.html +99 -0
  350. data/rdoc/RubyXL/QueryParameters.html +99 -0
  351. data/rdoc/RubyXL/QueryTable.html +155 -0
  352. data/rdoc/RubyXL/QueryTableDeletedField.html +99 -0
  353. data/rdoc/RubyXL/QueryTableDeletedFields.html +99 -0
  354. data/rdoc/RubyXL/QueryTableField.html +99 -0
  355. data/rdoc/RubyXL/QueryTableFields.html +99 -0
  356. data/rdoc/RubyXL/QueryTableRefresh.html +99 -0
  357. data/rdoc/RubyXL/RID.html +11 -17
  358. data/rdoc/RubyXL/RawOOXML.html +20 -60
  359. data/rdoc/RubyXL/Reference.html +62 -228
  360. data/rdoc/RubyXL/Relationship.html +11 -17
  361. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +13 -32
  362. data/rdoc/RubyXL/RelationshipSupport.html +25 -120
  363. data/rdoc/RubyXL/RevisionPointer.html +12 -22
  364. data/rdoc/RubyXL/RichText.html +19 -39
  365. data/rdoc/RubyXL/RichTextRun.html +17 -38
  366. data/rdoc/RubyXL/Row.html +33 -168
  367. data/rdoc/RubyXL/RowExt.html +12 -19
  368. data/rdoc/RubyXL/RunProperties.html +12 -19
  369. data/rdoc/RubyXL/Scenario.html +12 -19
  370. data/rdoc/RubyXL/Scenarios.html +12 -19
  371. data/rdoc/RubyXL/Selection.html +16 -37
  372. data/rdoc/RubyXL/ShapeGuide.html +12 -19
  373. data/rdoc/RubyXL/ShapeTextRectangle.html +12 -19
  374. data/rdoc/RubyXL/SharedStringsTable.html +37 -147
  375. data/rdoc/RubyXL/Sheet.html +12 -19
  376. data/rdoc/RubyXL/SheetCalculationProperties.html +12 -19
  377. data/rdoc/RubyXL/SheetData.html +19 -53
  378. data/rdoc/RubyXL/SheetDataExt.html +12 -19
  379. data/rdoc/RubyXL/SheetDataSet.html +12 -19
  380. data/rdoc/RubyXL/SheetMetadata.html +108 -0
  381. data/rdoc/RubyXL/SheetName.html +12 -19
  382. data/rdoc/RubyXL/SheetNames.html +12 -19
  383. data/rdoc/RubyXL/Sheets.html +12 -19
  384. data/rdoc/RubyXL/SlicerCacheFile.html +11 -25
  385. data/rdoc/RubyXL/SlicerFile.html +11 -25
  386. data/rdoc/RubyXL/SmartTagProperties.html +12 -19
  387. data/rdoc/RubyXL/SmartTagType.html +12 -19
  388. data/rdoc/RubyXL/SmartTagTypes.html +12 -19
  389. data/rdoc/RubyXL/SmartTags.html +12 -19
  390. data/rdoc/RubyXL/SortCondition.html +12 -19
  391. data/rdoc/RubyXL/SortState.html +12 -19
  392. data/rdoc/RubyXL/Sqref.html +19 -53
  393. data/rdoc/RubyXL/Stop.html +12 -19
  394. data/rdoc/RubyXL/StringNode.html +11 -17
  395. data/rdoc/RubyXL/StringNodeW3C.html +20 -54
  396. data/rdoc/RubyXL/StringValue.html +11 -17
  397. data/rdoc/RubyXL/Stylesheet.html +34 -117
  398. data/rdoc/RubyXL/TableFile.html +11 -25
  399. data/rdoc/RubyXL/TableParts.html +11 -17
  400. data/rdoc/RubyXL/TableStyle.html +12 -19
  401. data/rdoc/RubyXL/TableStyles.html +12 -19
  402. data/rdoc/RubyXL/Text.html +22 -67
  403. data/rdoc/RubyXL/TextImportSettings.html +99 -0
  404. data/rdoc/RubyXL/Theme.html +19 -75
  405. data/rdoc/RubyXL/ThemeElements.html +12 -19
  406. data/rdoc/RubyXL/ThumbnailFile.html +11 -25
  407. data/rdoc/RubyXL/Top10.html +12 -19
  408. data/rdoc/RubyXL/VMLDrawingFile.html +14 -32
  409. data/rdoc/RubyXL/Variant.html +12 -19
  410. data/rdoc/RubyXL/Vector.html +17 -38
  411. data/rdoc/RubyXL/VectorValue.html +11 -17
  412. data/rdoc/RubyXL/VisualProperties.html +12 -19
  413. data/rdoc/RubyXL/WebPublishObject.html +12 -19
  414. data/rdoc/RubyXL/WebPublishObjects.html +12 -19
  415. data/rdoc/RubyXL/WebPublishingItem.html +12 -19
  416. data/rdoc/RubyXL/WebPublishingItems.html +12 -19
  417. data/rdoc/RubyXL/WebPublishingProperties.html +12 -19
  418. data/rdoc/RubyXL/WebQueryProperties.html +99 -0
  419. data/rdoc/RubyXL/Workbook.html +486 -227
  420. data/rdoc/RubyXL/WorkbookConvenienceMethods.html +130 -888
  421. data/rdoc/RubyXL/WorkbookProperties.html +12 -19
  422. data/rdoc/RubyXL/WorkbookProtection.html +12 -19
  423. data/rdoc/RubyXL/WorkbookRoot.html +27 -114
  424. data/rdoc/RubyXL/WorkbookView.html +12 -19
  425. data/rdoc/RubyXL/WorkbookViews.html +12 -19
  426. data/rdoc/RubyXL/Worksheet.html +92 -121
  427. data/rdoc/RubyXL/WorksheetConvenienceMethods.html +298 -1109
  428. data/rdoc/RubyXL/WorksheetDimensions.html +12 -19
  429. data/rdoc/RubyXL/WorksheetFormatProperties.html +11 -17
  430. data/rdoc/RubyXL/WorksheetProperties.html +12 -19
  431. data/rdoc/RubyXL/WorksheetProtection.html +12 -19
  432. data/rdoc/RubyXL/WorksheetView.html +12 -19
  433. data/rdoc/RubyXL/WorksheetViews.html +12 -19
  434. data/rdoc/RubyXL/XF.html +12 -19
  435. data/rdoc/RubyXL.html +39 -318
  436. data/rdoc/created.rid +45 -38
  437. data/rdoc/css/rdoc.css +55 -6
  438. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  439. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  440. data/rdoc/index.html +33 -373
  441. data/rdoc/js/darkfish.js +22 -99
  442. data/rdoc/js/navigation.js +4 -41
  443. data/rdoc/js/navigation.js.gz +0 -0
  444. data/rdoc/js/search.js +32 -31
  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 +6 -6
  448. data/rdoc/js/searcher.js.gz +0 -0
  449. data/rdoc/table_of_contents.html +205 -45
  450. data/rubyXL.gemspec +53 -29
  451. data/spec/lib/cell_spec.rb +57 -6
  452. data/spec/lib/color_spec.rb +2 -1
  453. data/spec/lib/parser_spec.rb +24 -27
  454. data/spec/lib/reference_spec.rb +9 -3
  455. data/spec/lib/rgb_color_spec.rb +27 -0
  456. data/spec/lib/stylesheet_spec.rb +8 -11
  457. data/spec/lib/text_spec.rb +1 -5
  458. data/spec/lib/workbook_spec.rb +25 -4
  459. data/spec/lib/worksheet_spec.rb +873 -479
  460. data/spec/spec_helper.rb +2 -0
  461. data/test/test_parse_write.rb +15 -15
  462. metadata +54 -10
  463. data/rdoc/js/jquery.js +0 -4
data/rubyXL.gemspec CHANGED
@@ -1,17 +1,17 @@
1
- # Generated by jeweler
1
+ # Generated by juwelier
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: rubyXL 3.3.33 ruby lib
5
+ # stub: rubyXL 3.4.25 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "rubyXL".freeze
9
- s.version = "3.3.33"
9
+ s.version = "3.4.25"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Vivek Bhagwat".freeze, "Wesha".freeze]
14
- s.date = "2019-01-17"
14
+ s.date = "2022-05-19"
15
15
  s.description = "rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents".freeze
16
16
  s.email = "bhagwat.vivek@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
@@ -19,8 +19,10 @@ Gem::Specification.new do |s|
19
19
  "README.rdoc"
20
20
  ]
21
21
  s.files = [
22
+ ".circleci/config.yml",
22
23
  ".codeclimate.yml",
23
24
  "Gemfile",
25
+ "Gemfile.lock",
24
26
  "LICENSE.txt",
25
27
  "README.rdoc",
26
28
  "Rakefile",
@@ -28,6 +30,11 @@ Gem::Specification.new do |s|
28
30
  "lib/rubyXL.rb",
29
31
  "lib/rubyXL/cell.rb",
30
32
  "lib/rubyXL/convenience_methods.rb",
33
+ "lib/rubyXL/convenience_methods/cell.rb",
34
+ "lib/rubyXL/convenience_methods/color.rb",
35
+ "lib/rubyXL/convenience_methods/font.rb",
36
+ "lib/rubyXL/convenience_methods/workbook.rb",
37
+ "lib/rubyXL/convenience_methods/worksheet.rb",
31
38
  "lib/rubyXL/objects/border.rb",
32
39
  "lib/rubyXL/objects/calculation_chain.rb",
33
40
  "lib/rubyXL/objects/cell_style.rb",
@@ -35,6 +42,7 @@ Gem::Specification.new do |s|
35
42
  "lib/rubyXL/objects/color.rb",
36
43
  "lib/rubyXL/objects/column_range.rb",
37
44
  "lib/rubyXL/objects/comments.rb",
45
+ "lib/rubyXL/objects/connection.rb",
38
46
  "lib/rubyXL/objects/container_nodes.rb",
39
47
  "lib/rubyXL/objects/content_types.rb",
40
48
  "lib/rubyXL/objects/data_validation.rb",
@@ -46,6 +54,7 @@ Gem::Specification.new do |s|
46
54
  "lib/rubyXL/objects/font.rb",
47
55
  "lib/rubyXL/objects/formula.rb",
48
56
  "lib/rubyXL/objects/ooxml_object.rb",
57
+ "lib/rubyXL/objects/query_table.rb",
49
58
  "lib/rubyXL/objects/reference.rb",
50
59
  "lib/rubyXL/objects/relationships.rb",
51
60
  "lib/rubyXL/objects/root.rb",
@@ -227,6 +236,12 @@ Gem::Specification.new do |s|
227
236
  "rdoc/RubyXL/ConditionalFormatValue.html",
228
237
  "rdoc/RubyXL/ConditionalFormatting.html",
229
238
  "rdoc/RubyXL/ConditionalFormattingRule.html",
239
+ "rdoc/RubyXL/Connection.html",
240
+ "rdoc/RubyXL/ConnectionTable.html",
241
+ "rdoc/RubyXL/ConnectionTables.html",
242
+ "rdoc/RubyXL/ConnectionTextField.html",
243
+ "rdoc/RubyXL/ConnectionTextFields.html",
244
+ "rdoc/RubyXL/Connections.html",
230
245
  "rdoc/RubyXL/ContentTypeDefault.html",
231
246
  "rdoc/RubyXL/ContentTypeOverride.html",
232
247
  "rdoc/RubyXL/ContentTypes.html",
@@ -323,7 +338,12 @@ Gem::Specification.new do |s|
323
338
  "rdoc/RubyXL/OOXMLObjectInstanceMethods.html",
324
339
  "rdoc/RubyXL/OOXMLRelationshipsFile.html",
325
340
  "rdoc/RubyXL/OOXMLTopLevelObject.html",
341
+ "rdoc/RubyXL/OdbcOleDbProperties.html",
326
342
  "rdoc/RubyXL/Offset.html",
343
+ "rdoc/RubyXL/OlapProperties.html",
344
+ "rdoc/RubyXL/OleItem.html",
345
+ "rdoc/RubyXL/OleItems.html",
346
+ "rdoc/RubyXL/OleLink.html",
327
347
  "rdoc/RubyXL/OutlineProperties.html",
328
348
  "rdoc/RubyXL/PageMargins.html",
329
349
  "rdoc/RubyXL/PageSetup.html",
@@ -348,6 +368,14 @@ Gem::Specification.new do |s|
348
368
  "rdoc/RubyXL/ProtectedRange.html",
349
369
  "rdoc/RubyXL/ProtectedRanges.html",
350
370
  "rdoc/RubyXL/Protection.html",
371
+ "rdoc/RubyXL/QueryParameter.html",
372
+ "rdoc/RubyXL/QueryParameters.html",
373
+ "rdoc/RubyXL/QueryTable.html",
374
+ "rdoc/RubyXL/QueryTableDeletedField.html",
375
+ "rdoc/RubyXL/QueryTableDeletedFields.html",
376
+ "rdoc/RubyXL/QueryTableField.html",
377
+ "rdoc/RubyXL/QueryTableFields.html",
378
+ "rdoc/RubyXL/QueryTableRefresh.html",
351
379
  "rdoc/RubyXL/RID.html",
352
380
  "rdoc/RubyXL/RawOOXML.html",
353
381
  "rdoc/RubyXL/Reference.html",
@@ -371,6 +399,7 @@ Gem::Specification.new do |s|
371
399
  "rdoc/RubyXL/SheetData.html",
372
400
  "rdoc/RubyXL/SheetDataExt.html",
373
401
  "rdoc/RubyXL/SheetDataSet.html",
402
+ "rdoc/RubyXL/SheetMetadata.html",
374
403
  "rdoc/RubyXL/SheetName.html",
375
404
  "rdoc/RubyXL/SheetNames.html",
376
405
  "rdoc/RubyXL/Sheets.html",
@@ -393,6 +422,7 @@ Gem::Specification.new do |s|
393
422
  "rdoc/RubyXL/TableStyle.html",
394
423
  "rdoc/RubyXL/TableStyles.html",
395
424
  "rdoc/RubyXL/Text.html",
425
+ "rdoc/RubyXL/TextImportSettings.html",
396
426
  "rdoc/RubyXL/Theme.html",
397
427
  "rdoc/RubyXL/ThemeElements.html",
398
428
  "rdoc/RubyXL/ThumbnailFile.html",
@@ -407,6 +437,7 @@ Gem::Specification.new do |s|
407
437
  "rdoc/RubyXL/WebPublishingItem.html",
408
438
  "rdoc/RubyXL/WebPublishingItems.html",
409
439
  "rdoc/RubyXL/WebPublishingProperties.html",
440
+ "rdoc/RubyXL/WebQueryProperties.html",
410
441
  "rdoc/RubyXL/Workbook.html",
411
442
  "rdoc/RubyXL/WorkbookConvenienceMethods.html",
412
443
  "rdoc/RubyXL/WorkbookProperties.html",
@@ -459,7 +490,6 @@ Gem::Specification.new do |s|
459
490
  "rdoc/images/zoom.png",
460
491
  "rdoc/index.html",
461
492
  "rdoc/js/darkfish.js",
462
- "rdoc/js/jquery.js",
463
493
  "rdoc/js/navigation.js",
464
494
  "rdoc/js/navigation.js.gz",
465
495
  "rdoc/js/search.js",
@@ -473,6 +503,7 @@ Gem::Specification.new do |s|
473
503
  "spec/lib/color_spec.rb",
474
504
  "spec/lib/parser_spec.rb",
475
505
  "spec/lib/reference_spec.rb",
506
+ "spec/lib/rgb_color_spec.rb",
476
507
  "spec/lib/stylesheet_spec.rb",
477
508
  "spec/lib/text_spec.rb",
478
509
  "spec/lib/workbook_spec.rb",
@@ -485,40 +516,33 @@ Gem::Specification.new do |s|
485
516
  ]
486
517
  s.homepage = "http://github.com/gilt/rubyXL".freeze
487
518
  s.licenses = ["MIT".freeze]
488
- s.rubygems_version = "2.7.8".freeze
519
+ s.rubygems_version = "3.3.12".freeze
489
520
  s.summary = "rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents".freeze
490
521
 
491
522
  if s.respond_to? :specification_version then
492
523
  s.specification_version = 4
524
+ end
493
525
 
494
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
495
- s.add_runtime_dependency(%q<nokogiri>.freeze, [">= 1.4.4"])
496
- s.add_runtime_dependency(%q<rubyzip>.freeze, [">= 1.1.6"])
497
- s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
498
- s.add_development_dependency(%q<rake>.freeze, [">= 0"])
499
- s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
500
- s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
501
- s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
502
- s.add_development_dependency(%q<ruby-prof>.freeze, [">= 0"])
503
- else
504
- s.add_dependency(%q<nokogiri>.freeze, [">= 1.4.4"])
505
- s.add_dependency(%q<rubyzip>.freeze, [">= 1.1.6"])
506
- s.add_dependency(%q<bundler>.freeze, [">= 0"])
507
- s.add_dependency(%q<rake>.freeze, [">= 0"])
508
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
509
- s.add_dependency(%q<rspec>.freeze, [">= 0"])
510
- s.add_dependency(%q<simplecov>.freeze, [">= 0"])
511
- s.add_dependency(%q<ruby-prof>.freeze, [">= 0"])
512
- end
526
+ if s.respond_to? :add_runtime_dependency then
527
+ s.add_runtime_dependency(%q<nokogiri>.freeze, [">= 1.10.8"])
528
+ s.add_runtime_dependency(%q<rubyzip>.freeze, [">= 1.3.0"])
529
+ s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
530
+ s.add_development_dependency(%q<rake>.freeze, [">= 0"])
531
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
532
+ s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
533
+ s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
534
+ s.add_development_dependency(%q<ruby-prof>.freeze, [">= 0"])
535
+ s.add_development_dependency(%q<rspec_junit_formatter>.freeze, [">= 0"])
513
536
  else
514
- s.add_dependency(%q<nokogiri>.freeze, [">= 1.4.4"])
515
- s.add_dependency(%q<rubyzip>.freeze, [">= 1.1.6"])
537
+ s.add_dependency(%q<nokogiri>.freeze, [">= 1.10.8"])
538
+ s.add_dependency(%q<rubyzip>.freeze, [">= 1.3.0"])
516
539
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
517
540
  s.add_dependency(%q<rake>.freeze, [">= 0"])
518
- s.add_dependency(%q<jeweler>.freeze, [">= 0"])
541
+ s.add_dependency(%q<juwelier>.freeze, [">= 0"])
519
542
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
520
543
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
521
544
  s.add_dependency(%q<ruby-prof>.freeze, [">= 0"])
545
+ s.add_dependency(%q<rspec_junit_formatter>.freeze, [">= 0"])
522
546
  end
523
547
  end
524
548
 
@@ -1,8 +1,9 @@
1
1
  require 'spec_helper'
2
2
  require 'bigdecimal'
3
+ require 'rubyXL/convenience_methods/font'
4
+ require 'rubyXL/convenience_methods/cell'
3
5
 
4
6
  describe RubyXL::Cell do
5
-
6
7
  before do
7
8
  @workbook = RubyXL::Workbook.new
8
9
  @worksheet = @workbook.add_worksheet('Test Worksheet')
@@ -29,6 +30,42 @@ describe RubyXL::Cell do
29
30
  cell = @worksheet.add_cell(r, c, RubyXL::RichText.new(:t => RubyXL::Text.new(:value => 'Hello')))
30
31
  expect(cell.datatype).to eq(RubyXL::DataType::INLINE_STRING)
31
32
  end
33
+
34
+ it 'should properly handle dates' do
35
+ r = 3
36
+ c = 3
37
+
38
+ dt = Date.today
39
+ cell = @worksheet.add_cell(r, c, dt)
40
+ cell.set_number_format('ddd mmm dd, yyyy')
41
+ expect(cell.value).to eq(dt)
42
+
43
+ tm = DateTime.now
44
+ cell = @worksheet.add_cell(r, c, tm)
45
+ cell.set_number_format('ddd mmm dd, yyyy HH:MM:SS')
46
+
47
+ # Due to rounding errors, we allow microsecond precision on DateTime.
48
+ expect((cell.value - tm).to_f).to be_within(1.0/86400e6).of(0)
49
+
50
+ tm = Time.now
51
+ cell = @worksheet.add_cell(r, c, tm)
52
+ cell.set_number_format('ddd mmm dd, yyyy HH:MM:SS')
53
+
54
+ # Due to rounding errors, we allow microsecond precision on Time.
55
+ expect(cell.value - tm.to_datetime).to be_within(1.0/86400e6).of(0)
56
+
57
+ expected_date = '2020-10-15T14:00:00Z'
58
+ expected_datetime = Time.parse(expected_date).utc
59
+ raw_value = '44119.583333333328' # Obtained from parsing a xlsx file with the expected date
60
+ cell = @worksheet.add_cell(r, c, Time.now) # Force a date cell type
61
+ cell.set_number_format('ddd mmm dd, yyyy HH:MM:SS')
62
+ cell.raw_value = raw_value
63
+ expect(cell.raw_value).to eq(raw_value), 'Wrong raw value'
64
+ cell.set_number_format('ddd mmm dd, yyyy HH:MM:SS')
65
+
66
+ # We expect exactly the same date
67
+ expect(cell.value.to_time.utc.iso8601).to eq(expected_datetime.iso8601)
68
+ end
32
69
  end
33
70
 
34
71
  describe '.change_fill' do
@@ -152,7 +189,7 @@ describe RubyXL::Cell do
152
189
  expect(@cell.text_indent).to eq(2)
153
190
  end
154
191
 
155
- it "should not cause other cells with the same style to have text indent" do
192
+ it 'should not cause other cells with the same style to have text indent' do
156
193
  another_cell = @worksheet[1][0]
157
194
  another_cell.style_index = @cell.style_index
158
195
  expect(another_cell.text_indent).to be_nil
@@ -247,7 +284,7 @@ describe RubyXL::Cell do
247
284
  expect(cell.value).to eq('Hello')
248
285
  end
249
286
 
250
- it "should properly handle numeric values" do
287
+ it 'should properly handle numeric values' do
251
288
  @cell.datatype = nil
252
289
  @cell.raw_value = '1'
253
290
  expect(@cell.value).to eq(1)
@@ -338,6 +375,12 @@ describe RubyXL::Cell do
338
375
  end
339
376
  end
340
377
 
378
+ context 'with RichText' do
379
+ it 'returns the value of the RichText' do
380
+ cell = RubyXL::Cell.new(is: RubyXL::RichText.new(t: RubyXL::Text.new(value: 'test')))
381
+ expect(cell.value).to eq('test')
382
+ end
383
+ end
341
384
  end
342
385
 
343
386
  describe '.change_contents' do
@@ -356,6 +399,15 @@ describe RubyXL::Cell do
356
399
  expect(@cell.formula).to be_nil
357
400
  end
358
401
 
402
+ it 'should cause cell value to match a time that is passed in' do
403
+ time = Time.parse('January 1, 2011')
404
+ @cell.change_contents(time)
405
+ expect(@cell).to receive(:is_date?).at_least(1).and_return(true)
406
+ expect(@cell.value).to eq(time.to_datetime)
407
+ expect(@cell.datatype).to be_nil
408
+ expect(@cell.formula).to be_nil
409
+ end
410
+
359
411
  it 'should case cell value to match a Float that is passed in' do
360
412
  number = 1.25
361
413
  @cell.change_contents(number)
@@ -372,8 +424,8 @@ describe RubyXL::Cell do
372
424
  expect(@cell.formula).to be_nil
373
425
  end
374
426
 
375
- it 'should case cell value to match an BigDecimal that is passed in' do
376
- number = BigDecimal.new('1234.5678')
427
+ it 'should cause cell value to match a BigDecimal that is passed in' do
428
+ number = BigDecimal('1234.5678')
377
429
  @cell.change_contents(number)
378
430
  expect(@cell.value).to eq(number)
379
431
  expect(@cell.datatype).to be_nil
@@ -547,5 +599,4 @@ describe RubyXL::Cell do
547
599
  expect(@cell.text_rotation).to eq(45)
548
600
  end
549
601
  end
550
-
551
602
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rubyXL/convenience_methods/color'
2
3
 
3
4
  describe RubyXL::Color do
4
5
  describe '.validate_color' do
@@ -7,7 +8,7 @@ describe RubyXL::Color do
7
8
  end
8
9
 
9
10
  it 'should cause an error if an invalid hex color code or one with a # is passed' do
10
- expect {RubyXL::Color.validate_color('#G')}.to raise_error(RuntimeError)
11
+ expect { RubyXL::Color.validate_color('#G') }.to raise_error(RuntimeError)
11
12
  end
12
13
  end
13
14
  end
@@ -1,25 +1,25 @@
1
+ require 'English'
1
2
  require 'spec_helper'
2
3
  require 'tmpdir'
3
4
 
4
5
  describe RubyXL::Parser do
5
-
6
6
  before do
7
- @test_sheet_name = "This is a very long sheet name that should be trimmed to 31 characters for compatibility with MS Excel"
7
+ @test_sheet_name = 'This is a very long sheet name that should be trimmed to 31 characters for compatibility with MS Excel'
8
8
  @workbook = RubyXL::Workbook.new
9
- @workbook.add_worksheet("Test Worksheet")
9
+ @workbook.add_worksheet('Test Worksheet')
10
10
  @time = Time.at(Time.now.to_i) # Excel only saves times with 1-second precision.
11
11
  @time2 = @time + 123456
12
12
 
13
- ws = @workbook.add_worksheet("Escape Test")
14
- ws.add_cell(0, 0, "&")
15
- ws.add_cell(0, 1, "<")
16
- ws.add_cell(0, 2, ">")
17
- ws.add_cell(0, 3, "")
13
+ ws = @workbook.add_worksheet('Escape Test')
14
+ ws.add_cell(0, 0, '&')
15
+ ws.add_cell(0, 1, '<')
16
+ ws.add_cell(0, 2, '>')
17
+ ws.add_cell(0, 3, '')
18
18
 
19
- ws.add_cell(1, 0, "&")#TODO#.datatype = RubyXL::Cell::SHARED_STRING
20
- ws.add_cell(1, 1, "<")#TODO#.datatype = RubyXL::Cell::SHARED_STRING
21
- ws.add_cell(1, 2, ">")#TODO#.datatype = RubyXL::Cell::SHARED_STRING
22
- ws.add_cell(1, 3, "")
19
+ ws.add_cell(1, 0, '&')#TODO#.datatype = RubyXL::Cell::SHARED_STRING
20
+ ws.add_cell(1, 1, '<')#TODO#.datatype = RubyXL::Cell::SHARED_STRING
21
+ ws.add_cell(1, 2, '>')#TODO#.datatype = RubyXL::Cell::SHARED_STRING
22
+ ws.add_cell(1, 3, '')
23
23
 
24
24
  ws.add_cell(2, 0, 0)
25
25
  ws.add_cell(2, 1, 12345)
@@ -35,13 +35,13 @@ describe RubyXL::Parser do
35
35
 
36
36
  @workbook.add_worksheet(@test_sheet_name)
37
37
 
38
- @workbook.creator = "test creator"
39
- @workbook.modifier = "test modifier"
38
+ @workbook.creator = 'test creator'
39
+ @workbook.modifier = 'test modifier'
40
40
  @workbook.created_at = @time
41
41
  @workbook.modified_at = @time2
42
42
 
43
43
  @time_str = Time.now.to_s
44
- @file = "rubyXL-#{$$}-#{DateTime.now.strftime('%Q')}.xlsx"
44
+ @file = "rubyXL-#{$PROCESS_ID}-#{DateTime.now.strftime('%Q')}.xlsx"
45
45
  @workbook.write(@file)
46
46
  end
47
47
 
@@ -58,7 +58,7 @@ describe RubyXL::Parser do
58
58
  end
59
59
 
60
60
  it 'should cause an error if an xlsx or xlsm workbook is not passed' do
61
- expect {@workbook2 = RubyXL::Parser.parse("nonexistent_file.tmp")}.to raise_error(Zip::Error)
61
+ expect { @workbook2 = RubyXL::Parser.parse('nonexistent_file.tmp') }.to raise_error(Zip::Error)
62
62
  end
63
63
 
64
64
  it 'should construct consistent number formats' do
@@ -69,19 +69,19 @@ describe RubyXL::Parser do
69
69
 
70
70
  it 'should unescape HTML entities properly' do
71
71
  @workbook2 = RubyXL::Parser.parse(@file)
72
- expect(@workbook2["Escape Test"][0][0].value).to eq("&")
73
- expect(@workbook2["Escape Test"][0][1].value).to eq("<")
74
- expect(@workbook2["Escape Test"][0][2].value).to eq(">")
72
+ expect(@workbook2['Escape Test'][0][0].value).to eq('&')
73
+ expect(@workbook2['Escape Test'][0][1].value).to eq('<')
74
+ expect(@workbook2['Escape Test'][0][2].value).to eq('>')
75
75
 
76
- expect(@workbook2["Escape Test"][1][0].value).to eq("&")
77
- expect(@workbook2["Escape Test"][1][1].value).to eq("<")
78
- expect(@workbook2["Escape Test"][1][2].value).to eq(">")
76
+ expect(@workbook2['Escape Test'][1][0].value).to eq('&')
77
+ expect(@workbook2['Escape Test'][1][1].value).to eq('<')
78
+ expect(@workbook2['Escape Test'][1][2].value).to eq('>')
79
79
  end
80
80
 
81
81
  it 'should parse Core properties correctly' do
82
82
  @workbook2 = RubyXL::Parser.parse(@file)
83
- expect(@workbook2.creator).to eq("test creator")
84
- expect(@workbook2.modifier).to eq("test modifier")
83
+ expect(@workbook2.creator).to eq('test creator')
84
+ expect(@workbook2.modifier).to eq('test modifier')
85
85
  expect(@workbook2.created_at).to eq(@time)
86
86
  expect(@workbook2.modified_at).to eq(@time2)
87
87
  end
@@ -91,11 +91,9 @@ describe RubyXL::Parser do
91
91
  expect(@workbook2[@test_sheet_name]).to be_nil
92
92
  expect(@workbook2[@test_sheet_name[0..30]]).not_to be_nil
93
93
  end
94
-
95
94
  end
96
95
 
97
96
  describe 'parse_buffer' do
98
-
99
97
  it 'should parse string buffer correctly' do
100
98
  buffer = File.read(@file)
101
99
  expect(buffer).to be_instance_of(String)
@@ -109,7 +107,6 @@ describe RubyXL::Parser do
109
107
  f = RubyXL::Parser.parse_buffer(io)
110
108
  expect(f).to be_instance_of(RubyXL::Workbook)
111
109
  end
112
-
113
110
  end
114
111
 
115
112
  after do
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RubyXL::Reference do
4
-
5
4
  describe '.ind2ref + .ref2ind' do
6
5
  it 'should correctly return the "Excel Style" description of cells when given a row/column number' do
7
6
  expect(RubyXL::Reference.ind2ref(0, 26)).to eq('AA1')
@@ -20,9 +19,16 @@ describe RubyXL::Reference do
20
19
  end
21
20
  end
22
21
 
22
+ it 'valid? should be true on valid references' do
23
+ expect(RubyXL::Reference.new('C23').valid?).to be true
24
+ end
25
+
26
+ it 'valid? should be false on invalid references' do
27
+ expect(RubyXL::Reference.new('C2A').valid?).to be false
28
+ end
29
+
23
30
  it 'should return [-1, -1] if the Excel index is not well-formed' do
24
31
  expect(RubyXL::Reference.ref2ind('A1B')).to eq([-1, -1])
25
32
  end
26
33
  end
27
-
28
- end
34
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+ require 'rubyXL/convenience_methods/color'
3
+
4
+ describe RubyXL::RgbColor do
5
+ describe '.to_s' do
6
+ it 'should properly translate RGB color to string' do
7
+ rgb_color = RubyXL::RgbColor.new
8
+
9
+ rgb_color.r = 1
10
+ rgb_color.g = 2
11
+ rgb_color.b = 255
12
+
13
+ expect(rgb_color.to_s).to eq('0102ff')
14
+ end
15
+
16
+ it 'should properly translate RGB color with alpha value to string' do
17
+ rgb_color = RubyXL::RgbColor.new
18
+
19
+ rgb_color.r = 11
20
+ rgb_color.g = 22
21
+ rgb_color.b = 33
22
+ rgb_color.a = 255
23
+
24
+ expect(rgb_color.to_s).to eq('0b1621ff')
25
+ end
26
+ end
27
+ end
@@ -1,28 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RubyXL::NumberFormat do
4
-
5
4
  describe '.is_date_format?' do
6
5
  it 'should return true if number format = dd// yy// mm' do
7
- expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'dd// yy// mm').is_date_format?()).to eq(true)
8
- end
6
+ expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'dd// yy// mm').is_date_format?).to eq(true)
7
+ end
9
8
 
10
9
  it 'should return true if number format = DD// YY// MM (uppercase)' do
11
- expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'DD// YY// MM').is_date_format?()).to eq(true)
12
- end
10
+ expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'DD// YY// MM').is_date_format?).to eq(true)
11
+ end
13
12
 
14
13
  it 'should return false if number format = @' do
15
- expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => '@').is_date_format?()).to eq(false)
16
- expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'general').is_date_format?()).to eq(false)
17
- expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => '0.00e+00').is_date_format?()).to eq(false)
18
- end
14
+ expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => '@').is_date_format?).to eq(false)
15
+ expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => 'general').is_date_format?).to eq(false)
16
+ expect(RubyXL::NumberFormat.new(:num_fmt_id => 1, :format_code => '0.00e+00').is_date_format?).to eq(false)
17
+ end
19
18
 
20
19
  it 'should properly detect date formats amongst default ones' do
21
20
  all_formats = RubyXL::NumberFormats::DEFAULT_NUMBER_FORMATS
22
21
  id_list = all_formats.collect { |fmt| fmt.num_fmt_id if fmt.is_date_format? }.compact.sort
23
22
  expect(id_list).to eq([14, 15, 16, 17, 18, 19, 20, 21, 22, 45, 46, 47])
24
23
  end
25
-
26
24
  end
27
-
28
25
  end
@@ -1,15 +1,13 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe RubyXL::Text do
4
-
5
4
  describe '.to_s' do
6
-
7
5
  it 'should not crash processing UNICODE data' do
8
6
  bytes = [ 114, 39, 95, 120, 48, 48, 56, 48, 95, 226, 132, 162, 115,
9
7
  32, 103, 105, 114, 108, 102, 114, 105, 101, 110, 100,
10
8
  39, 95, 120, 48, 48, 56, 48, 95, 226, 132, 162, 115, 32, 104, 111]
11
9
 
12
- t = RubyXL::Text.new(:value => bytes.pack("c*").force_encoding('UTF-8'))
10
+ t = RubyXL::Text.new(:value => bytes.pack('c*').force_encoding('UTF-8'))
13
11
 
14
12
  str = t.to_s
15
13
 
@@ -23,7 +21,5 @@ describe RubyXL::Text do
23
21
 
24
22
  expect(xml).to eq("<t>\u{10000}\u{10FFFF}</t>")
25
23
  end
26
-
27
24
  end
28
-
29
25
  end
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'rubyXL/convenience_methods/workbook'
2
3
 
3
4
  describe RubyXL::Workbook do
4
5
  before do
@@ -132,8 +133,19 @@ describe RubyXL::Workbook do
132
133
  end
133
134
  end
134
135
 
136
+ describe '.title' do
137
+ it 'should contain default title' do
138
+ expect(@workbook.title).to be_nil
139
+ end
140
+
141
+ it 'should set title properly' do
142
+ @workbook.title = 'TITLE'
143
+ expect(@workbook.title).to eq('TITLE')
144
+ end
145
+ end
146
+
135
147
  describe '.stream' do
136
- it "It should not be confused by missing sheet_id" do
148
+ it 'It should not be confused by missing sheet_id' do
137
149
  workbook = RubyXL::Workbook.new
138
150
  workbook[0].sheet_id = 1
139
151
  workbook.add_worksheet('Sheet2')
@@ -143,12 +155,12 @@ describe RubyXL::Workbook do
143
155
  it 'should raise error if bad characters are present in worksheet name' do
144
156
  workbook = RubyXL::Workbook.new
145
157
  workbook[0].sheet_name = 'Sheet007'
146
- expect{workbook.stream}.to_not raise_error
158
+ expect{ workbook.stream }.to_not raise_error
147
159
 
148
160
  '\\/*[]:?'.each_char { |char|
149
161
  workbook = RubyXL::Workbook.new
150
162
  workbook[0].sheet_name = "Sheet#{char}007"
151
- expect{workbook.stream}.to raise_error(RuntimeError)
163
+ expect{ workbook.stream }.to raise_error(RuntimeError)
152
164
  }
153
165
  end
154
166
  end
@@ -169,6 +181,15 @@ describe RubyXL::Workbook do
169
181
  end
170
182
  end
171
183
 
184
+ describe 'defined names' do
185
+ it 'should add and access defined names properly' do
186
+ wb = RubyXL::Workbook.new
187
+ wb.define_new_name('TEST', 'Sheet1!$A$2')
172
188
 
173
-
189
+ wb2 = RubyXL::Parser.parse_buffer(wb.stream)
190
+ expect(wb2.get_defined_name('TEST')).to_not be_nil
191
+ expect(wb2.get_defined_name('TEST').reference).to eq('Sheet1!$A$2')
192
+ expect(wb2.get_defined_name('TEST2')).to be_nil
193
+ end
194
+ end
174
195
  end