rubyXL 1.2.10 → 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 (518) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +60 -0
  3. data/.codeclimate.yml +3 -0
  4. data/.rubocop.yml +124 -0
  5. data/CHANGELOG.md +12 -0
  6. data/Gemfile +18 -14
  7. data/LICENSE.txt +1 -1
  8. data/README.rdoc +170 -100
  9. data/Rakefile +76 -26
  10. data/VERSION +1 -1
  11. data/lib/rubyXL/cell.rb +13 -447
  12. data/lib/rubyXL/convenience_methods/cell.rb +276 -0
  13. data/lib/rubyXL/convenience_methods/color.rb +156 -0
  14. data/lib/rubyXL/convenience_methods/font.rb +63 -0
  15. data/lib/rubyXL/convenience_methods/workbook.rb +137 -0
  16. data/lib/rubyXL/convenience_methods/worksheet.rb +734 -0
  17. data/lib/rubyXL/convenience_methods.rb +5 -0
  18. data/lib/rubyXL/objects/border.rb +71 -0
  19. data/lib/rubyXL/objects/calculation_chain.rb +31 -0
  20. data/lib/rubyXL/objects/cell_style.rb +63 -0
  21. data/lib/rubyXL/objects/chartsheet.rb +88 -0
  22. data/lib/rubyXL/objects/color.rb +25 -0
  23. data/lib/rubyXL/objects/column_range.rb +93 -0
  24. data/lib/rubyXL/objects/comments.rb +44 -0
  25. data/lib/rubyXL/objects/connection.rb +175 -0
  26. data/lib/rubyXL/objects/container_nodes.rb +131 -0
  27. data/lib/rubyXL/objects/content_types.rb +74 -0
  28. data/lib/rubyXL/objects/data_validation.rb +37 -0
  29. data/lib/rubyXL/objects/document_properties.rb +156 -0
  30. data/lib/rubyXL/objects/extensions.rb +51 -0
  31. data/lib/rubyXL/objects/external_links.rb +115 -0
  32. data/lib/rubyXL/objects/fill.rb +52 -0
  33. data/lib/rubyXL/objects/filters.rb +118 -0
  34. data/lib/rubyXL/objects/font.rb +43 -0
  35. data/lib/rubyXL/objects/formula.rb +22 -0
  36. data/lib/rubyXL/objects/ooxml_object.rb +469 -0
  37. data/lib/rubyXL/objects/query_table.rb +106 -0
  38. data/lib/rubyXL/objects/reference.rb +119 -0
  39. data/lib/rubyXL/objects/relationships.rb +213 -0
  40. data/lib/rubyXL/objects/root.rb +84 -0
  41. data/lib/rubyXL/objects/shared_strings.rb +67 -0
  42. data/lib/rubyXL/objects/sheet_common.rb +49 -0
  43. data/lib/rubyXL/objects/sheet_data.rb +219 -0
  44. data/lib/rubyXL/objects/simple_types.rb +249 -0
  45. data/lib/rubyXL/objects/storage.rb +193 -0
  46. data/lib/rubyXL/objects/stylesheet.rb +224 -0
  47. data/lib/rubyXL/objects/text.rb +92 -0
  48. data/lib/rubyXL/objects/theme.rb +1730 -0
  49. data/lib/rubyXL/objects/workbook.rb +572 -0
  50. data/lib/rubyXL/objects/worksheet.rb +762 -0
  51. data/lib/rubyXL/parser.rb +18 -459
  52. data/lib/rubyXL/worksheet.rb +73 -1461
  53. data/lib/rubyXL.rb +9 -7
  54. data/rdoc/README_rdoc.html +534 -0
  55. data/rdoc/RubyXL/AExtension.html +187 -0
  56. data/rdoc/RubyXL/AExtensionStorageArea.html +97 -0
  57. data/rdoc/RubyXL/ActiveX.html +156 -0
  58. data/rdoc/RubyXL/ActiveXBinary.html +106 -0
  59. data/rdoc/RubyXL/AdjustHandleList.html +99 -0
  60. data/rdoc/RubyXL/Alignment.html +99 -0
  61. data/rdoc/RubyXL/AlternateContent.html +97 -0
  62. data/rdoc/RubyXL/AlternateUrls.html +99 -0
  63. data/rdoc/RubyXL/Authors.html +99 -0
  64. data/rdoc/RubyXL/AutoFilter.html +99 -0
  65. data/rdoc/RubyXL/AutoFilterColumn.html +99 -0
  66. data/rdoc/RubyXL/BinaryImageFile.html +108 -0
  67. data/rdoc/RubyXL/BodyProperties.html +99 -0
  68. data/rdoc/RubyXL/BooleanNode.html +97 -0
  69. data/rdoc/RubyXL/BooleanValue.html +97 -0
  70. data/rdoc/RubyXL/Border.html +223 -0
  71. data/rdoc/RubyXL/BorderEdge.html +160 -0
  72. data/rdoc/RubyXL/Borders.html +138 -0
  73. data/rdoc/RubyXL/Break.html +99 -0
  74. data/rdoc/RubyXL/BreakList.html +99 -0
  75. data/rdoc/RubyXL/CT_AdjPoint2D.html +99 -0
  76. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +99 -0
  77. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +99 -0
  78. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +99 -0
  79. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +99 -0
  80. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +99 -0
  81. data/rdoc/RubyXL/CT_Backdrop.html +99 -0
  82. data/rdoc/RubyXL/CT_Bevel.html +99 -0
  83. data/rdoc/RubyXL/CT_BiLevelEffect.html +99 -0
  84. data/rdoc/RubyXL/CT_BlendEffect.html +99 -0
  85. data/rdoc/RubyXL/CT_Blip.html +99 -0
  86. data/rdoc/RubyXL/CT_BlipFillProperties.html +99 -0
  87. data/rdoc/RubyXL/CT_BlurEffect.html +99 -0
  88. data/rdoc/RubyXL/CT_Camera.html +99 -0
  89. data/rdoc/RubyXL/CT_Color.html +99 -0
  90. data/rdoc/RubyXL/CT_ColorChangeEffect.html +99 -0
  91. data/rdoc/RubyXL/CT_ColorMapping.html +99 -0
  92. data/rdoc/RubyXL/CT_ColorScheme.html +99 -0
  93. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +99 -0
  94. data/rdoc/RubyXL/CT_ConnectionSite.html +99 -0
  95. data/rdoc/RubyXL/CT_ConnectionSiteList.html +99 -0
  96. data/rdoc/RubyXL/CT_DashStop.html +99 -0
  97. data/rdoc/RubyXL/CT_DashStopList.html +99 -0
  98. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +99 -0
  99. data/rdoc/RubyXL/CT_DuotoneEffect.html +99 -0
  100. data/rdoc/RubyXL/CT_EffectContainer.html +99 -0
  101. data/rdoc/RubyXL/CT_EffectList.html +99 -0
  102. data/rdoc/RubyXL/CT_EffectReference.html +99 -0
  103. data/rdoc/RubyXL/CT_EffectStyleItem.html +99 -0
  104. data/rdoc/RubyXL/CT_EffectStyleList.html +99 -0
  105. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +99 -0
  106. data/rdoc/RubyXL/CT_FillEffect.html +99 -0
  107. data/rdoc/RubyXL/CT_FillOverlayEffect.html +99 -0
  108. data/rdoc/RubyXL/CT_FillStyleList.html +99 -0
  109. data/rdoc/RubyXL/CT_FlatText.html +99 -0
  110. data/rdoc/RubyXL/CT_FontCollection.html +99 -0
  111. data/rdoc/RubyXL/CT_FontReference.html +99 -0
  112. data/rdoc/RubyXL/CT_GeomGuideList.html +99 -0
  113. data/rdoc/RubyXL/CT_GlowEffect.html +99 -0
  114. data/rdoc/RubyXL/CT_GradientFillProperties.html +99 -0
  115. data/rdoc/RubyXL/CT_GradientStop.html +99 -0
  116. data/rdoc/RubyXL/CT_GradientStopList.html +99 -0
  117. data/rdoc/RubyXL/CT_HSLEffect.html +99 -0
  118. data/rdoc/RubyXL/CT_HslColor.html +99 -0
  119. data/rdoc/RubyXL/CT_Hyperlink.html +99 -0
  120. data/rdoc/RubyXL/CT_InnerShadowEffect.html +99 -0
  121. data/rdoc/RubyXL/CT_LightRig.html +99 -0
  122. data/rdoc/RubyXL/CT_LineEndProperties.html +99 -0
  123. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +99 -0
  124. data/rdoc/RubyXL/CT_LineProperties.html +99 -0
  125. data/rdoc/RubyXL/CT_LineStyleList.html +99 -0
  126. data/rdoc/RubyXL/CT_LinearShadeProperties.html +99 -0
  127. data/rdoc/RubyXL/CT_LuminanceEffect.html +99 -0
  128. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +99 -0
  129. data/rdoc/RubyXL/CT_OuterShadowEffect.html +99 -0
  130. data/rdoc/RubyXL/CT_Path2D.html +99 -0
  131. data/rdoc/RubyXL/CT_Path2DArcTo.html +99 -0
  132. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +99 -0
  133. data/rdoc/RubyXL/CT_Path2DList.html +99 -0
  134. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +99 -0
  135. data/rdoc/RubyXL/CT_Path2DTo.html +99 -0
  136. data/rdoc/RubyXL/CT_PathShadeProperties.html +99 -0
  137. data/rdoc/RubyXL/CT_PatternFillProperties.html +99 -0
  138. data/rdoc/RubyXL/CT_Point3D.html +99 -0
  139. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +99 -0
  140. data/rdoc/RubyXL/CT_PresetColor.html +99 -0
  141. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +99 -0
  142. data/rdoc/RubyXL/CT_PresetShadowEffect.html +99 -0
  143. data/rdoc/RubyXL/CT_PresetTextShape.html +99 -0
  144. data/rdoc/RubyXL/CT_ReflectionEffect.html +99 -0
  145. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +99 -0
  146. data/rdoc/RubyXL/CT_RelativeRect.html +99 -0
  147. data/rdoc/RubyXL/CT_SRgbColor.html +99 -0
  148. data/rdoc/RubyXL/CT_ScRgbColor.html +99 -0
  149. data/rdoc/RubyXL/CT_Scene3D.html +99 -0
  150. data/rdoc/RubyXL/CT_SchemeColor.html +99 -0
  151. data/rdoc/RubyXL/CT_Shape3D.html +99 -0
  152. data/rdoc/RubyXL/CT_ShapeStyle.html +99 -0
  153. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +99 -0
  154. data/rdoc/RubyXL/CT_SphereCoords.html +99 -0
  155. data/rdoc/RubyXL/CT_StretchInfoProperties.html +99 -0
  156. data/rdoc/RubyXL/CT_StyleMatrix.html +99 -0
  157. data/rdoc/RubyXL/CT_StyleMatrixReference.html +99 -0
  158. data/rdoc/RubyXL/CT_SupplementalFont.html +99 -0
  159. data/rdoc/RubyXL/CT_SystemColor.html +99 -0
  160. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +99 -0
  161. data/rdoc/RubyXL/CT_TextBlipBullet.html +99 -0
  162. data/rdoc/RubyXL/CT_TextCharBullet.html +99 -0
  163. data/rdoc/RubyXL/CT_TextCharacterProperties.html +99 -0
  164. data/rdoc/RubyXL/CT_TextFont.html +99 -0
  165. data/rdoc/RubyXL/CT_TextListStyle.html +99 -0
  166. data/rdoc/RubyXL/CT_TextNormalAutofit.html +99 -0
  167. data/rdoc/RubyXL/CT_TextParagraphProperties.html +99 -0
  168. data/rdoc/RubyXL/CT_TextSpacing.html +99 -0
  169. data/rdoc/RubyXL/CT_TextTabStop.html +99 -0
  170. data/rdoc/RubyXL/CT_TextTabStopList.html +99 -0
  171. data/rdoc/RubyXL/CT_TileInfoProperties.html +99 -0
  172. data/rdoc/RubyXL/CT_TintEffect.html +99 -0
  173. data/rdoc/RubyXL/CT_Transform2D.html +99 -0
  174. data/rdoc/RubyXL/CT_TransformEffect.html +99 -0
  175. data/rdoc/RubyXL/CT_Vector3D.html +99 -0
  176. data/rdoc/RubyXL/CT_XYAdjustHandle.html +99 -0
  177. data/rdoc/RubyXL/CalculationChain.html +149 -0
  178. data/rdoc/RubyXL/CalculationChainCell.html +99 -0
  179. data/rdoc/RubyXL/CalculationProperties.html +99 -0
  180. data/rdoc/RubyXL/Cell.html +510 -0
  181. data/rdoc/RubyXL/CellConvenienceMethods.html +1077 -0
  182. data/rdoc/RubyXL/CellExt.html +99 -0
  183. data/rdoc/RubyXL/CellSmartTag.html +99 -0
  184. data/rdoc/RubyXL/CellSmartTagProperty.html +99 -0
  185. data/rdoc/RubyXL/CellSmartTags.html +99 -0
  186. data/rdoc/RubyXL/CellStyle.html +99 -0
  187. data/rdoc/RubyXL/CellStyleXFs.html +138 -0
  188. data/rdoc/RubyXL/CellStyles.html +138 -0
  189. data/rdoc/RubyXL/CellValue.html +139 -0
  190. data/rdoc/RubyXL/CellWatch.html +99 -0
  191. data/rdoc/RubyXL/CellWatches.html +99 -0
  192. data/rdoc/RubyXL/CellXFs.html +139 -0
  193. data/rdoc/RubyXL/ChartColorsFile.html +108 -0
  194. data/rdoc/RubyXL/ChartFile.html +160 -0
  195. data/rdoc/RubyXL/ChartStyleFile.html +108 -0
  196. data/rdoc/RubyXL/ChartUserShapesFile.html +108 -0
  197. data/rdoc/RubyXL/Chartsheet.html +213 -0
  198. data/rdoc/RubyXL/ChartsheetPageSetup.html +99 -0
  199. data/rdoc/RubyXL/ChartsheetProperties.html +99 -0
  200. data/rdoc/RubyXL/ChartsheetProtection.html +99 -0
  201. data/rdoc/RubyXL/ChartsheetView.html +99 -0
  202. data/rdoc/RubyXL/ChartsheetViews.html +99 -0
  203. data/rdoc/RubyXL/Color.html +151 -0
  204. data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +246 -0
  205. data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +285 -0
  206. data/rdoc/RubyXL/ColorConvenienceClasses.html +91 -0
  207. data/rdoc/RubyXL/ColorConvenienceMethods.html +139 -0
  208. data/rdoc/RubyXL/ColorFilter.html +99 -0
  209. data/rdoc/RubyXL/ColorScale.html +99 -0
  210. data/rdoc/RubyXL/ColorSet.html +99 -0
  211. data/rdoc/RubyXL/Colors.html +99 -0
  212. data/rdoc/RubyXL/ColumnRange.html +230 -0
  213. data/rdoc/RubyXL/ColumnRanges.html +237 -0
  214. data/rdoc/RubyXL/Comment.html +99 -0
  215. data/rdoc/RubyXL/CommentList.html +99 -0
  216. data/rdoc/RubyXL/CommentsFile.html +165 -0
  217. data/rdoc/RubyXL/ConditionalFormatValue.html +99 -0
  218. data/rdoc/RubyXL/ConditionalFormatting.html +99 -0
  219. data/rdoc/RubyXL/ConditionalFormattingRule.html +99 -0
  220. data/rdoc/RubyXL/Connection.html +99 -0
  221. data/rdoc/RubyXL/ConnectionTable.html +99 -0
  222. data/rdoc/RubyXL/ConnectionTables.html +99 -0
  223. data/rdoc/RubyXL/ConnectionTextField.html +99 -0
  224. data/rdoc/RubyXL/ConnectionTextFields.html +99 -0
  225. data/rdoc/RubyXL/Connections.html +149 -0
  226. data/rdoc/RubyXL/ContentTypeDefault.html +97 -0
  227. data/rdoc/RubyXL/ContentTypeOverride.html +97 -0
  228. data/rdoc/RubyXL/ContentTypes.html +211 -0
  229. data/rdoc/RubyXL/ControlPropertiesFile.html +108 -0
  230. data/rdoc/RubyXL/CorePropertiesFile.html +355 -0
  231. data/rdoc/RubyXL/CustomColor.html +99 -0
  232. data/rdoc/RubyXL/CustomColorList.html +99 -0
  233. data/rdoc/RubyXL/CustomFilter.html +99 -0
  234. data/rdoc/RubyXL/CustomFilters.html +99 -0
  235. data/rdoc/RubyXL/CustomGeometry.html +99 -0
  236. data/rdoc/RubyXL/CustomProperties.html +99 -0
  237. data/rdoc/RubyXL/CustomPropertiesFile.html +108 -0
  238. data/rdoc/RubyXL/CustomProperty.html +99 -0
  239. data/rdoc/RubyXL/CustomPropertyFile.html +108 -0
  240. data/rdoc/RubyXL/CustomSheetView.html +99 -0
  241. data/rdoc/RubyXL/CustomSheetViews.html +99 -0
  242. data/rdoc/RubyXL/CustomWorkbookView.html +99 -0
  243. data/rdoc/RubyXL/CustomWorkbookViews.html +99 -0
  244. data/rdoc/RubyXL/CustomXMLFile.html +106 -0
  245. data/rdoc/RubyXL/DXF.html +99 -0
  246. data/rdoc/RubyXL/DXFs.html +99 -0
  247. data/rdoc/RubyXL/DataBar.html +99 -0
  248. data/rdoc/RubyXL/DataConsolidate.html +99 -0
  249. data/rdoc/RubyXL/DataConsolidationReference.html +99 -0
  250. data/rdoc/RubyXL/DataConsolidationReferences.html +99 -0
  251. data/rdoc/RubyXL/DataType.html +114 -0
  252. data/rdoc/RubyXL/DataValidation.html +99 -0
  253. data/rdoc/RubyXL/DataValidations.html +99 -0
  254. data/rdoc/RubyXL/DateGroupItem.html +99 -0
  255. data/rdoc/RubyXL/DefinedName.html +99 -0
  256. data/rdoc/RubyXL/DefinedNameExt.html +99 -0
  257. data/rdoc/RubyXL/DefinedNames.html +99 -0
  258. data/rdoc/RubyXL/DefinedNamesExt.html +99 -0
  259. data/rdoc/RubyXL/DocumentPropertiesFile.html +213 -0
  260. data/rdoc/RubyXL/DrawingFile.html +159 -0
  261. data/rdoc/RubyXL/DynamicFilter.html +99 -0
  262. data/rdoc/RubyXL/EmbeddedControl.html +99 -0
  263. data/rdoc/RubyXL/EmbeddedControls.html +99 -0
  264. data/rdoc/RubyXL/Extension.html +99 -0
  265. data/rdoc/RubyXL/ExtensionStorageArea.html +99 -0
  266. data/rdoc/RubyXL/Extents.html +99 -0
  267. data/rdoc/RubyXL/ExternalBook.html +99 -0
  268. data/rdoc/RubyXL/ExternalLinksFile.html +155 -0
  269. data/rdoc/RubyXL/ExternalReference.html +99 -0
  270. data/rdoc/RubyXL/ExternalReferences.html +99 -0
  271. data/rdoc/RubyXL/ExtraColorSchemeList.html +99 -0
  272. data/rdoc/RubyXL/FieldItem.html +99 -0
  273. data/rdoc/RubyXL/FileRecoveryProperties.html +99 -0
  274. data/rdoc/RubyXL/FileSharing.html +99 -0
  275. data/rdoc/RubyXL/FileVersion.html +99 -0
  276. data/rdoc/RubyXL/Fill.html +138 -0
  277. data/rdoc/RubyXL/Fills.html +138 -0
  278. data/rdoc/RubyXL/FilterContainer.html +99 -0
  279. data/rdoc/RubyXL/FloatNode.html +97 -0
  280. data/rdoc/RubyXL/FloatValue.html +97 -0
  281. data/rdoc/RubyXL/Font.html +148 -0
  282. data/rdoc/RubyXL/FontConvenienceMethods.html +442 -0
  283. data/rdoc/RubyXL/FontScheme.html +99 -0
  284. data/rdoc/RubyXL/Fonts.html +138 -0
  285. data/rdoc/RubyXL/Formula.html +99 -0
  286. data/rdoc/RubyXL/FunctionGroup.html +99 -0
  287. data/rdoc/RubyXL/FunctionGroups.html +99 -0
  288. data/rdoc/RubyXL/GenericStorageObject.html +241 -0
  289. data/rdoc/RubyXL/GradientFill.html +99 -0
  290. data/rdoc/RubyXL/HeaderFooterSettings.html +99 -0
  291. data/rdoc/RubyXL/Hyperlink.html +99 -0
  292. data/rdoc/RubyXL/HyperlinkRelFile.html +106 -0
  293. data/rdoc/RubyXL/Hyperlinks.html +99 -0
  294. data/rdoc/RubyXL/IconFilter.html +99 -0
  295. data/rdoc/RubyXL/IconSet.html +99 -0
  296. data/rdoc/RubyXL/IgnoredError.html +99 -0
  297. data/rdoc/RubyXL/IgnoredErrors.html +99 -0
  298. data/rdoc/RubyXL/IndexedColors.html +99 -0
  299. data/rdoc/RubyXL/InputCells.html +99 -0
  300. data/rdoc/RubyXL/IntegerNode.html +97 -0
  301. data/rdoc/RubyXL/IntegerValue.html +97 -0
  302. data/rdoc/RubyXL/LegacyCell.html +130 -0
  303. data/rdoc/RubyXL/LegacyWorksheet.html +306 -0
  304. data/rdoc/RubyXL/MRUColors.html +99 -0
  305. data/rdoc/RubyXL/MacrosFile.html +108 -0
  306. data/rdoc/RubyXL/MergedCell.html +99 -0
  307. data/rdoc/RubyXL/MergedCells.html +99 -0
  308. data/rdoc/RubyXL/NumFmt.html +99 -0
  309. data/rdoc/RubyXL/NumberFormat.html +139 -0
  310. data/rdoc/RubyXL/NumberFormats.html +147 -0
  311. data/rdoc/RubyXL/OLEObject.html +99 -0
  312. data/rdoc/RubyXL/OLEObjectFile.html +108 -0
  313. data/rdoc/RubyXL/OLEObjects.html +99 -0
  314. data/rdoc/RubyXL/OLESize.html +99 -0
  315. data/rdoc/RubyXL/OOXMLContainerObject.html +309 -0
  316. data/rdoc/RubyXL/OOXMLIgnored.html +167 -0
  317. data/rdoc/RubyXL/OOXMLObject.html +107 -0
  318. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +455 -0
  319. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +442 -0
  320. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +470 -0
  321. data/rdoc/RubyXL/OOXMLTopLevelObject.html +297 -0
  322. data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
  323. data/rdoc/RubyXL/Offset.html +99 -0
  324. data/rdoc/RubyXL/OlapProperties.html +99 -0
  325. data/rdoc/RubyXL/OleItem.html +99 -0
  326. data/rdoc/RubyXL/OleItems.html +99 -0
  327. data/rdoc/RubyXL/OleLink.html +99 -0
  328. data/rdoc/RubyXL/OutlineProperties.html +99 -0
  329. data/rdoc/RubyXL/PageMargins.html +99 -0
  330. data/rdoc/RubyXL/PageSetup.html +99 -0
  331. data/rdoc/RubyXL/PageSetupProperties.html +99 -0
  332. data/rdoc/RubyXL/Pane.html +99 -0
  333. data/rdoc/RubyXL/Parser.html +174 -0
  334. data/rdoc/RubyXL/PatternFill.html +99 -0
  335. data/rdoc/RubyXL/PersonMetadata.html +108 -0
  336. data/rdoc/RubyXL/PhoneticProperties.html +99 -0
  337. data/rdoc/RubyXL/PhoneticRun.html +99 -0
  338. data/rdoc/RubyXL/PivotArea.html +99 -0
  339. data/rdoc/RubyXL/PivotCache.html +99 -0
  340. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +116 -0
  341. data/rdoc/RubyXL/PivotCacheRecordsFile.html +108 -0
  342. data/rdoc/RubyXL/PivotCaches.html +99 -0
  343. data/rdoc/RubyXL/PivotReference.html +99 -0
  344. data/rdoc/RubyXL/PivotReferences.html +99 -0
  345. data/rdoc/RubyXL/PivotTableFile.html +116 -0
  346. data/rdoc/RubyXL/PivotTableSelection.html +99 -0
  347. data/rdoc/RubyXL/PresetGeometry.html +99 -0
  348. data/rdoc/RubyXL/PrintOptions.html +99 -0
  349. data/rdoc/RubyXL/PrinterSettingsFile.html +108 -0
  350. data/rdoc/RubyXL/ProtectedRange.html +99 -0
  351. data/rdoc/RubyXL/ProtectedRanges.html +99 -0
  352. data/rdoc/RubyXL/Protection.html +99 -0
  353. data/rdoc/RubyXL/QueryParameter.html +99 -0
  354. data/rdoc/RubyXL/QueryParameters.html +99 -0
  355. data/rdoc/RubyXL/QueryTable.html +157 -0
  356. data/rdoc/RubyXL/QueryTableDeletedField.html +99 -0
  357. data/rdoc/RubyXL/QueryTableDeletedFields.html +99 -0
  358. data/rdoc/RubyXL/QueryTableField.html +99 -0
  359. data/rdoc/RubyXL/QueryTableFields.html +99 -0
  360. data/rdoc/RubyXL/QueryTableRefresh.html +99 -0
  361. data/rdoc/RubyXL/RID.html +97 -0
  362. data/rdoc/RubyXL/RawOOXML.html +187 -0
  363. data/rdoc/RubyXL/Reference.html +510 -0
  364. data/rdoc/RubyXL/Relationship.html +97 -0
  365. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +131 -0
  366. data/rdoc/RubyXL/RelationshipSupport.html +336 -0
  367. data/rdoc/RubyXL/RevisionPointer.html +99 -0
  368. data/rdoc/RubyXL/RichText.html +141 -0
  369. data/rdoc/RubyXL/RichTextRun.html +138 -0
  370. data/rdoc/RubyXL/Row.html +357 -0
  371. data/rdoc/RubyXL/RowExt.html +99 -0
  372. data/rdoc/RubyXL/RunProperties.html +99 -0
  373. data/rdoc/RubyXL/Scenario.html +99 -0
  374. data/rdoc/RubyXL/Scenarios.html +99 -0
  375. data/rdoc/RubyXL/Selection.html +146 -0
  376. data/rdoc/RubyXL/ShapeGuide.html +99 -0
  377. data/rdoc/RubyXL/ShapeTextRectangle.html +99 -0
  378. data/rdoc/RubyXL/SharedStringsTable.html +328 -0
  379. data/rdoc/RubyXL/Sheet.html +99 -0
  380. data/rdoc/RubyXL/SheetCalculationProperties.html +99 -0
  381. data/rdoc/RubyXL/SheetData.html +162 -0
  382. data/rdoc/RubyXL/SheetDataExt.html +99 -0
  383. data/rdoc/RubyXL/SheetDataSet.html +99 -0
  384. data/rdoc/RubyXL/SheetMetadata.html +108 -0
  385. data/rdoc/RubyXL/SheetName.html +99 -0
  386. data/rdoc/RubyXL/SheetNames.html +99 -0
  387. data/rdoc/RubyXL/Sheets.html +99 -0
  388. data/rdoc/RubyXL/SlicerCacheFile.html +108 -0
  389. data/rdoc/RubyXL/SlicerFile.html +108 -0
  390. data/rdoc/RubyXL/SmartTagProperties.html +99 -0
  391. data/rdoc/RubyXL/SmartTagType.html +99 -0
  392. data/rdoc/RubyXL/SmartTagTypes.html +99 -0
  393. data/rdoc/RubyXL/SmartTags.html +99 -0
  394. data/rdoc/RubyXL/SortCondition.html +99 -0
  395. data/rdoc/RubyXL/SortState.html +99 -0
  396. data/rdoc/RubyXL/Sqref.html +167 -0
  397. data/rdoc/RubyXL/Stop.html +99 -0
  398. data/rdoc/RubyXL/StringNode.html +97 -0
  399. data/rdoc/RubyXL/StringNodeW3C.html +167 -0
  400. data/rdoc/RubyXL/StringValue.html +97 -0
  401. data/rdoc/RubyXL/Stylesheet.html +281 -0
  402. data/rdoc/RubyXL/TableFile.html +108 -0
  403. data/rdoc/RubyXL/TableParts.html +97 -0
  404. data/rdoc/RubyXL/TableStyle.html +99 -0
  405. data/rdoc/RubyXL/TableStyles.html +99 -0
  406. data/rdoc/RubyXL/Text.html +175 -0
  407. data/rdoc/RubyXL/TextImportSettings.html +99 -0
  408. data/rdoc/RubyXL/Theme.html +535 -0
  409. data/rdoc/RubyXL/ThemeElements.html +99 -0
  410. data/rdoc/RubyXL/ThumbnailFile.html +108 -0
  411. data/rdoc/RubyXL/Top10.html +99 -0
  412. data/rdoc/RubyXL/VMLDrawingFile.html +116 -0
  413. data/rdoc/RubyXL/Variant.html +99 -0
  414. data/rdoc/RubyXL/Vector.html +142 -0
  415. data/rdoc/RubyXL/VectorValue.html +97 -0
  416. data/rdoc/RubyXL/VisualProperties.html +99 -0
  417. data/rdoc/RubyXL/WebPublishObject.html +99 -0
  418. data/rdoc/RubyXL/WebPublishObjects.html +99 -0
  419. data/rdoc/RubyXL/WebPublishingItem.html +99 -0
  420. data/rdoc/RubyXL/WebPublishingItems.html +99 -0
  421. data/rdoc/RubyXL/WebPublishingProperties.html +99 -0
  422. data/rdoc/RubyXL/WebQueryProperties.html +99 -0
  423. data/rdoc/RubyXL/Workbook.html +948 -0
  424. data/rdoc/RubyXL/WorkbookConvenienceMethods.html +596 -0
  425. data/rdoc/RubyXL/WorkbookProperties.html +99 -0
  426. data/rdoc/RubyXL/WorkbookProtection.html +99 -0
  427. data/rdoc/RubyXL/WorkbookRoot.html +325 -0
  428. data/rdoc/RubyXL/WorkbookView.html +99 -0
  429. data/rdoc/RubyXL/WorkbookViews.html +99 -0
  430. data/rdoc/RubyXL/Worksheet.html +418 -0
  431. data/rdoc/RubyXL/WorksheetConvenienceMethods.html +2205 -0
  432. data/rdoc/RubyXL/WorksheetDimensions.html +99 -0
  433. data/rdoc/RubyXL/WorksheetFormatProperties.html +97 -0
  434. data/rdoc/RubyXL/WorksheetProperties.html +99 -0
  435. data/rdoc/RubyXL/WorksheetProtection.html +99 -0
  436. data/rdoc/RubyXL/WorksheetView.html +99 -0
  437. data/rdoc/RubyXL/WorksheetViews.html +99 -0
  438. data/rdoc/RubyXL/XF.html +99 -0
  439. data/rdoc/RubyXL.html +338 -0
  440. data/rdoc/created.rid +45 -0
  441. data/rdoc/css/fonts.css +167 -0
  442. data/rdoc/css/rdoc.css +687 -0
  443. data/rdoc/fonts/Lato-Light.ttf +0 -0
  444. data/rdoc/fonts/Lato-LightItalic.ttf +0 -0
  445. data/rdoc/fonts/Lato-Regular.ttf +0 -0
  446. data/rdoc/fonts/Lato-RegularItalic.ttf +0 -0
  447. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  448. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  449. data/rdoc/images/add.png +0 -0
  450. data/rdoc/images/arrow_up.png +0 -0
  451. data/rdoc/images/brick.png +0 -0
  452. data/rdoc/images/brick_link.png +0 -0
  453. data/rdoc/images/bug.png +0 -0
  454. data/rdoc/images/bullet_black.png +0 -0
  455. data/rdoc/images/bullet_toggle_minus.png +0 -0
  456. data/rdoc/images/bullet_toggle_plus.png +0 -0
  457. data/rdoc/images/date.png +0 -0
  458. data/rdoc/images/delete.png +0 -0
  459. data/rdoc/images/find.png +0 -0
  460. data/rdoc/images/loadingAnimation.gif +0 -0
  461. data/rdoc/images/macFFBgHack.png +0 -0
  462. data/rdoc/images/package.png +0 -0
  463. data/rdoc/images/page_green.png +0 -0
  464. data/rdoc/images/page_white_text.png +0 -0
  465. data/rdoc/images/page_white_width.png +0 -0
  466. data/rdoc/images/plugin.png +0 -0
  467. data/rdoc/images/ruby.png +0 -0
  468. data/rdoc/images/tag_blue.png +0 -0
  469. data/rdoc/images/tag_green.png +0 -0
  470. data/rdoc/images/transparent.png +0 -0
  471. data/rdoc/images/wrench.png +0 -0
  472. data/rdoc/images/wrench_orange.png +0 -0
  473. data/rdoc/images/zoom.png +0 -0
  474. data/rdoc/index.html +477 -0
  475. data/rdoc/js/darkfish.js +97 -0
  476. data/rdoc/js/navigation.js +105 -0
  477. data/rdoc/js/navigation.js.gz +0 -0
  478. data/rdoc/js/search.js +110 -0
  479. data/rdoc/js/search_index.js +1 -0
  480. data/rdoc/js/search_index.js.gz +0 -0
  481. data/rdoc/js/searcher.js +229 -0
  482. data/rdoc/js/searcher.js.gz +0 -0
  483. data/rdoc/table_of_contents.html +3021 -0
  484. data/rubyXL.gemspec +521 -60
  485. data/spec/lib/cell_spec.rb +386 -143
  486. data/spec/lib/color_spec.rb +11 -4
  487. data/spec/lib/parser_spec.rb +90 -38
  488. data/spec/lib/reference_spec.rb +64 -0
  489. data/spec/lib/rgb_color_spec.rb +29 -0
  490. data/spec/lib/stylesheet_spec.rb +27 -0
  491. data/spec/lib/text_spec.rb +27 -0
  492. data/spec/lib/workbook_spec.rb +168 -22
  493. data/spec/lib/worksheet_spec.rb +1207 -1220
  494. data/spec/spec_helper.rb +13 -0
  495. data/test/input/.gitkeep +0 -0
  496. data/test/output/.gitkeep +0 -0
  497. data/test/test_parse_write.rb +15 -0
  498. data/tmp/.gitignore +1 -0
  499. metadata +634 -168
  500. data/Gemfile.lock +0 -34
  501. data/lib/.DS_Store +0 -0
  502. data/lib/rubyXL/Hash.rb +0 -60
  503. data/lib/rubyXL/color.rb +0 -14
  504. data/lib/rubyXL/private_class.rb +0 -265
  505. data/lib/rubyXL/workbook.rb +0 -450
  506. data/lib/rubyXL/writer/app_writer.rb +0 -62
  507. data/lib/rubyXL/writer/calc_chain_writer.rb +0 -33
  508. data/lib/rubyXL/writer/content_types_writer.rb +0 -77
  509. data/lib/rubyXL/writer/core_writer.rb +0 -51
  510. data/lib/rubyXL/writer/root_rels_writer.rb +0 -25
  511. data/lib/rubyXL/writer/shared_strings_writer.rb +0 -30
  512. data/lib/rubyXL/writer/styles_writer.rb +0 -407
  513. data/lib/rubyXL/writer/theme_writer.rb +0 -343
  514. data/lib/rubyXL/writer/workbook_rels_writer.rb +0 -59
  515. data/lib/rubyXL/writer/workbook_writer.rb +0 -77
  516. data/lib/rubyXL/writer/worksheet_writer.rb +0 -230
  517. data/lib/rubyXL/zip.rb +0 -20
  518. data/spec/lib/hash_spec.rb +0 -28
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 14119a8af99822bbe1fd209a060d5374e92fe921750766cc83fa2cebdf586963
4
+ data.tar.gz: a3870a59650bd9b32c82bd6ad950aa720cb9f50370b96956eecb522d1c8e8fce
5
+ SHA512:
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/.codeclimate.yml ADDED
@@ -0,0 +1,3 @@
1
+ exclude_patterns:
2
+ - "rdoc/*"
3
+ - "spec/*"
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,16 +1,20 @@
1
- source "http://rubygems.org"
2
- # Add dependencies required to use your gem here.
3
- # Example:
4
- # gem "activesupport", ">= 2.3.5"
1
+ source 'http://rubygems.org'
5
2
 
6
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
- group :development do
9
- gem "shoulda", ">= 0"
10
- gem "bundler", "~> 1.0.0"
11
- gem "jeweler", "~> 1.6.0"
12
- gem "rcov", ">= 0"
13
- gem "nokogiri", ">= 1.4.4"
14
- gem "rubyzip", ">= 0.9.4"
15
- gem "rspec", ">= 1.3.4"
3
+ # Dependencies required to run this gem.
4
+ gem 'nokogiri', '>= 1.10.8'
5
+ gem 'rubyzip', '>= 1.3.0' , :require => 'zip'
6
+
7
+ # Development dependencies.
8
+ group :development, :test do
9
+ gem 'bundler'
10
+ gem 'rake'
11
+ gem 'juwelier'
12
+ gem 'rspec'
13
+ gem 'simplecov'
14
+
15
+ # gem 'stackprof'
16
+ gem 'ruby-prof'
17
+ gem 'rspec_junit_formatter'
18
+
19
+ gem 'rubocop'
16
20
  end
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Vivek Bhagwat
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,181 +1,252 @@
1
1
  = 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]
5
+
6
+ This gem supports operating on +xlsx+ files (Open XML format). While it is capable
7
+ of properly parsing the entire OOXML structure, its current main emphasis is on
8
+ reading files produced by MS Excel, making minor modifications to them and saving
9
+ them to be opened again, while preserving as much of the structure as possible.
10
+
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.
2
12
 
3
13
  == To Install:
4
14
  gem install rubyXL
5
15
 
6
16
  == To Use:
7
- require 'rubyXL' #assuming rubygems is already required
17
+ require 'rubyXL' # Assuming rubygems is already required
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'
8
30
 
9
31
  === Parsing an existing workbook
10
32
  workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
11
33
 
12
-
13
34
  === Creating a new Workbook
14
35
  workbook = RubyXL::Workbook.new
15
36
 
16
37
  === Accessing
17
38
 
18
39
  ==== Accessing a Worksheet
19
- workbook.worksheets[0] #returns first worksheet
20
- workbook[0] #returns first worksheet
21
-
22
- ==== Accessing Only the Values
23
- workbook.worksheets[0].extract_data #produces a 2d array which consists only of the values (instead of the Cell objects which include other variables)
40
+ workbook.worksheets[0] # Returns first worksheet
41
+ workbook[0] # Returns first worksheet
42
+ workbook['Sheet1'] # Finds and returns worksheet titled "Sheet1". Note that sheet names in Excel are limited to 31 character.
24
43
 
25
44
  ==== Accessing a Row (Array of Cells)
26
- workbook[0].sheet_data[0] #returns first row in first worksheet
27
- workbook[0][0] #returns first row in first worksheet
28
-
29
- ==== Accessing a Cell
30
- workbook[0].sheet_data[0][0] #returns A1 in first worksheet
31
- workbook[0][0][0] #returns A1 in first worksheet
32
-
33
- ==== Accessing Cell properties
34
- workbook[0][0][0].is_struckthrough() #returns if A1 is struckthrough, other boolean properties have same syntax
35
- workbook[0][0][0].font_name #returns font name for A1
36
- workbook[0][0][0].font_size #returns font size for A1
37
- workbook[0][0][0].font_color #returns font color for A1
38
- workbook[0][0][0].fill_color #returns fill color for A1
39
- workbook[0][0][0].horizontal_alignment #returns horizontal alignment for A1 (or nil if it does not exist)
40
- workbook[0][0][0].vertical_alignment #returns vertical alignment for A1 (or nil if it does not exist)
41
- workbook[0][0][0].border_top #returns type of border on top of A1 (nil if none exists), other directions have same syntax
42
-
43
- ==== Accessing row properties
44
- workbook[0].get_row_fill(0) #returns fill color for first row
45
- workbook[0].get_row_font_name(0) #returns font name for first row
46
- workbook[0].get_row_font_size(0) #returns font size for first row
47
- workbook[0].get_row_font_color(0) #returns font color for first row
48
- workbook[0].is_row_underlined(0) #returns if first row is italicized, other boolean properties have same syntax
49
- workbook[0].get_row_height(0) #returns height of first row
50
- workbook[0].get_row_horizontal_alignment(0) #returns horizontal alignment of first row (nil if none exists)
51
- workbook[0].get_row_vertical_alignment(0) #returns vertical alignment of first row (nil if none exists)
52
- workbook[0].get_row_border_right(0) #returns weight of right border of first row (nil if none exists), other directions have the same syntax
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>.
46
+
47
+ worksheet = workbook[0]
48
+ worksheet.sheet_data[0] # Returns first row of the worksheet
49
+ worksheet[0] # Returns first row of the worksheet
50
+
51
+ ==== Accessing a Cell object
52
+ Please note that row is a _sparse_ array of cells. Your code *must* expect that any cell it plucks from the array may be <tt>nil</tt>.
53
+
54
+ worksheet = workbook[0]
55
+ worksheet.sheet_data[0][0] # Returns cell A1 in the worksheet
56
+ worksheet[0][0] # Returns cell A1 in the worksheet
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
+
66
+ ==== Wrappers for accessing Cell properties
67
+ cell = workbook[0][0][0]
68
+ cell.is_struckthrough # Returns +true+ if the cell is struckthrough, other boolean properties have same syntax
69
+ cell.font_name
70
+ cell.font_size
71
+ cell.font_color
72
+ cell.fill_color
73
+ cell.horizontal_alignment
74
+ cell.vertical_alignment
75
+ cell.get_border(:top)
76
+ cell.get_border_color(:top)
77
+ cell.text_rotation
78
+
79
+ ==== Wrappers for accessing Row properties
80
+ Please note: these methods are being phased out in favor of the OOXML object model.
81
+ worksheet = workbook[0]
82
+ worksheet.get_row_fill(0)
83
+ worksheet.get_row_font_name(0)
84
+ worksheet.get_row_font_size(0)
85
+ worksheet.get_row_font_color(0)
86
+ worksheet.is_row_underlined(0)
87
+ worksheet.get_row_height(0)
88
+ worksheet.get_row_alignment(0, true)
89
+ worksheet.get_row_alignment(0, false)
90
+ worksheet.get_row_border(0, :right)
91
+ worksheet.get_row_border_color(0, :right)
53
92
 
54
93
  ==== Accessing column properties
55
- workbook[0].get_column_fill(0) #returns fill color for first column
56
- workbook[0].get_column_font_name(0) #returns font name for first column
57
- workbook[0].get_column_font_size(0) #returns font size for first column
58
- workbook[0].get_column_font_color(0) #returns font color for first column
59
- workbook[0].is_column_underlined(0) #returns if first column is italicized, other boolean properties have same syntax
60
- workbook[0].get_column_height(0) #returns height of first column
61
- workbook[0].get_column_horizontal_alignment(0) #returns horizontal alignment of first column (nil if none exists)
62
- workbook[0].get_column_vertical_alignment(0) #returns vertical alignment of first column (nil if none exists)
63
- workbook[0].get_column_border_right(0) #returns weight of right border of first column (nil if none exists), other directions have the same syntax
64
-
65
- ==== Table identification
66
- workbook[0].get_table(["NAME", "AGE", "HEIGHT"]) #returns hash of a table in the first worksheet, with the specified strings as headers, accessible by row and column
67
- #it returns the following structure
68
- {
69
- :Name=>["John", "Jane", "Joe"],
70
- :Height=>[70, 65, 68],
71
- :Age=>[30, 25, 35]
72
- :table=>[
73
- {:Name=>"John", :Height=>70, :Age=>30},
74
- {:Name=>"Jane", :Height=>65, :Age=>25},
75
- {:Name=>"Joe", :Height=>68, :Age=>35}
76
- ]
77
- }
94
+ Please note: these methods are being phased out in favor of the OOXML object model.
95
+ worksheet = workbook[0]
96
+ worksheet.get_column_fill(0)
97
+ worksheet.get_column_font_name(0)
98
+ worksheet.get_column_font_size(0)
99
+ worksheet.get_column_font_color(0)
100
+ worksheet.is_column_underlined(0)
101
+ worksheet.get_column_width(0)
102
+ worksheet.get_column_alignment(0, :horizontal)
103
+ worksheet.get_column_alignment(0, :vertical)
104
+ worksheet.get_column_border(0, :right)
105
+ worksheet.get_column_border_color(0, :right)
78
106
 
79
107
  === Modifying
80
108
 
81
109
  ==== Adding Worksheets
82
- workbook.worksheets << Worksheet.new('Sheet2')
110
+ worksheet = workbook.add_worksheet('Sheet2')
111
+
112
+ ==== Renaming Worksheets
113
+ worksheet.sheet_name = 'Cool New Name' # Note that sheet name is limited to 31 characters by Excel.
83
114
 
84
115
  ==== Adding Cells
85
- workbook.worksheets[0].add_cell(0,0,'A1') #sets A1 to string "A1"
86
- workbook.worksheets[0].add_cell(0,1,'','A1') #sets B1 to value of A1
116
+ worksheet.add_cell(0, 0, 'A1') # Sets cell A1 to string "A1"
117
+ worksheet.add_cell(0, 1, '', 'A1') # Sets formula in the cell B1 to '=A1'
87
118
 
88
- workbook.worksheets[0].add_cell_obj(Cell.new(1,0,'blah')) #sets A2 to 'blah'
89
-
90
119
  ==== Changing Cells
91
- workbook.worksheets[0][0][0].change_contents("", workbook.worksheets[0][0][0].formula) #sets A1 to empty string, preserves formula
120
+ worksheet[0][0].change_contents("", worksheet[0][0].formula) # Sets value of cell A1 to empty string, preserves formula
92
121
 
93
122
  ==== Changing Fonts
94
- workbook.worksheets[0].sheet_data[0][0].change_font_bold(true) #sets A1 to bold
95
- workbook.worksheets[0].change_row_font_italics(0,true) #makes first row italicized
96
- workbook.worksheets[0].change_column_font_name(0,'Courier') #makes first column have font Courier
123
+ worksheet.sheet_data[0][0].change_font_bold(true) # Makes A1 bold
124
+ worksheet.change_row_italics(0,true) # Makes first row italicized
125
+ worksheet.change_column_font_name(0, 'Courier') # Makes first column have font Courier
97
126
 
98
127
  ==== Changing Fills
99
- workbook.worksheets[0].sheet_data[0][0].change_fill('0ba53d') #sets A1 to have fill #0ba53d
100
- workbook.worksheets[0].change_row_fill(0, '0ba53d') #sets first row to have fill #0ba53d
101
- workbook.worksheets[0].change_column_fill(0, '0ba53d') #sets first column to have fill #0ba53d
128
+ worksheet.sheet_data[0][0].change_fill('0ba53d') # Sets A1 to have fill #0ba53d
129
+ worksheet.change_row_fill(0, '0ba53d') # Sets first row to have fill #0ba53d
130
+ worksheet.change_column_fill(0, '0ba53d') # Sets first column to have fill #0ba53d
102
131
 
103
132
  ==== Changing Borders
104
133
  # Possible weights: hairline, thin, medium, thick
105
134
  # Possible "directions": top, bottom, left, right, diagonal
106
- workbook.worksheets[0].sheet_data[0][0].change_border_top('thin') #sets A1 to have a top, thin border
107
- workbook.worksheets[0].change_row_border_left(0, 'hairline') #sets first row to have a left, hairline border
108
- workbook.worksheets[0].change_column_border_diagonal(0, 'medium') #sets first column to have diagonal, medium border
135
+ worksheet.sheet_data[0][0].change_border(:top, 'thin') # Sets A1 to have a top, thin border
136
+ worksheet.change_row_border(0, :left, 'hairline') # Sets first row to have a left, hairline border
137
+ worksheet.change_column_border(0, :diagonal, 'medium') # Sets first column to have diagonal, medium border
138
+
139
+ # Set the border style first so there's something to color.
140
+ worksheet.change_row_border_color(0, :top, '0ba53d') # Sets first row to have a green top border
141
+ worksheet.change_column_border_color(0, :top, '0ba53d') # Sets first column to have a green top border
109
142
 
110
143
  ==== Changing Alignment
111
144
  ===== Horizontal
112
- center, distributed, justify, left, right
113
- workbook.worksheets[0].sheet_data[0][0].change_horizontal_alignment('center') #sets A1 to be centered
114
- workbook.worksheets[0].change_row_horizontal_alignment(0,'justify') #sets first row to be justified
115
- workbook.worksheets[0].change_column_horizontal_alignment(0,'right'), #sets first column to be right-aligned
145
+ # Possible alignments: center, distributed, justify, left, right
146
+ worksheet.sheet_data[0][0].change_horizontal_alignment('center') # Sets A1 to be centered
147
+ worksheet.change_row_horizontal_alignment(0, 'justify') # Sets first row to be justified
148
+ worksheet.change_column_horizontal_alignment(0, 'right') # Sets first column to be right-aligned
116
149
 
117
150
  ===== Vertical
118
- bottom, center, distributed, top
119
- workbook.worksheets[0].sheet_data[0][0].change_vertical_alignment('bottom') #sets A1 to be bottom aligned
120
- workbook.worksheets[0].change_row_vertical_alignment(0,'distributed') #sets first row to be distributed vertically
121
- workbook.worksheets[0].change_column_vertical_alignment(0,'top') #sets first column to be top aligned
151
+ # Possible alignments: bottom, center, distributed, top
152
+ worksheet.sheet_data[0][0].change_vertical_alignment('bottom') # Sets A1 to be bottom aligned
153
+ worksheet.change_row_vertical_alignment(0, 'distributed') # Sets first row to be distributed vertically
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
122
163
 
123
164
  ==== Changing Row Height
124
- workbook.worksheets[0].change_row_height(0,30) #sets first row to be of height 30
165
+ worksheet.change_row_height(0, 30) # Sets first row height to 30
125
166
 
126
167
  ==== Changing Column Width
127
- workbook.worksheets[0].change_column_width(0,30) #sets first column to be of width 30
168
+ worksheet.change_column_width(0, 30) # Sets first column width to 30
128
169
 
129
170
  ==== Merging Cells
130
- workbook.worksheets[0].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
131
174
 
132
175
  ==== Insert Row
133
176
  This method will insert a row at specified index, pushing all rows below it down. It also copies styles from row above.
134
177
 
135
178
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows
136
- workbook.worksheets[0].insert_row(1)
179
+ worksheet.insert_row(1)
137
180
 
138
181
  ==== Insert Column
139
182
  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
140
183
 
141
184
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns
142
- workbook.worksheets[0].insert_column(1)
185
+ worksheet.insert_column(1)
143
186
 
144
187
  ==== Delete Row
145
188
  This method will delete a row at specified index, pushing all rows below it up.
146
189
 
147
190
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted rows
148
- workbook.worksheets[0].delete_row(1)
191
+ worksheet.delete_row(1)
149
192
 
150
193
  ==== Delete Column
151
194
  This method will delete a column at specified index, pushing all columns to the right of it left.
152
195
 
153
196
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted columns
154
- workbook.worksheets[0].delete_column(1)
197
+ worksheet.delete_column(1)
155
198
 
156
199
  ==== Insert Cell
157
200
  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)
158
201
 
159
202
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells
160
- workbook.worksheets[0].insert_cell(0,0,"blah",formula=nil,:right) #inserts cell at A1, shifts cells in first row right
161
- workbook.worksheets[0].insert_cell(0,0,"blah",formula=nil,:down) #inserts cell at A1, shifts cells in first column down
162
- workbook.worksheets[0].insert_cell(0,0,"blah") #inserts cell at A1, shifts nothing
203
+ worksheet.insert_cell(0, 0, "blah", formula = nil, :right) # Inserts cell at A1, shifts cells in first row right
204
+ worksheet.insert_cell(0, 0, "blah", formula = nil, :down) # Inserts cell at A1, shifts cells in first column down
205
+ worksheet.insert_cell(0, 0, "blah") # Inserts cell at A1, shifts nothing
163
206
 
164
207
  ==== Delete Cell
165
208
  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)
166
209
 
167
210
  WARNING: Use of this method WILL break formulas referencing cells which have been moved, as the formulas do not adapt to the shifted cells
168
- workbook.worksheets[0].delete_cell(0,0,:left) #deletes A1, shifts contents of first row left
169
- workbook.worksheets[0].delete_cell(0,0,:up) #deletes A1, shifts contents of first column up
170
- workbook.worksheets[0].delete_cell(0,0) #deletes A1, does not shift cells
211
+ worksheet.delete_cell(0, 0, :left) # Deletes A1, shifts contents of first row left
212
+ worksheet.delete_cell(0, 0, :up) # Deletes A1, shifts contents of first column up
213
+ worksheet.delete_cell(0, 0) # Deletes A1, does not shift cells
214
+
215
+ ==== Modifying Cell Format
216
+ cell = worksheet[0][0]
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
171
221
 
172
- === Writing
222
+ ==== Add hyperlink to a Cell
223
+ cell.add_hyperlink('http://example.com')
224
+ cell.add_hyperlink('http://example.com', 'Some tooltip text')
225
+
226
+
227
+ == I/O
228
+
229
+ By default, the gem operates with files on the local filesystem:
230
+
231
+ workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
173
232
  workbook.write("path/to/desired/Excel/file.xlsx")
174
233
 
234
+ It can also operate on +StringIO+ objects, thus eliminating the need to save the +xlsx+ file to disk. This capability comes in handy for web servers.
235
+
236
+ workbook = RubyXL::Parser.parse_buffer(buffer)
237
+ workbook.stream
175
238
 
176
- === Miscellaneous
177
- Cell.convert_to_cell(0,0) == 'A1' #converts row and column index to Excel-style index
178
- Parser.convert_to_index('A1') == [0,0] #converts Excel-style index to row and column index
239
+ == Miscellaneous
240
+ RubyXL::Reference.ind2ref(0,0) == 'A1' # Converts row and column index to Excel-style cell reference
241
+ RubyXL::Reference.ref2ind('A1') == [0, 0] # Converts Excel-style cell reference to row and column index
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" ])
179
250
 
180
251
  == For more information
181
252
  Take a look at the files in spec/lib/ for rspecs on most methods
@@ -192,6 +263,5 @@ Take a look at the files in spec/lib/ for rspecs on most methods
192
263
 
193
264
  == Copyright
194
265
 
195
- Copyright (c) 2011 Vivek Bhagwat. See LICENSE.txt for
196
- further details.
197
-
266
+ Copyright (c) 2011 Vivek Bhagwat, 2013-2022 Wesha.
267
+ See LICENSE.txt for further details.