rubyXL 3.3.29 → 3.4.33

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