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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24ee840c0b843c7ac38c7ee1eadd5918c2151284fe45125a3bb340b6cf15c5cb
4
- data.tar.gz: e17613eaf073dd282955dc30a43084e65a9e48cdd2d9048d0148777ac21c0d70
3
+ metadata.gz: 69ceee765ae742ca18903f3db0a368782e581e8324941fd9671e6642fb8ba5d9
4
+ data.tar.gz: 0bed16ef2323e2bd91e33d395a66c9a13b902e5e03cad2de415f4bafcbcb8b3b
5
5
  SHA512:
6
- metadata.gz: b8cce29f230a5c57f3fd4873e28c510b13694775ace5c5708d06620f79d9fba85c601d123273f4099cfb3d8322a00b60c05c509770ee48a5645a28c21479f723
7
- data.tar.gz: bef3148de242c914daf807db50fb5199b9654bcaf97cb9b8df84a7dca2a679051648eb12353c68e342597287d538b69ee22524ee5564a4cdc7f85ec8d9065527
6
+ metadata.gz: d30a855437e79b15c975ad5e13148cfb72e4f2956449dcbc95d6ff691e60a668d729432e80909318010d473e75323c3c4f75c17b57f80c59f22f41bac43bfc35
7
+ data.tar.gz: fe740718fd69d6a8131383d8b5b326df918820d67c08c708e8e80959a9a04ad3f0f18c2d0efb02e6e660dc66456578a8008e98781ee094658ac78fee9319d90b
@@ -0,0 +1,60 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2
6
+ jobs:
7
+ build:
8
+ docker:
9
+ # specify the version you desire here
10
+ - image: circleci/ruby:2.6.6-buster
11
+
12
+ # Specify service dependencies here if necessary
13
+ # CircleCI maintains a library of pre-built images
14
+ # documented at https://circleci.com/docs/2.0/circleci-images/
15
+ # - image: circleci/postgres:9.4
16
+
17
+ working_directory: ~/repo
18
+
19
+ steps:
20
+ - checkout
21
+
22
+ # Download and cache dependencies
23
+ - restore_cache:
24
+ keys:
25
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
+ # fallback to using the latest cache if no exact match is found
27
+ - v1-dependencies-
28
+
29
+ - run:
30
+ name: install dependencies
31
+ command: |
32
+ gem install bundler
33
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
34
+
35
+ - save_cache:
36
+ paths:
37
+ - ./vendor/bundle
38
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
39
+
40
+ # run tests!
41
+ - run:
42
+ name: run tests
43
+ command: |
44
+ mkdir /tmp/test-results
45
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
46
+ circleci tests split --split-by=timings)"
47
+
48
+ bundle exec rspec \
49
+ --format progress \
50
+ --format RspecJunitFormatter \
51
+ --out /tmp/test-results/rspec.xml \
52
+ --format progress \
53
+ $TEST_FILES
54
+
55
+ # collect reports
56
+ - store_test_results:
57
+ path: /tmp/test-results
58
+ - store_artifacts:
59
+ path: /tmp/test-results
60
+ destination: test-results
data/Gemfile CHANGED
@@ -1,17 +1,18 @@
1
- source "http://rubygems.org"
1
+ source 'http://rubygems.org'
2
2
 
3
3
  # Dependencies required to run this gem.
4
- gem "nokogiri", ">= 1.4.4"
5
- gem "rubyzip", ">= 1.1.6" , :require => 'zip'
4
+ gem 'nokogiri', '>= 1.10.8'
5
+ gem 'rubyzip', '>= 1.3.0' , :require => 'zip'
6
6
 
7
7
  # Development dependencies.
8
8
  group :development, :test do
9
- gem "bundler"
10
- gem "rake"
11
- gem "jeweler"
12
- gem "rspec"
13
- gem "simplecov"
9
+ gem 'bundler'
10
+ gem 'rake'
11
+ gem 'juwelier'
12
+ gem 'rspec'
13
+ gem 'simplecov'
14
14
 
15
15
  # gem 'stackprof'
16
16
  gem 'ruby-prof'
17
+ gem 'rspec_junit_formatter'
17
18
  end
data/Gemfile.lock ADDED
@@ -0,0 +1,124 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ addressable (2.8.0)
5
+ public_suffix (>= 2.0.2, < 5.0)
6
+ builder (3.2.4)
7
+ descendants_tracker (0.0.4)
8
+ thread_safe (~> 0.3, >= 0.3.1)
9
+ diff-lcs (1.5.0)
10
+ docile (1.4.0)
11
+ faraday (1.10.0)
12
+ faraday-em_http (~> 1.0)
13
+ faraday-em_synchrony (~> 1.0)
14
+ faraday-excon (~> 1.1)
15
+ faraday-httpclient (~> 1.0)
16
+ faraday-multipart (~> 1.0)
17
+ faraday-net_http (~> 1.0)
18
+ faraday-net_http_persistent (~> 1.0)
19
+ faraday-patron (~> 1.0)
20
+ faraday-rack (~> 1.0)
21
+ faraday-retry (~> 1.0)
22
+ ruby2_keywords (>= 0.0.4)
23
+ faraday-em_http (1.0.0)
24
+ faraday-em_synchrony (1.0.0)
25
+ faraday-excon (1.1.0)
26
+ faraday-httpclient (1.0.1)
27
+ faraday-multipart (1.0.3)
28
+ multipart-post (>= 1.2, < 3)
29
+ faraday-net_http (1.0.1)
30
+ faraday-net_http_persistent (1.2.0)
31
+ faraday-patron (1.0.0)
32
+ faraday-rack (1.0.0)
33
+ faraday-retry (1.0.3)
34
+ git (1.11.0)
35
+ rchardet (~> 1.8)
36
+ github_api (0.19.0)
37
+ addressable (~> 2.4)
38
+ descendants_tracker (~> 0.0.4)
39
+ faraday (>= 0.8, < 2)
40
+ hashie (~> 3.5, >= 3.5.2)
41
+ oauth2 (~> 1.0)
42
+ hashie (3.6.0)
43
+ highline (2.0.3)
44
+ juwelier (2.4.9)
45
+ builder
46
+ bundler
47
+ git
48
+ github_api
49
+ highline
50
+ kamelcase (~> 0)
51
+ nokogiri
52
+ psych
53
+ rake
54
+ rdoc
55
+ semver2
56
+ jwt (2.3.0)
57
+ kamelcase (0.0.2)
58
+ semver2 (~> 3)
59
+ mini_portile2 (2.8.0)
60
+ multi_json (1.15.0)
61
+ multi_xml (0.6.0)
62
+ multipart-post (2.1.1)
63
+ nokogiri (1.13.6)
64
+ mini_portile2 (~> 2.8.0)
65
+ racc (~> 1.4)
66
+ oauth2 (1.4.9)
67
+ faraday (>= 0.17.3, < 3.0)
68
+ jwt (>= 1.0, < 3.0)
69
+ multi_json (~> 1.3)
70
+ multi_xml (~> 0.5)
71
+ rack (>= 1.2, < 3)
72
+ psych (4.0.4)
73
+ stringio
74
+ public_suffix (4.0.7)
75
+ racc (1.6.0)
76
+ rack (2.2.3)
77
+ rake (13.0.6)
78
+ rchardet (1.8.0)
79
+ rdoc (6.4.0)
80
+ psych (>= 4.0.0)
81
+ rspec (3.11.0)
82
+ rspec-core (~> 3.11.0)
83
+ rspec-expectations (~> 3.11.0)
84
+ rspec-mocks (~> 3.11.0)
85
+ rspec-core (3.11.0)
86
+ rspec-support (~> 3.11.0)
87
+ rspec-expectations (3.11.0)
88
+ diff-lcs (>= 1.2.0, < 2.0)
89
+ rspec-support (~> 3.11.0)
90
+ rspec-mocks (3.11.1)
91
+ diff-lcs (>= 1.2.0, < 2.0)
92
+ rspec-support (~> 3.11.0)
93
+ rspec-support (3.11.0)
94
+ rspec_junit_formatter (0.5.1)
95
+ rspec-core (>= 2, < 4, != 2.12.0)
96
+ ruby-prof (1.4.3)
97
+ ruby2_keywords (0.0.5)
98
+ rubyzip (2.3.2)
99
+ semver2 (3.4.2)
100
+ simplecov (0.21.2)
101
+ docile (~> 1.1)
102
+ simplecov-html (~> 0.11)
103
+ simplecov_json_formatter (~> 0.1)
104
+ simplecov-html (0.12.3)
105
+ simplecov_json_formatter (0.1.4)
106
+ stringio (3.0.2)
107
+ thread_safe (0.3.6)
108
+
109
+ PLATFORMS
110
+ ruby
111
+
112
+ DEPENDENCIES
113
+ bundler
114
+ juwelier
115
+ nokogiri (>= 1.10.8)
116
+ rake
117
+ rspec
118
+ rspec_junit_formatter
119
+ ruby-prof
120
+ rubyzip (>= 1.3.0)
121
+ simplecov
122
+
123
+ BUNDLED WITH
124
+ 2.3.5
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Vivek Bhagwat, 2013-2014 Wesha
1
+ Copyright (c) 2011 Vivek Bhagwat, 2013-2020 Wesha
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.rdoc CHANGED
@@ -1,13 +1,14 @@
1
1
  = rubyXL
2
2
  {<img src="https://badge.fury.io/rb/rubyXL.svg" alt="Gem Version" />}[http://badge.fury.io/rb/rubyXL]
3
3
  {<img src="https://codeclimate.com/github/weshatheleopard/rubyXL.png" alt="Code Climate" />}[https://codeclimate.com/github/weshatheleopard/rubyXL]
4
+ {<img src="https://circleci.com/gh/weshatheleopard/rubyXL.svg?style=svg" alt="CircleCI" />}[https://circleci.com/gh/weshatheleopard/rubyXL]
4
5
 
5
6
  This gem supports operating on +xlsx+ files (Open XML format). While it is capable
6
7
  of properly parsing the entire OOXML structure, its current main emphasis is on
7
8
  reading files produced by MS Excel, making minor modifications to them and saving
8
9
  them to be opened again, while preserving as much of the structure as possible.
9
10
 
10
- Please note that proprietary binary +xls+ format is *not* supported.
11
+ Please note that proprietary binary +xls+ format is *not* supported by this gem. If you need to parse those files, try {spreadsheet}[https://github.com/zdavatz/spreadsheet] gem.
11
12
 
12
13
  == To Install:
13
14
  gem install rubyXL
@@ -15,6 +16,18 @@ Please note that proprietary binary +xls+ format is *not* supported.
15
16
  == To Use:
16
17
  require 'rubyXL' # Assuming rubygems is already required
17
18
 
19
+ === Convenience methods
20
+
21
+ Starting with version 3.4.0, the main data structure has been separated from the convenience methods that provide access to individual features of the +xlsx+ format, in order to decrease the memory footprint. If you intend to use these features, you will need to additionally include the respective files:
22
+ require 'rubyXL/convenience_methods/cell'
23
+ require 'rubyXL/convenience_methods/color'
24
+ require 'rubyXL/convenience_methods/font'
25
+ require 'rubyXL/convenience_methods/workbook'
26
+ require 'rubyXL/convenience_methods/worksheet'
27
+
28
+ If you do not care about your RAM usage, just include them all at once by adding the following line to your code so it can continue operating just as before:
29
+ require 'rubyXL/convenience_methods'
30
+
18
31
  === Parsing an existing workbook
19
32
  workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
20
33
 
@@ -26,7 +39,7 @@ Please note that proprietary binary +xls+ format is *not* supported.
26
39
  ==== Accessing a Worksheet
27
40
  workbook.worksheets[0] # Returns first worksheet
28
41
  workbook[0] # Returns first worksheet
29
- workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1"
42
+ workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1". Note that sheet names in Excel are limited to 31 character.
30
43
 
31
44
  ==== Accessing a Row (Array of Cells)
32
45
  Please note that worksheet is a _sparse_ array of rows. Your code *must* expect that any row it plucks from the array may be <tt>nil</tt>.
@@ -42,6 +55,14 @@ Please note that row is a _sparse_ array of cells. Your code *must* expect that
42
55
  worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
43
56
  worksheet[0][0] # Returns cell A1 in the worksheet
44
57
 
58
+ cell = worksheet[0][0]
59
+ cell.value # Returns a properly converted value in the cell (if the file claims that the cell
60
+ # is holding a number, returns a respective Integer or Float, and so on).
61
+
62
+ Or, if you prefer Excel-style references (single-cell only!)
63
+
64
+ cell = worksheet.cell_at('B11')
65
+
45
66
  ==== Wrappers for accessing Cell properties
46
67
  cell = workbook[0][0][0]
47
68
  cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
@@ -83,23 +104,13 @@ Please note: these methods are being phased out in favor of the OOXML object mod
83
104
  worksheet.get_column_border(0, :right)
84
105
  worksheet.get_column_border_color(0, :right)
85
106
 
86
- ==== Table reading
87
- In order to discourage unnecessary reshuffling of data in memory, methods +extract_data+ and +get_table+ are being deprecated. You should access and iterate through rows and cells directly:
88
-
89
- worksheet.each { |row|
90
- row && row.cells.each { |cell|
91
- val = cell && cell.value
92
- do_whatever_you_want(val)
93
- }
94
- }
95
-
96
107
  === Modifying
97
108
 
98
109
  ==== Adding Worksheets
99
110
  worksheet = workbook.add_worksheet('Sheet2')
100
111
 
101
112
  ==== Renaming Worksheets
102
- worksheet.sheet_name = 'Cool New Name'
113
+ worksheet.sheet_name = 'Cool New Name' # Note that sheet name is limited to 31 characters by Excel.
103
114
 
104
115
  ==== Adding Cells
105
116
  worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
@@ -131,26 +142,25 @@ In order to discourage unnecessary reshuffling of data in memory, methods +extra
131
142
 
132
143
  ==== Changing Alignment
133
144
  ===== Horizontal
134
- center, distributed, justify, left, right
145
+ # Possible alignments: center, distributed, justify, left, right
135
146
  worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
136
147
  worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
137
148
  worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
138
149
 
139
150
  ===== Vertical
140
- bottom, center, distributed, top
151
+ # Possible alignments: bottom, center, distributed, top
141
152
  worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
142
153
  worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
143
154
  worksheet.change_column_vertical_alignment(0, 'top') # Sets first column to be top aligned
144
155
 
145
156
  ===== Rotation
157
+ # Possible values:
158
+ # * 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;
159
+ # * 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;
160
+ # * 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible
161
+ # * 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.
146
162
  worksheet.sheet_data[0][0].change_text_rotation(90) # Sets A1 to be rotated by 90 degrees
147
163
 
148
- Values:
149
- * 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;
150
- * 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;
151
- * 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible
152
- * 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.
153
-
154
164
  ==== Changing Row Height
155
165
  worksheet.change_row_height(0, 30) # Sets first row height to 30
156
166
 
@@ -204,8 +214,14 @@ WARNING: Use of this method WILL break formulas referencing cells which have bee
204
214
  cell = worksheet[0][0]
205
215
  cell.set_number_format '0.0000%' # For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68
206
216
  cell.change_text_wrap(true) # Makes the text in the cell to wrap.
217
+ cell.change_shrink_to_fit(true) # Makes the text in the cell to shrink to fit.
207
218
  cell.change_text_indent(1) # Indents the text in the cell by 1 level
208
219
 
220
+ ==== Add hyperlink to a Cell
221
+ cell.add_hyperlink('http://example.com')
222
+ cell.add_hyperlink('http://example.com', 'Some tooltip text')
223
+
224
+
209
225
  == I/O
210
226
 
211
227
  By default, the gem operates with files on the local filesystem:
@@ -222,6 +238,14 @@ It can also operate on +StringIO+ objects, thus eliminating the need to save the
222
238
  RubyXL::Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
223
239
  RubyXL::Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index
224
240
 
241
+ === Suppress warnings about malformed input files
242
+
243
+ RubyXL.class_variable_set(:@@suppress_warnings, true)
244
+
245
+ == Data validation (colloquially referred to as "dropdown list")
246
+
247
+ worksheet.add_validation_list("A1", [ "value1", "value2" ])
248
+
225
249
  == For more information
226
250
  Take a look at the files in spec/lib/ for rspecs on most methods
227
251
 
@@ -237,5 +261,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
237
261
 
238
262
  == Copyright
239
263
 
240
- Copyright (c) 2011 Vivek Bhagwat, 2013-2016 Wesha.
264
+ Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
241
265
  See LICENSE.txt for further details.
data/Rakefile CHANGED
@@ -1,28 +1,28 @@
1
- # encoding: utf-8
2
1
  require 'rubygems'
3
2
 
4
3
  require 'bundler'
5
4
  begin
6
5
  Bundler.setup(:default, :development)
7
6
  rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
7
+ warn e.message
8
+ warn 'Run `bundle install` to install missing gems'
10
9
  exit e.status_code
11
10
  end
12
11
 
13
- require 'jeweler'
14
- Jeweler::Tasks.new do |gem|
12
+ require 'juwelier'
13
+ Juwelier::Tasks.new do |gem|
15
14
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
16
- gem.name = "rubyXL"
17
- gem.homepage = "http://github.com/gilt/rubyXL"
18
- gem.license = "MIT"
19
- gem.summary = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
20
- gem.description = %Q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
21
- gem.email = "bhagwat.vivek@gmail.com"
22
- gem.authors = ["Vivek Bhagwat", 'Wesha']
15
+ gem.name = 'rubyXL'
16
+ gem.homepage = 'http://github.com/gilt/rubyXL'
17
+ gem.license = 'MIT'
18
+ gem.summary = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
19
+ gem.description = %q{rubyXL is a gem which allows the parsing, creation, and manipulation of Microsoft Excel (.xlsx/.xlsm) Documents}
20
+ gem.email = 'bhagwat.vivek@gmail.com'
21
+ gem.authors = ['Vivek Bhagwat', 'Wesha']
22
+ # gem.required_ruby_version = '>2.1'
23
23
  # dependencies defined in Gemfile
24
24
  end
25
- Jeweler::RubygemsDotOrgTasks.new
25
+ Juwelier::RubygemsDotOrgTasks.new
26
26
 
27
27
  require 'rake/testtask'
28
28
  Rake::TestTask.new(:test) do |test|
@@ -33,12 +33,12 @@ Rake::TestTask.new(:test) do |test|
33
33
  end
34
34
 
35
35
  require 'rspec/core/rake_task'
36
- RSpec::Core::RakeTask.new(:spec)
37
- task :default => :spec
36
+ RSpec::Core::RakeTask.new(:rspec)
37
+ task :default => :rspec
38
38
 
39
39
  require 'rdoc/task'
40
40
  Rake::RDocTask.new do |rdoc|
41
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
41
+ version = File.exist?('VERSION') ? File.read('VERSION') : ''
42
42
 
43
43
  rdoc.rdoc_dir = 'rdoc'
44
44
  rdoc.title = "rubyXL #{version}"
@@ -46,42 +46,42 @@ Rake::RDocTask.new do |rdoc|
46
46
  rdoc.rdoc_files.include('lib/**/*.rb')
47
47
  end
48
48
 
49
- desc "Dump profiling data with stackprof"
49
+ desc 'Dump profiling data with stackprof'
50
50
  task :stackprof do
51
51
  require 'benchmark'
52
52
  require 'stackprof'
53
53
 
54
- $:.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
54
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
55
55
  require './lib/rubyXL'
56
56
 
57
- spreadsheets = Dir.glob(File.join("test", "input", "*.xls?")).sort!
57
+ spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
58
58
 
59
59
  spreadsheets.each { |input|
60
60
  puts "<<<--- Profiling parsing of #{input}..."
61
61
  doc = nil
62
- StackProf.run(:mode => :cpu, :interval => 100,
63
- :out => "tmp/stackprof-cpu-parse-#{File.basename(input)}.dump") {
62
+ StackProf.run(:mode => :cpu, :interval => 100,
63
+ :out => "tmp/stackprof-cpu-parse-#{File.basename(input)}.dump") {
64
64
  doc = RubyXL::Parser.parse(input)
65
65
  }
66
66
 
67
- output = File.join("test", "output", File.basename(input))
68
- puts "--->>> Profiling writing of #{output}..."
69
- StackProf.run(:mode => :cpu, :interval => 100,
67
+ output = File.join('test', 'output', File.basename(input))
68
+ puts "--->>> Profiling writing of #{output}..."
69
+ StackProf.run(:mode => :cpu, :interval => 100,
70
70
  :out => "tmp/stackprof-cpu-write-#{File.basename(input)}.dump") {
71
71
  doc.write(output)
72
72
  }
73
73
  }
74
74
  end
75
75
 
76
- desc "Dump profiling data with ruby-prof"
76
+ desc 'Dump profiling data with ruby-prof'
77
77
  task :rubyprof do
78
78
  require 'benchmark'
79
79
  require 'ruby-prof'
80
80
 
81
- $:.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
81
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/lib' # Make Ruby aware of load path
82
82
  require './lib/rubyXL'
83
83
 
84
- spreadsheets = Dir.glob(File.join("test", "input", "*.xls?")).sort!
84
+ spreadsheets = Dir.glob(File.join('test', 'input', '*.xls?')).sort!
85
85
 
86
86
  spreadsheets.each { |input|
87
87
  puts "<<<--- Profiling parsing of #{input}..."
@@ -92,8 +92,8 @@ task :rubyprof do
92
92
  printer = RubyProf::CallStackPrinter.new(result)
93
93
  File.open("tmp/ruby-prof-parse-#{File.basename(input)}.html", 'w') { |f| printer.print(f, {}) }
94
94
 
95
- output = File.join("test", "output", File.basename(input))
96
- puts "--->>> Profiling writing of #{output}..."
95
+ output = File.join('test', 'output', File.basename(input))
96
+ puts "--->>> Profiling writing of #{output}..."
97
97
  result = RubyProf.profile {
98
98
  doc.write(output)
99
99
  }
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.3.33
1
+ 3.4.25
data/lib/rubyXL/cell.rb CHANGED
@@ -1,26 +1,12 @@
1
1
  module RubyXL
2
-
3
- # http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.cellvalues(v=office.14).aspx
4
- module DataType
5
- SHARED_STRING = 's'
6
- RAW_STRING = 'str'
7
- INLINE_STRING = 'inlineStr'
8
- ERROR = 'e'
9
- BOOLEAN = 'b'
10
- NUMBER = 'n'
11
- DATE = 'd' # Only available in Office2010.
12
- end
13
-
14
2
  module LegacyCell
15
- attr_accessor :formula, :worksheet
16
-
17
3
  def workbook
18
4
  @worksheet.workbook
19
5
  end
20
6
 
21
7
  private
22
8
 
23
- def validate_workbook()
9
+ def validate_workbook
24
10
  unless workbook.nil? || workbook.worksheets.nil?
25
11
  workbook.worksheets.each { |sheet|
26
12
  unless sheet.nil? || sheet.sheet_data.nil? || sheet.sheet_data[row].nil?
@@ -33,22 +19,9 @@ module RubyXL
33
19
  raise "This cell #{self} is not in workbook #{workbook}"
34
20
  end
35
21
 
36
- def validate_worksheet()
22
+ def validate_worksheet
37
23
  return if @worksheet && @worksheet[row] && @worksheet[row][column].equal?(self)
38
24
  raise "Cell #{self} is not in worksheet #{worksheet}"
39
25
  end
40
-
41
- def get_cell_xf
42
- workbook.cell_xfs[self.style_index || 0]
43
- end
44
-
45
- def get_cell_font
46
- workbook.fonts[get_cell_xf.font_id]
47
- end
48
-
49
- def get_cell_border
50
- workbook.borders[get_cell_xf.border_id]
51
- end
52
-
53
26
  end
54
27
  end