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
@@ -4,21 +4,23 @@
4
4
  <head>
5
5
  <meta charset="UTF-8">
6
6
 
7
- <title>README - rubyXL 3.3.29</title>
7
+ <title>README - rubyXL 3.4.33</title>
8
8
 
9
9
  <script type="text/javascript">
10
10
  var rdoc_rel_prefix = "./";
11
11
  var index_rel_prefix = "./";
12
12
  </script>
13
13
 
14
- <script src="./js/jquery.js"></script>
15
- <script src="./js/darkfish.js"></script>
14
+ <script src="./js/navigation.js" defer></script>
15
+ <script src="./js/search.js" defer></script>
16
+ <script src="./js/search_index.js" defer></script>
17
+ <script src="./js/searcher.js" defer></script>
18
+ <script src="./js/darkfish.js" defer></script>
16
19
 
17
20
  <link href="./css/fonts.css" rel="stylesheet">
18
21
  <link href="./css/rdoc.css" rel="stylesheet">
19
22
 
20
23
 
21
-
22
24
  <body id="top" role="document" class="file">
23
25
  <nav role="navigation">
24
26
  <div id="project-navigation">
@@ -39,7 +41,7 @@
39
41
  <div id="search-field-wrapper">
40
42
  <input id="search-field" role="combobox" aria-label="Search"
41
43
  aria-autocomplete="list" aria-controls="search-results"
42
- type="text" name="search" placeholder="Search" spellcheck="false"
44
+ type="text" name="search" placeholder="Search (/) for a class, method, ..." spellcheck="false"
43
45
  title="Type to search, Up and Down to navigate, Enter to load">
44
46
  </div>
45
47
 
@@ -55,58 +57,112 @@
55
57
  <div class="nav-section">
56
58
  <h3>Table of Contents</h3>
57
59
 
60
+
61
+
58
62
  <ul class="link-list" role="directory">
59
- <li><a href="#label-rubyXL">rubyXL</a>
60
- <li><a href="#label-To+Install-3A">To Install:</a>
61
- <li><a href="#label-To+Use-3A">To Use:</a>
62
- <li><a href="#label-Parsing+an+existing+workbook">Parsing an existing workbook</a>
63
- <li><a href="#label-Creating+a+new+Workbook">Creating a new Workbook</a>
64
- <li><a href="#label-Accessing">Accessing</a>
65
- <li><a href="#label-Accessing+a+Worksheet">Accessing a Worksheet</a>
66
- <li><a href="#label-Accessing+a+Row+-28Array+of+Cells-29">Accessing a Row (Array of Cells)</a>
67
- <li><a href="#label-Accessing+a+Cell+object">Accessing a Cell object</a>
68
- <li><a href="#label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties</a>
69
- <li><a href="#label-Wrappers+for+accessing+Row+properties+">Wrappers for accessing Row properties </a>
70
- <li><a href="#label-Accessing+column+properties">Accessing column properties</a>
71
- <li><a href="#label-Table+reading">Table reading</a>
72
- <li><a href="#label-Modifying">Modifying</a>
73
- <li><a href="#label-Adding+Worksheets">Adding Worksheets</a>
74
- <li><a href="#label-Renaming+Worksheets">Renaming Worksheets</a>
75
- <li><a href="#label-Adding+Cells">Adding Cells</a>
76
- <li><a href="#label-Changing+Cells">Changing Cells</a>
77
- <li><a href="#label-Changing+Fonts">Changing Fonts</a>
78
- <li><a href="#label-Changing+Fills+++++">Changing Fills </a>
79
- <li><a href="#label-Changing+Borders">Changing Borders</a>
80
- <li><a href="#label-Changing+Alignment">Changing Alignment</a>
81
- <li><a href="#label-Horizontal">Horizontal</a>
82
- <li><a href="#label-Vertical">Vertical</a>
83
- <li><a href="#label-Changing+Row+Height">Changing Row Height</a>
84
- <li><a href="#label-Changing+Column+Width">Changing Column Width</a>
85
- <li><a href="#label-Merging+Cells">Merging Cells</a>
86
- <li><a href="#label-Insert+Row">Insert Row</a>
87
- <li><a href="#label-Insert+Column">Insert Column</a>
88
- <li><a href="#label-Delete+Row">Delete Row</a>
89
- <li><a href="#label-Delete+Column">Delete Column</a>
90
- <li><a href="#label-Insert+Cell">Insert Cell</a>
91
- <li><a href="#label-Delete+Cell">Delete Cell</a>
92
- <li><a href="#label-Modifying+Cell+Format">Modifying Cell Format</a>
93
- <li><a href="#label-I-2FO">I/O</a>
94
- <li><a href="#label-Miscellaneous">Miscellaneous</a>
95
- <li><a href="#label-For+more+information">For more information</a>
96
- <li><a href="#label-Contributing+to+rubyXL">Contributing to rubyXL</a>
97
- <li><a href="#label-Copyright">Copyright</a>
63
+ <li>
64
+ <details open>
65
+ <summary> <a href="#label-rubyXL">rubyXL</a>
66
+ </summary>
67
+ <ul class="link-list" role="directory">
68
+ <li> <a href="#label-To+Install-3A">To Install:</a>
69
+ <li>
70
+ <details open>
71
+ <summary> <a href="#label-To+Use-3A">To Use:</a>
72
+ </summary>
73
+ <ul class="link-list" role="directory">
74
+ <li> <a href="#label-Convenience+methods">Convenience methods</a>
75
+ <li> <a href="#label-Parsing+an+existing+workbook">Parsing an existing workbook</a>
76
+ <li> <a href="#label-Creating+a+new+Workbook">Creating a new Workbook</a>
77
+ <li>
78
+ <details open>
79
+ <summary> <a href="#label-Accessing">Accessing</a>
80
+ </summary>
81
+ <ul class="link-list" role="directory">
82
+ <li> <a href="#label-Accessing+a+Worksheet">Accessing a Worksheet</a>
83
+ <li> <a href="#label-Accessing+a+Row+-28Array+of+Cells-29">Accessing a Row (Array of Cells)</a>
84
+ <li> <a href="#label-Accessing+a+Cell+object">Accessing a Cell object</a>
85
+ <li> <a href="#label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties</a>
86
+ <li> <a href="#label-Wrappers+for+accessing+Row+properties+">Wrappers for accessing Row properties </a>
87
+ <li> <a href="#label-Accessing+column+properties">Accessing column properties</a>
88
+
89
+ </ul>
90
+ </details>
91
+ </li>
92
+ <li>
93
+ <details open>
94
+ <summary> <a href="#label-Modifying">Modifying</a>
95
+ </summary>
96
+ <ul class="link-list" role="directory">
97
+ <li> <a href="#label-Adding+Worksheets">Adding Worksheets</a>
98
+ <li> <a href="#label-Renaming+Worksheets">Renaming Worksheets</a>
99
+ <li> <a href="#label-Adding+Cells">Adding Cells</a>
100
+ <li> <a href="#label-Changing+Cells">Changing Cells</a>
101
+ <li> <a href="#label-Changing+Fonts">Changing Fonts</a>
102
+ <li> <a href="#label-Changing+Fills+++++">Changing Fills </a>
103
+ <li> <a href="#label-Changing+Borders">Changing Borders</a>
104
+ <li>
105
+ <details open>
106
+ <summary> <a href="#label-Changing+Alignment">Changing Alignment</a>
107
+ </summary>
108
+ <ul class="link-list" role="directory">
109
+ <li> <a href="#label-Horizontal">Horizontal</a>
110
+ <li> <a href="#label-Vertical">Vertical</a>
111
+ <li> <a href="#label-Rotation">Rotation</a>
112
+
113
+ </ul>
114
+ </details>
115
+ </li>
116
+ <li> <a href="#label-Changing+Row+Height">Changing Row Height</a>
117
+ <li> <a href="#label-Changing+Column+Width">Changing Column Width</a>
118
+ <li> <a href="#label-Merging+Cells">Merging Cells</a>
119
+ <li> <a href="#label-Insert+Row">Insert Row</a>
120
+ <li> <a href="#label-Insert+Column">Insert Column</a>
121
+ <li> <a href="#label-Delete+Row">Delete Row</a>
122
+ <li> <a href="#label-Delete+Column">Delete Column</a>
123
+ <li> <a href="#label-Insert+Cell">Insert Cell</a>
124
+ <li> <a href="#label-Delete+Cell">Delete Cell</a>
125
+ <li> <a href="#label-Modifying+Cell+Format">Modifying Cell Format</a>
126
+ <li> <a href="#label-Add+hyperlink+to+a+Cell">Add hyperlink to a Cell</a>
127
+
128
+ </ul>
129
+ </details>
130
+ </li>
131
+
132
+ </ul>
133
+ </details>
134
+ </li>
135
+ <li> <a href="#label-I-2FO">I/O</a>
136
+ <li>
137
+ <details open>
138
+ <summary> <a href="#label-Miscellaneous">Miscellaneous</a>
139
+ </summary>
140
+ <ul class="link-list" role="directory">
141
+ <li> <a href="#label-Suppress+warnings+about+malformed+input+files">Suppress warnings about malformed input files</a>
142
+
143
+ </ul>
144
+ </details>
145
+ </li>
146
+ <li> <a href="#label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">Data validation (colloquially referred to as “dropdown list”)</a>
147
+ <li> <a href="#label-For+more+information">For more information</a>
148
+ <li> <a href="#label-Contributing+to+rubyXL">Contributing to rubyXL</a>
149
+ <li> <a href="#label-Copyright">Copyright</a>
150
+
151
+ </ul>
152
+ </details>
153
+ </li>
154
+
98
155
  </ul>
99
156
  </div>
100
157
 
101
158
 
102
159
  <div id="project-metadata">
103
- <div id="fileindex-section" class="nav-section">
160
+
161
+ <div id="fileindex-section" class="nav-section">
104
162
  <h3>Pages</h3>
105
163
 
106
164
  <ul class="link-list">
107
-
108
165
  <li><a href="./README_rdoc.html">README</a>
109
-
110
166
  </ul>
111
167
  </div>
112
168
 
@@ -117,20 +173,11 @@
117
173
 
118
174
  <h1 id="label-rubyXL">rubyXL<span><a href="#label-rubyXL">&para;</a> <a href="#top">&uarr;</a></span></h1>
119
175
 
120
- <p><a href="http://badge.fury.io/rb/rubyXL"><img
121
- src="https://badge.fury.io/rb/rubyXL.svg" alt="Gem Version" /></a> <a
122
- href="https://codeclimate.com/github/weshatheleopard/rubyXL"><img
123
- src="https://codeclimate.com/github/weshatheleopard/rubyXL.png" alt="Code
124
- Climate" /></a></p>
176
+ <p><a href="http://badge.fury.io/rb/rubyXL"><img src="https://badge.fury.io/rb/rubyXL.svg"></a> <a href="https://codeclimate.com/github/weshatheleopard/rubyXL"><img src="https://codeclimate.com/github/weshatheleopard/rubyXL.png"></a> <a href="https://circleci.com/gh/weshatheleopard/rubyXL"><img src="https://circleci.com/gh/weshatheleopard/rubyXL.svg?style=svg"></a></p>
125
177
 
126
- <p>This gem supports operating on <code>xlsx</code> files (Open XML format).
127
- While it is capable of properly parsing the entire OOXML structure, its
128
- current main emphasis is on reading files produced by MS Excel, making
129
- minor modifications to them and saving them to be opened again, while
130
- preserving as much of the structure as possible.</p>
178
+ <p>This gem supports operating on <code>xlsx</code> files (Open XML format). While it is capable of properly parsing the entire OOXML structure, its current main emphasis is on reading files produced by MS Excel, making minor modifications to them and saving them to be opened again, while preserving as much of the structure as possible.</p>
131
179
 
132
- <p>Please note that proprietary binary <code>xls</code> format is
133
- <strong>not</strong> supported.</p>
180
+ <p>Please note that proprietary binary <code>xls</code> format is <strong>not</strong> supported by this gem. If you need to parse those files, try <a href="https://github.com/zdavatz/spreadsheet">spreadsheet</a> gem.</p>
134
181
 
135
182
  <h2 id="label-To+Install-3A">To Install:<span><a href="#label-To+Install-3A">&para;</a> <a href="#top">&uarr;</a></span></h2>
136
183
 
@@ -142,6 +189,22 @@ preserving as much of the structure as possible.</p>
142
189
  <pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL&#39;</span> <span class="ruby-comment"># Assuming rubygems is already required</span>
143
190
  </pre>
144
191
 
192
+ <h3 id="label-Convenience+methods">Convenience methods<span><a href="#label-Convenience+methods">&para;</a> <a href="#top">&uarr;</a></span></h3>
193
+
194
+ <p>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 <code>xlsx</code> format, in order to decrease the memory footprint. If you intend to use these features, you will need to additionally include the respective files:</p>
195
+
196
+ <pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods/cell&#39;</span>
197
+ <span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods/color&#39;</span>
198
+ <span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods/font&#39;</span>
199
+ <span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods/workbook&#39;</span>
200
+ <span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods/worksheet&#39;</span>
201
+ </pre>
202
+
203
+ <p>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:</p>
204
+
205
+ <pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;rubyXL/convenience_methods&#39;</span>
206
+ </pre>
207
+
145
208
  <h3 id="label-Parsing+an+existing+workbook">Parsing an existing workbook<span><a href="#label-Parsing+an+existing+workbook">&para;</a> <a href="#top">&uarr;</a></span></h3>
146
209
 
147
210
  <pre class="ruby"><span class="ruby-identifier">workbook</span> = <span class="ruby-constant">RubyXL</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-string">&quot;path/to/Excel/file.xlsx&quot;</span>)
@@ -158,14 +221,12 @@ preserving as much of the structure as possible.</p>
158
221
 
159
222
  <pre class="ruby"><span class="ruby-identifier">workbook</span>.<span class="ruby-identifier">worksheets</span>[<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns first worksheet</span>
160
223
  <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns first worksheet</span>
161
- <span class="ruby-identifier">workbook</span>[<span class="ruby-string">&#39;Sheet1&#39;</span>] <span class="ruby-comment"># Finds and returns worksheet titled &quot;Sheet1&quot;</span>
224
+ <span class="ruby-identifier">workbook</span>[<span class="ruby-string">&#39;Sheet1&#39;</span>] <span class="ruby-comment"># Finds and returns worksheet titled &quot;Sheet1&quot;. Note that sheet names in Excel are limited to 31 character.</span>
162
225
  </pre>
163
226
 
164
227
  <h4 id="label-Accessing+a+Row+-28Array+of+Cells-29">Accessing a Row (Array of Cells)<span><a href="#label-Accessing+a+Row+-28Array+of+Cells-29">&para;</a> <a href="#top">&uarr;</a></span></h4>
165
228
 
166
- <p>Please note that worksheet is a <em>sparse</em> array of rows. Your code
167
- <strong>must</strong> expect that any row it plucks from the array may be
168
- <code>nil</code>.</p>
229
+ <p>Please note that worksheet is a <em>sparse</em> array of rows. Your code <strong>must</strong> expect that any row it plucks from the array may be <code>nil</code>.</p>
169
230
 
170
231
  <pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
171
232
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns first row of the worksheet</span>
@@ -174,13 +235,20 @@ preserving as much of the structure as possible.</p>
174
235
 
175
236
  <h4 id="label-Accessing+a+Cell+object">Accessing a Cell object<span><a href="#label-Accessing+a+Cell+object">&para;</a> <a href="#top">&uarr;</a></span></h4>
176
237
 
177
- <p>Please note that row is a <em>sparse</em> array of cells. Your code
178
- <strong>must</strong> expect that any cell it plucks from the array may be
179
- <code>nil</code>.</p>
238
+ <p>Please note that row is a <em>sparse</em> array of cells. Your code <strong>must</strong> expect that any cell it plucks from the array may be <code>nil</code>.</p>
180
239
 
181
240
  <pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
182
241
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns cell A1 in the worksheet</span>
183
242
  <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-comment"># Returns cell A1 in the worksheet</span>
243
+
244
+ <span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>]
245
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">value</span> <span class="ruby-comment"># Returns a properly converted value in the cell (if the file claims that the cell</span>
246
+ <span class="ruby-comment"># is holding a number, returns a respective Integer or Float, and so on).</span>
247
+ </pre>
248
+
249
+ <p>Or, if you prefer Excel-style references (single-cell only!)</p>
250
+
251
+ <pre class="ruby"><span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">cell_at</span>(<span class="ruby-string">&#39;B11&#39;</span>)
184
252
  </pre>
185
253
 
186
254
  <h4 id="label-Wrappers+for+accessing+Cell+properties">Wrappers for accessing Cell properties<span><a href="#label-Wrappers+for+accessing+Cell+properties">&para;</a> <a href="#top">&uarr;</a></span></h4>
@@ -193,14 +261,14 @@ preserving as much of the structure as possible.</p>
193
261
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">fill_color</span>
194
262
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">horizontal_alignment</span>
195
263
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">vertical_alignment</span>
196
- <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">get_border</span>(:<span class="ruby-identifier">top</span>)
197
- <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">get_border_color</span>(:<span class="ruby-identifier">top</span>)
264
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">get_border</span>(<span class="ruby-value">:top</span>)
265
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">get_border_color</span>(<span class="ruby-value">:top</span>)
266
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">text_rotation</span>
198
267
  </pre>
199
268
 
200
269
  <h4 id="label-Wrappers+for+accessing+Row+properties+">Wrappers for accessing Row properties <span><a href="#label-Wrappers+for+accessing+Row+properties+">&para;</a> <a href="#top">&uarr;</a></span></h4>
201
270
 
202
- <p>Please note: these methods are being phased out in favor of the OOXML
203
- object model.</p>
271
+ <p>Please note: these methods are being phased out in favor of the OOXML object model.</p>
204
272
 
205
273
  <pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
206
274
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_fill</span>(<span class="ruby-value">0</span>)
@@ -211,14 +279,13 @@ object model.</p>
211
279
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_height</span>(<span class="ruby-value">0</span>)
212
280
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-keyword">true</span>)
213
281
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-keyword">false</span>)
214
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_border</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">right</span>)
215
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_border_color</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">right</span>)
282
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_border</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:right</span>)
283
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_row_border_color</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:right</span>)
216
284
  </pre>
217
285
 
218
286
  <h4 id="label-Accessing+column+properties">Accessing column properties<span><a href="#label-Accessing+column+properties">&para;</a> <a href="#top">&uarr;</a></span></h4>
219
287
 
220
- <p>Please note: these methods are being phased out in favor of the OOXML
221
- object model.</p>
288
+ <p>Please note: these methods are being phased out in favor of the OOXML object model.</p>
222
289
 
223
290
  <pre class="ruby"><span class="ruby-identifier">worksheet</span> = <span class="ruby-identifier">workbook</span>[<span class="ruby-value">0</span>]
224
291
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_fill</span>(<span class="ruby-value">0</span>)
@@ -227,24 +294,10 @@ object model.</p>
227
294
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_font_color</span>(<span class="ruby-value">0</span>)
228
295
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">is_column_underlined</span>(<span class="ruby-value">0</span>)
229
296
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_width</span>(<span class="ruby-value">0</span>)
230
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_alignment</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">horizontal</span>)
231
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_alignment</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">vertical</span>)
232
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_border</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">right</span>)
233
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_border_color</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">right</span>)
234
- </pre>
235
-
236
- <h4 id="label-Table+reading">Table reading<span><a href="#label-Table+reading">&para;</a> <a href="#top">&uarr;</a></span></h4>
237
-
238
- <p>In order to discourage unnecessary reshuffling of data in memory, methods
239
- <code>extract_data</code> and <code>get_table</code> are being deprecated.
240
- You should access and iterate through rows and cells directly:</p>
241
-
242
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">row</span><span class="ruby-operator">|</span>
243
- <span class="ruby-identifier">row</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">row</span>.<span class="ruby-identifier">cells</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">cell</span><span class="ruby-operator">|</span>
244
- <span class="ruby-identifier">val</span> = <span class="ruby-identifier">cell</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">value</span>
245
- <span class="ruby-identifier">do_whatever_you_want</span>(<span class="ruby-identifier">val</span>)
246
- }
247
- }
297
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:horizontal</span>)
298
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:vertical</span>)
299
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_border</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:right</span>)
300
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">get_column_border_color</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:right</span>)
248
301
  </pre>
249
302
 
250
303
  <h3 id="label-Modifying">Modifying<span><a href="#label-Modifying">&para;</a> <a href="#top">&uarr;</a></span></h3>
@@ -256,7 +309,7 @@ You should access and iterate through rows and cells directly:</p>
256
309
 
257
310
  <h4 id="label-Renaming+Worksheets">Renaming Worksheets<span><a href="#label-Renaming+Worksheets">&para;</a> <a href="#top">&uarr;</a></span></h4>
258
311
 
259
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_name</span> = <span class="ruby-string">&#39;Cool New Name&#39;</span>
312
+ <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_name</span> = <span class="ruby-string">&#39;Cool New Name&#39;</span> <span class="ruby-comment"># Note that sheet name is limited to 31 characters by Excel.</span>
260
313
  </pre>
261
314
 
262
315
  <h4 id="label-Adding+Cells">Adding Cells<span><a href="#label-Adding+Cells">&para;</a> <a href="#top">&uarr;</a></span></h4>
@@ -288,35 +341,43 @@ You should access and iterate through rows and cells directly:</p>
288
341
 
289
342
  <pre class="ruby"><span class="ruby-comment"># Possible weights: hairline, thin, medium, thick</span>
290
343
  <span class="ruby-comment"># Possible &quot;directions&quot;: top, bottom, left, right, diagonal</span>
291
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_border</span>(:<span class="ruby-identifier">top</span>, <span class="ruby-string">&#39;thin&#39;</span>) <span class="ruby-comment"># Sets A1 to have a top, thin border</span>
292
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_border</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">left</span>, <span class="ruby-string">&#39;hairline&#39;</span>) <span class="ruby-comment"># Sets first row to have a left, hairline border</span>
293
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_border</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">diagonal</span>, <span class="ruby-string">&#39;medium&#39;</span>) <span class="ruby-comment"># Sets first column to have diagonal, medium border</span>
344
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_border</span>(<span class="ruby-value">:top</span>, <span class="ruby-string">&#39;thin&#39;</span>) <span class="ruby-comment"># Sets A1 to have a top, thin border</span>
345
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_border</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:left</span>, <span class="ruby-string">&#39;hairline&#39;</span>) <span class="ruby-comment"># Sets first row to have a left, hairline border</span>
346
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_border</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:diagonal</span>, <span class="ruby-string">&#39;medium&#39;</span>) <span class="ruby-comment"># Sets first column to have diagonal, medium border</span>
294
347
 
295
348
  <span class="ruby-comment"># Set the border style first so there&#39;s something to color.</span>
296
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_border_color</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">top</span>, <span class="ruby-string">&#39;0ba53d&#39;</span>) <span class="ruby-comment"># Sets first row to have a green top border</span>
297
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_border_color</span>(<span class="ruby-value">0</span>, :<span class="ruby-identifier">top</span>, <span class="ruby-string">&#39;0ba53d&#39;</span>) <span class="ruby-comment"># Sets first column to have a green top border</span>
349
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_border_color</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:top</span>, <span class="ruby-string">&#39;0ba53d&#39;</span>) <span class="ruby-comment"># Sets first row to have a green top border</span>
350
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_border_color</span>(<span class="ruby-value">0</span>, <span class="ruby-value">:top</span>, <span class="ruby-string">&#39;0ba53d&#39;</span>) <span class="ruby-comment"># Sets first column to have a green top border</span>
298
351
  </pre>
299
352
 
300
353
  <h4 id="label-Changing+Alignment">Changing Alignment<span><a href="#label-Changing+Alignment">&para;</a> <a href="#top">&uarr;</a></span></h4>
301
354
 
302
355
  <h5 id="label-Horizontal">Horizontal<span><a href="#label-Horizontal">&para;</a> <a href="#top">&uarr;</a></span></h5>
303
356
 
304
- <p>center, distributed, justify, left, right</p>
305
-
306
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_horizontal_alignment</span>(<span class="ruby-string">&#39;center&#39;</span>) <span class="ruby-comment"># Sets A1 to be centered</span>
357
+ <pre class="ruby"><span class="ruby-comment"># Possible alignments: center, distributed, justify, left, right</span>
358
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_horizontal_alignment</span>(<span class="ruby-string">&#39;center&#39;</span>) <span class="ruby-comment"># Sets A1 to be centered</span>
307
359
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_horizontal_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;justify&#39;</span>) <span class="ruby-comment"># Sets first row to be justified</span>
308
360
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_horizontal_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;right&#39;</span>) <span class="ruby-comment"># Sets first column to be right-aligned</span>
309
361
  </pre>
310
362
 
311
363
  <h5 id="label-Vertical">Vertical<span><a href="#label-Vertical">&para;</a> <a href="#top">&uarr;</a></span></h5>
312
364
 
313
- <p>bottom, center, distributed, top</p>
314
-
315
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_vertical_alignment</span>(<span class="ruby-string">&#39;bottom&#39;</span>) <span class="ruby-comment"># Sets A1 to be bottom aligned</span>
365
+ <pre class="ruby"><span class="ruby-comment"># Possible alignments: bottom, center, distributed, top</span>
366
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_vertical_alignment</span>(<span class="ruby-string">&#39;bottom&#39;</span>) <span class="ruby-comment"># Sets A1 to be bottom aligned</span>
316
367
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_vertical_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;distributed&#39;</span>) <span class="ruby-comment"># Sets first row to be distributed vertically</span>
317
368
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_column_vertical_alignment</span>(<span class="ruby-value">0</span>, <span class="ruby-string">&#39;top&#39;</span>) <span class="ruby-comment"># Sets first column to be top aligned</span>
318
369
  </pre>
319
370
 
371
+ <h5 id="label-Rotation">Rotation<span><a href="#label-Rotation">&para;</a> <a href="#top">&uarr;</a></span></h5>
372
+
373
+ <pre class="ruby"><span class="ruby-comment"># Possible values:</span>
374
+ <span class="ruby-comment"># * 0-90 - degrees counterclockwise, around the bottom LEFT corner of the cell;</span>
375
+ <span class="ruby-comment"># * 91-179 - degrees clockwise, around the bottom RIGHT corner of the cell;</span>
376
+ <span class="ruby-comment"># * 180-254 - degrees clockwise, around the bottom LEFT corner of the cell, text becomes progressively invisible</span>
377
+ <span class="ruby-comment"># * 255 - text is in normal rotation but displayed vertically (one letter under another), line feed starts new line to the right of the previous.</span>
378
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">sheet_data</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>].<span class="ruby-identifier">change_text_rotation</span>(<span class="ruby-value">90</span>) <span class="ruby-comment"># Sets A1 to be rotated by 90 degrees</span>
379
+ </pre>
380
+
320
381
  <h4 id="label-Changing+Row+Height">Changing Row Height<span><a href="#label-Changing+Row+Height">&para;</a> <a href="#top">&uarr;</a></span></h4>
321
382
 
322
383
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">change_row_height</span>(<span class="ruby-value">0</span>, <span class="ruby-value">30</span>) <span class="ruby-comment"># Sets first row height to 30</span>
@@ -329,79 +390,65 @@ You should access and iterate through rows and cells directly:</p>
329
390
 
330
391
  <h4 id="label-Merging+Cells">Merging Cells<span><a href="#label-Merging+Cells">&para;</a> <a href="#top">&uarr;</a></span></h4>
331
392
 
332
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">merge_cells</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1</span>) <span class="ruby-comment"># Merges A1:B2</span>
333
- </pre>
393
+ <pre>worksheet.merge_cells(0, 1, 2, 3) # Merges B1:D3
394
+ worksheet.merge_cells(&#39;A2:C4&#39;) # Merges A2:C4
395
+ worksheet.merge_cells(row_from: 0, row_to: 1, col_from 2:, col_to: 3) # Merges C1:D2</pre>
334
396
 
335
397
  <h4 id="label-Insert+Row">Insert Row<span><a href="#label-Insert+Row">&para;</a> <a href="#top">&uarr;</a></span></h4>
336
398
 
337
- <p>This method will insert a row at specified index, pushing all rows below it
338
- down. It also copies styles from row above.</p>
399
+ <p>This method will insert a row at specified index, pushing all rows below it down. It also copies styles from row above.</p>
339
400
 
340
- <p>WARNING: Use of this method WILL break formulas referencing cells which
341
- have been moved, as the formulas do not adapt to the shifted rows</p>
401
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows</p>
342
402
 
343
403
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_row</span>(<span class="ruby-value">1</span>)
344
404
  </pre>
345
405
 
346
406
  <h4 id="label-Insert+Column">Insert Column<span><a href="#label-Insert+Column">&para;</a> <a href="#top">&uarr;</a></span></h4>
347
407
 
348
- <p>This method will insert a column at specified index, pushing all columns to
349
- the right of it one to the right. It also copies styles from column to the
350
- left</p>
408
+ <p>This method will insert a column at specified index, pushing all columns to the right of it one to the right. It also copies styles from column to the left</p>
351
409
 
352
- <p>WARNING: Use of this method WILL break formulas referencing cells which
353
- have been moved, as the formulas do not adapt to the shifted columns</p>
410
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns</p>
354
411
 
355
412
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_column</span>(<span class="ruby-value">1</span>)
356
413
  </pre>
357
414
 
358
415
  <h4 id="label-Delete+Row">Delete Row<span><a href="#label-Delete+Row">&para;</a> <a href="#top">&uarr;</a></span></h4>
359
416
 
360
- <p>This method will delete a row at specified index, pushing all rows below it
361
- up.</p>
417
+ <p>This method will delete a row at specified index, pushing all rows below it up.</p>
362
418
 
363
- <p>WARNING: Use of this method WILL break formulas referencing cells which
364
- have been moved, as the formulas do not adapt to the shifted rows</p>
419
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows</p>
365
420
 
366
421
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_row</span>(<span class="ruby-value">1</span>)
367
422
  </pre>
368
423
 
369
424
  <h4 id="label-Delete+Column">Delete Column<span><a href="#label-Delete+Column">&para;</a> <a href="#top">&uarr;</a></span></h4>
370
425
 
371
- <p>This method will delete a column at specified index, pushing all columns to
372
- the right of it left.</p>
426
+ <p>This method will delete a column at specified index, pushing all columns to the right of it left.</p>
373
427
 
374
- <p>WARNING: Use of this method WILL break formulas referencing cells which
375
- have been moved, as the formulas do not adapt to the shifted columns</p>
428
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns</p>
376
429
 
377
430
  <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_column</span>(<span class="ruby-value">1</span>)
378
431
  </pre>
379
432
 
380
433
  <h4 id="label-Insert+Cell">Insert Cell<span><a href="#label-Insert+Cell">&para;</a> <a href="#top">&uarr;</a></span></h4>
381
434
 
382
- <p>This method will insert a cell at specified position. It takes a :right or
383
- :down option, to shift cells either left or down upon inserting (nil means
384
- replacing the cell)</p>
435
+ <p>This method will insert a cell at specified position. It takes a :right or :down option, to shift cells either left or down upon inserting (nil means replacing the cell)</p>
385
436
 
386
- <p>WARNING: Use of this method WILL break formulas referencing cells which
387
- have been moved, as the formulas do not adapt to the shifted cells</p>
437
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells</p>
388
438
 
389
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;blah&quot;</span>, <span class="ruby-identifier">formula</span> = <span class="ruby-keyword">nil</span>, :<span class="ruby-identifier">right</span>) <span class="ruby-comment"># Inserts cell at A1, shifts cells in first row right</span>
390
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;blah&quot;</span>, <span class="ruby-identifier">formula</span> = <span class="ruby-keyword">nil</span>, :<span class="ruby-identifier">down</span>) <span class="ruby-comment"># Inserts cell at A1, shifts cells in first column down</span>
439
+ <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;blah&quot;</span>, <span class="ruby-identifier">formula</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-value">:right</span>) <span class="ruby-comment"># Inserts cell at A1, shifts cells in first row right</span>
440
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;blah&quot;</span>, <span class="ruby-identifier">formula</span> = <span class="ruby-keyword">nil</span>, <span class="ruby-value">:down</span>) <span class="ruby-comment"># Inserts cell at A1, shifts cells in first column down</span>
391
441
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">insert_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-string">&quot;blah&quot;</span>) <span class="ruby-comment"># Inserts cell at A1, shifts nothing</span>
392
442
  </pre>
393
443
 
394
444
  <h4 id="label-Delete+Cell">Delete Cell<span><a href="#label-Delete+Cell">&para;</a> <a href="#top">&uarr;</a></span></h4>
395
445
 
396
- <p>This method will delete a cell at specified position. It takes a :left or
397
- :up option, to shift cells either up or left upon deletion (nil means
398
- simply deleting the cell contents)</p>
446
+ <p>This method will delete a cell at specified position. It takes a :left or :up option, to shift cells either up or left upon deletion (nil means simply deleting the cell contents)</p>
399
447
 
400
- <p>WARNING: Use of this method WILL break formulas referencing cells which
401
- have been moved, as the formulas do not adapt to the shifted cells</p>
448
+ <p>WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells</p>
402
449
 
403
- <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, :<span class="ruby-identifier">left</span>) <span class="ruby-comment"># Deletes A1, shifts contents of first row left</span>
404
- <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, :<span class="ruby-identifier">up</span>) <span class="ruby-comment"># Deletes A1, shifts contents of first column up</span>
450
+ <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">:left</span>) <span class="ruby-comment"># Deletes A1, shifts contents of first row left</span>
451
+ <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">:up</span>) <span class="ruby-comment"># Deletes A1, shifts contents of first column up</span>
405
452
  <span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">delete_cell</span>(<span class="ruby-value">0</span>, <span class="ruby-value">0</span>) <span class="ruby-comment"># Deletes A1, does not shift cells</span>
406
453
  </pre>
407
454
 
@@ -409,6 +456,15 @@ have been moved, as the formulas do not adapt to the shifted cells</p>
409
456
 
410
457
  <pre class="ruby"><span class="ruby-identifier">cell</span> = <span class="ruby-identifier">worksheet</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>]
411
458
  <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">set_number_format</span> <span class="ruby-string">&#39;0.0000%&#39;</span> <span class="ruby-comment"># For formats, see https://support.office.com/en-us/article/5026bbd6-04bc-48cd-bf33-80f18b4eae68</span>
459
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_text_wrap</span>(<span class="ruby-keyword">true</span>) <span class="ruby-comment"># Makes the text in the cell to wrap.</span>
460
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_shrink_to_fit</span>(<span class="ruby-keyword">true</span>) <span class="ruby-comment"># Makes the text in the cell to shrink to fit.</span>
461
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">change_text_indent</span>(<span class="ruby-value">1</span>) <span class="ruby-comment"># Indents the text in the cell by 1 level</span>
462
+ </pre>
463
+
464
+ <h4 id="label-Add+hyperlink+to+a+Cell">Add hyperlink to a Cell<span><a href="#label-Add+hyperlink+to+a+Cell">&para;</a> <a href="#top">&uarr;</a></span></h4>
465
+
466
+ <pre class="ruby"><span class="ruby-identifier">cell</span>.<span class="ruby-identifier">add_hyperlink</span>(<span class="ruby-string">&#39;http://example.com&#39;</span>)
467
+ <span class="ruby-identifier">cell</span>.<span class="ruby-identifier">add_hyperlink</span>(<span class="ruby-string">&#39;http://example.com&#39;</span>, <span class="ruby-string">&#39;Some tooltip text&#39;</span>)
412
468
  </pre>
413
469
 
414
470
  <h2 id="label-I-2FO">I/O<span><a href="#label-I-2FO">&para;</a> <a href="#top">&uarr;</a></span></h2>
@@ -419,9 +475,7 @@ have been moved, as the formulas do not adapt to the shifted cells</p>
419
475
  <span class="ruby-identifier">workbook</span>.<span class="ruby-identifier">write</span>(<span class="ruby-string">&quot;path/to/desired/Excel/file.xlsx&quot;</span>)
420
476
  </pre>
421
477
 
422
- <p>It can also operate on <code>StringIO</code> objects, thus eliminating the
423
- need to save the <code>xlsx</code> file to disk. This capability comes in
424
- handy for web servers.</p>
478
+ <p>It can also operate on <code>StringIO</code> objects, thus eliminating the need to save the <code>xlsx</code> file to disk. This capability comes in handy for web servers.</p>
425
479
 
426
480
  <pre class="ruby"><span class="ruby-identifier">workbook</span> = <span class="ruby-constant">RubyXL</span><span class="ruby-operator">::</span><span class="ruby-constant">Parser</span>.<span class="ruby-identifier">parse_buffer</span>(<span class="ruby-identifier">buffer</span>)
427
481
  <span class="ruby-identifier">workbook</span>.<span class="ruby-identifier">stream</span>
@@ -433,17 +487,25 @@ handy for web servers.</p>
433
487
  <span class="ruby-constant">RubyXL</span><span class="ruby-operator">::</span><span class="ruby-constant">Reference</span>.<span class="ruby-identifier">ref2ind</span>(<span class="ruby-string">&#39;A1&#39;</span>) <span class="ruby-operator">==</span> [<span class="ruby-value">0</span>, <span class="ruby-value">0</span>] <span class="ruby-comment"># Converts Excel-style cell reference to row and column index</span>
434
488
  </pre>
435
489
 
490
+ <h3 id="label-Suppress+warnings+about+malformed+input+files">Suppress warnings about malformed input files<span><a href="#label-Suppress+warnings+about+malformed+input+files">&para;</a> <a href="#top">&uarr;</a></span></h3>
491
+
492
+ <pre class="ruby"><span class="ruby-constant">RubyXL</span>.<span class="ruby-identifier">class_variable_set</span>(<span class="ruby-value">:@@suppress_warnings</span>, <span class="ruby-keyword">true</span>)
493
+ </pre>
494
+
495
+ <h2 id="label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">Data validation (colloquially referred to as “dropdown list”)<span><a href="#label-Data+validation+-28colloquially+referred+to+as+-22dropdown+list-22-29">&para;</a> <a href="#top">&uarr;</a></span></h2>
496
+
497
+ <pre class="ruby"><span class="ruby-identifier">worksheet</span>.<span class="ruby-identifier">add_validation_list</span>(<span class="ruby-string">&quot;A1&quot;</span>, [ <span class="ruby-string">&quot;value1&quot;</span>, <span class="ruby-string">&quot;value2&quot;</span> ])
498
+ </pre>
499
+
436
500
  <h2 id="label-For+more+information">For more information<span><a href="#label-For+more+information">&para;</a> <a href="#top">&uarr;</a></span></h2>
437
501
 
438
502
  <p>Take a look at the files in spec/lib/ for rspecs on most methods</p>
439
503
 
440
504
  <h2 id="label-Contributing+to+rubyXL">Contributing to rubyXL<span><a href="#label-Contributing+to+rubyXL">&para;</a> <a href="#top">&uarr;</a></span></h2>
441
505
  <ul><li>
442
- <p>Check out the latest master to make sure the feature hasn&#39;t been
443
- implemented or the bug hasn&#39;t been fixed yet</p>
506
+ <p>Check out the latest master to make sure the feature hasnt been implemented or the bug hasn’t been fixed yet</p>
444
507
  </li><li>
445
- <p>Check out the issue tracker to make sure someone already hasn&#39;t
446
- requested it and/or contributed it</p>
508
+ <p>Check out the issue tracker to make sure someone already hasnt requested it and/or contributed it</p>
447
509
  </li><li>
448
510
  <p>Fork the project</p>
449
511
  </li><li>
@@ -451,25 +513,22 @@ requested it and/or contributed it</p>
451
513
  </li><li>
452
514
  <p>Commit and push until you are happy with your contribution</p>
453
515
  </li><li>
454
- <p>Make sure to add tests for it. This is important so I don&#39;t break it in
455
- a future version unintentionally.</p>
516
+ <p>Make sure to add tests for it. This is important so I dont break it in a future version unintentionally.</p>
456
517
  </li><li>
457
- <p>Please try not to mess with the Rakefile, version, or history. If you want
458
- to have your own version, or is otherwise necessary, that is fine, but
459
- please isolate to its own commit so I can cherry-pick around it.</p>
518
+ <p>Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.</p>
460
519
  </li></ul>
461
520
 
462
521
  <h2 id="label-Copyright">Copyright<span><a href="#label-Copyright">&para;</a> <a href="#top">&uarr;</a></span></h2>
463
522
 
464
- <p>Copyright © 2011 Vivek Bhagwat, 2013-2016 Wesha. See LICENSE.txt for
465
- further details.</p>
523
+ <p>Copyright © 2011 Vivek Bhagwat, 2013-2022 Wesha. See LICENSE.txt for further details.</p>
524
+
466
525
  </main>
467
526
 
468
527
 
469
528
 
470
529
  <footer id="validator-badges" role="contentinfo">
471
- <p><a href="http://validator.w3.org/check/referer">Validate</a>
472
- <p>Generated by <a href="https://rdoc.github.io/rdoc">RDoc</a> 5.1.0.
530
+ <p><a href="https://validator.w3.org/check/referer">Validate</a>
531
+ <p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.6.3.1.
473
532
  <p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
474
533
  </footer>
475
534