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
@@ -10,11 +10,11 @@ require 'rubyXL/objects/column_range'
10
10
  require 'rubyXL/objects/filters'
11
11
  require 'rubyXL/objects/data_validation'
12
12
  require 'rubyXL/objects/comments'
13
+ require 'rubyXL/objects/connection'
14
+ require 'rubyXL/objects/query_table'
13
15
  require 'rubyXL/worksheet'
14
- require 'rubyXL/convenience_methods'
15
16
 
16
17
  module RubyXL
17
-
18
18
  # Eventually, the entire code for Worksheet will be moved here. One small step at a time!
19
19
 
20
20
  # http://www.datypic.com/sc/ooxml/e-ssml_outlinePr-1.html
@@ -57,7 +57,7 @@ module RubyXL
57
57
  end
58
58
 
59
59
  class WorksheetFormatProperties < OOXMLObject
60
- define_attribute(:baseColWidth, :int, :default => 8)
60
+ define_attribute(:baseColWidth, :int, :default => 8)
61
61
  define_attribute(:defaultColWidth, :double)
62
62
  define_attribute(:defaultRowHeight, :double, :required => true)
63
63
  define_attribute(:customHeight, :bool, :default => false)
@@ -82,12 +82,12 @@ module RubyXL
82
82
  define_attribute(:blackAndWhite, :bool, :default => false)
83
83
  define_attribute(:draft, :bool, :default => false)
84
84
  define_attribute(:cellComments, RubyXL::ST_CellComments, :default => 'none')
85
- define_attribute(:useFirstPageNumber, :bool, :default => false)
85
+ define_attribute(:useFirstPageNumber, :bool, :default => false)
86
86
  define_attribute(:errors, RubyXL::ST_PrintError, :default => 'displayed')
87
87
  define_attribute(:horizontalDpi, :int, :default => 600)
88
88
  define_attribute(:verticalDpi, :int, :default => 600)
89
89
  define_attribute(:copies, :int, :default => 1)
90
- define_attribute(:'r:id', :string)
90
+ define_relationship
91
91
  define_element_name 'pageSetup'
92
92
  end
93
93
 
@@ -165,7 +165,7 @@ module RubyXL
165
165
  class ConditionalFormatValue < OOXMLObject
166
166
  define_attribute(:type, RubyXL::ST_CfvoType, :required => true)
167
167
  define_attribute(:val, :string)
168
- define_attribute(:gte, :bool, :default => true)
168
+ define_attribute(:gte, :bool, :default => true)
169
169
  define_child_node(RubyXL::ExtensionStorageArea)
170
170
  define_element_name 'cfvo'
171
171
  end
@@ -173,7 +173,7 @@ module RubyXL
173
173
  # http://www.datypic.com/sc/ooxml/e-ssml_colorScale-1.html
174
174
  class ColorScale < OOXMLObject
175
175
  define_child_node(RubyXL::ConditionalFormatValue, :collection => true, :accessor => :cfvo)
176
- define_child_node(RubyXL::Color)
176
+ define_child_node(RubyXL::Color, :collection => true)
177
177
  define_element_name 'colorScale'
178
178
  end
179
179
 
@@ -183,7 +183,7 @@ module RubyXL
183
183
  define_attribute(:maxLength, :int, :default => 90)
184
184
  define_attribute(:showValue, :bool, :default => true)
185
185
  define_child_node(RubyXL::ConditionalFormatValue, :collection => true, :accessor => :cfvo)
186
- define_child_node(RubyXL::Color)
186
+ define_child_node(RubyXL::Color, :collection => true)
187
187
  define_element_name 'dataBar'
188
188
  end
189
189
 
@@ -211,7 +211,7 @@ module RubyXL
211
211
  define_attribute(:timePeriod, RubyXL::ST_TimePeriod)
212
212
  define_attribute(:rank, :int)
213
213
  define_attribute(:stdDev, :int)
214
- define_attribute(:equalAverage, :bool, :default => false)
214
+ define_attribute(:equalAverage, :bool, :default => false)
215
215
  define_child_node(RubyXL::Formula, :collection => true, :node_name => :formula, :accessor => :formulas)
216
216
  define_child_node(RubyXL::ColorScale)
217
217
  define_child_node(RubyXL::DataBar)
@@ -300,8 +300,8 @@ module RubyXL
300
300
 
301
301
  # http://www.datypic.com/sc/ooxml/e-ssml_hyperlink-1.html
302
302
  class Hyperlink < OOXMLObject
303
- define_attribute(:ref, :ref, :required => true)
304
- define_attribute(:'r:id', :string)
303
+ define_attribute(:ref, :ref, :required => true)
304
+ define_relationship
305
305
  define_attribute(:location, :string)
306
306
  define_attribute(:tooltip, :string)
307
307
  define_attribute(:display, :string)
@@ -322,7 +322,7 @@ module RubyXL
322
322
  define_attribute(:oleUpdate, RubyXL::ST_OleUpdate)
323
323
  define_attribute(:autoLoad, :bool, :default => false)
324
324
  define_attribute(:shapeId, :int, :required => true)
325
- define_attribute(:'r:id', :string)
325
+ define_relationship
326
326
  define_element_name 'oleObject'
327
327
  end
328
328
 
@@ -338,7 +338,7 @@ module RubyXL
338
338
  define_attribute(:ref, :ref)
339
339
  define_attribute(:name, :string)
340
340
  define_attribute(:sheet, :string)
341
- define_attribute(:'r:id', :string)
341
+ define_relationship
342
342
  define_element_name 'dataRef'
343
343
  end
344
344
 
@@ -362,7 +362,7 @@ module RubyXL
362
362
  class Pane < OOXMLObject
363
363
  define_attribute(:xSplit, :double)
364
364
  define_attribute(:ySplit, :double)
365
- define_attribute(:topLeftCell, :string)
365
+ define_attribute(:topLeftCell, :ref)
366
366
  define_attribute(:activePane, RubyXL::ST_Pane, :default => 'topLeft')
367
367
  define_attribute(:state, RubyXL::ST_PaneState, :default => 'split')
368
368
  define_element_name 'pane'
@@ -407,9 +407,9 @@ module RubyXL
407
407
  define_attribute(:hiddenRows, :bool, :default => false)
408
408
  define_attribute(:hiddenColumns, :bool, :default => false)
409
409
  define_attribute(:state, RubyXL::ST_Visibility, :default => 'visible')
410
- define_attribute(:filterUnique, :bool, :default => false)
410
+ define_attribute(:filterUnique, :bool, :default => false)
411
411
  define_attribute(:view, RubyXL::ST_SheetViewType, :default => 'normal')
412
- define_attribute(:showRuler, :bool, :default => true)
412
+ define_attribute(:showRuler, :bool, :default => true)
413
413
  define_attribute(:topLeftCell, :ref)
414
414
  define_child_node(RubyXL::Pane)
415
415
  define_child_node(RubyXL::Selection)
@@ -432,9 +432,9 @@ module RubyXL
432
432
 
433
433
  # http://www.datypic.com/sc/ooxml/e-ssml_control-1.html
434
434
  class EmbeddedControl < OOXMLObject
435
- define_attribute(:shapeId, :int, :required => true)
436
- define_attribute(:'r:id', :string, :required => true)
437
- define_attribute(:name, :string)
435
+ define_attribute(:shapeId, :int, :required => true)
436
+ define_relationship(:required => true)
437
+ define_attribute(:name, :string)
438
438
  define_element_name 'control'
439
439
  end
440
440
 
@@ -488,8 +488,8 @@ module RubyXL
488
488
 
489
489
  # http://www.datypic.com/sc/ooxml/e-ssml_customPr-1.html
490
490
  class CustomProperty < OOXMLObject
491
- define_attribute(:name, :string, :required => true)
492
- define_attribute(:'r:id', :string, :required => true)
491
+ define_attribute(:name, :string, :required => true)
492
+ define_relationship(:required => true)
493
493
  define_element_name 'customPr'
494
494
  end
495
495
 
@@ -545,7 +545,7 @@ module RubyXL
545
545
  define_attribute(:cacheIndex, :bool, :default => false)
546
546
  define_attribute(:outline, :bool, :default => true)
547
547
  define_attribute(:offset, :ref)
548
- define_attribute(:collapsedLevelsAreSubtotals, :bool, :default => false)
548
+ define_attribute(:collapsedLevelsAreSubtotals, :bool, :default => false)
549
549
  define_attribute(:axis, RubyXL::ST_Axis)
550
550
  define_attribute(:fieldPosition, :int, :default => 0)
551
551
  define_child_node(RubyXL::PivotReferences)
@@ -571,7 +571,7 @@ module RubyXL
571
571
  define_attribute(:previousRow, :uint, :default => 0)
572
572
  define_attribute(:previousCol, :uint, :default => 0)
573
573
  define_attribute(:click, :uint, :default => 0)
574
- define_attribute(:'r:id', :string)
574
+ define_relationship
575
575
  define_child_node(RubyXL::PivotArea)
576
576
  define_element_name 'pivotSelection'
577
577
  end
@@ -596,10 +596,10 @@ module RubyXL
596
596
  define_attribute(:zoomScaleNormal, :uint, :default => 0)
597
597
  define_attribute(:zoomScaleSheetLayoutView, :uint, :default => 0)
598
598
  define_attribute(:zoomScalePageLayoutView, :uint, :default => 0)
599
- define_attribute(:workbookViewId, :uint, :required => true, :default => 0 )
599
+ define_attribute(:workbookViewId, :uint, :required => true, :default => 0)
600
600
  define_child_node(RubyXL::Pane)
601
601
  define_child_node(RubyXL::Selection, :collection => true, :accessor => :selections)
602
- define_child_node(RubyXL::PivotTableSelection, :collection => true, :accessor => :pivot_table_selections )
602
+ define_child_node(RubyXL::PivotTableSelection, :collection => true, :accessor => :pivot_table_selections)
603
603
  define_child_node(RubyXL::ExtensionStorageArea)
604
604
  define_element_name 'sheetView'
605
605
  end
@@ -613,8 +613,8 @@ module RubyXL
613
613
 
614
614
  # http://www.datypic.com/sc/ooxml/e-ssml_worksheet.html
615
615
  class Worksheet < OOXMLTopLevelObject
616
- CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'
617
- REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'
616
+ CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'.freeze
617
+ REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'.freeze
618
618
 
619
619
  include RubyXL::RelationshipSupport
620
620
 
@@ -630,9 +630,11 @@ module RubyXL
630
630
  define_relationship(RubyXL::PivotTableFile)
631
631
  define_relationship(RubyXL::TableFile)
632
632
  define_relationship(RubyXL::ControlPropertiesFile)
633
+ define_relationship(RubyXL::CustomPropertyFile)
633
634
  define_relationship(RubyXL::SlicerFile)
634
635
  define_relationship(RubyXL::OLEObjectFile)
635
636
  define_relationship(RubyXL::ActiveX)
637
+ define_relationship(RubyXL::QueryTable)
636
638
 
637
639
  define_child_node(RubyXL::WorksheetProperties)
638
640
  define_child_node(RubyXL::WorksheetDimensions)
@@ -648,7 +650,7 @@ module RubyXL
648
650
  define_child_node(RubyXL::SortState)
649
651
  define_child_node(RubyXL::DataConsolidate)
650
652
  define_child_node(RubyXL::CustomSheetViews)
651
- define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
653
+ define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
652
654
  define_child_node(RubyXL::PhoneticProperties)
653
655
  define_child_node(RubyXL::ConditionalFormatting, :collection => [0..-1])
654
656
  define_child_node(RubyXL::DataValidations)
@@ -674,11 +676,11 @@ module RubyXL
674
676
  define_child_node(RubyXL::ExtensionStorageArea)
675
677
  define_child_node(RubyXL::AlternateContent)
676
678
  define_element_name 'worksheet'
677
- set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
679
+ set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
678
680
  'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r',
679
- 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
680
- 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' => 'x14ac',
681
- 'urn:schemas-microsoft-com:mac:vml' => 'mv')
681
+ 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
682
+ 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' => 'x14ac',
683
+ 'urn:schemas-microsoft-com:mac:vml' => 'mv')
682
684
 
683
685
  attr_accessor :workbook, :state, :sheet_name, :sheet_id, :rels
684
686
 
@@ -741,8 +743,20 @@ module RubyXL
741
743
  sheet_obj
742
744
  end
743
745
 
746
+ def get_col_xf(column_index)
747
+ workbook.stylesheet.cell_xfs[get_col_style(column_index)]
748
+ end
749
+
750
+ def get_row_xf(row)
751
+ workbook.stylesheet.cell_xfs[get_row_style(row)]
752
+ end
753
+
754
+ def cell_at(ref)
755
+ reference = RubyXL::Reference.new(ref)
756
+ raise "Invalid reference: #{ref}" unless reference.valid? && reference.single_cell?
757
+ sheet_data&.rows&.[](reference.first_row)&.cells&.[](reference.first_col)
758
+ end
759
+
744
760
  include LegacyWorksheet
745
- include WorksheetConvenienceMethods
746
761
  end
747
-
748
762
  end
data/lib/rubyXL/parser.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  module RubyXL
2
2
  class Parser
3
-
4
3
  # Parse <tt>.xslx</tt> file by reading it from local disk.
5
4
  def self.parse(src_file_path)
6
5
  begin
@@ -18,12 +17,11 @@ module RubyXL
18
17
  def self.parse_buffer(buffer)
19
18
  root = nil # Zip::File.open_buffer somehow fails to return the value from the block :(
20
19
  begin
21
- ::Zip::File.open_buffer(buffer) { |zip_file| root = RubyXL::WorkbookRoot.parse_zip_file(zip_file) }
20
+ ::Zip::File.open_buffer(buffer) { |zip_file| root = RubyXL::WorkbookRoot.parse_zip_file(zip_file) }
22
21
  root.workbook
23
22
  rescue ::Zip::Error => e
24
23
  raise e, "XLSX file format error: #{e}", e.backtrace
25
24
  end
26
25
  end
27
-
28
26
  end
29
27
  end
@@ -1,105 +1,105 @@
1
1
  module RubyXL
2
- module LegacyWorksheet
3
- include Enumerable
4
-
5
- def initialize(params = {})
6
- super
7
- self.workbook = params[:workbook]
8
- self.sheet_name = params[:sheet_name]
9
- self.sheet_id = params[:sheet_id]
10
- self.sheet_data = RubyXL::SheetData.new
11
- self.cols = RubyXL::ColumnRanges.new
12
- @comments = [] # Do not optimize! These are arrays, so they will share the pointer!
13
- @printer_settings = []
14
- @generic_storage = []
15
- end
2
+ module LegacyWorksheet
3
+ TEXT_LENGTH_LIMIT_IN_CELL = 32767 # 2 ** 15 - 1
4
+
5
+ include Enumerable
6
+
7
+ def initialize(params = {})
8
+ super
9
+ self.workbook = params[:workbook]
10
+ self.sheet_name = params[:sheet_name]
11
+ self.sheet_id = params[:sheet_id]
12
+ self.sheet_data = RubyXL::SheetData.new
13
+ self.cols = RubyXL::ColumnRanges.new
14
+ @comments = [] # Do not optimize! These are arrays, so they will share the pointer!
15
+ @printer_settings = []
16
+ @generic_storage = []
17
+ end
16
18
 
17
- # allows for easier access to sheet_data
18
- def [](row = 0)
19
- sheet_data[row]
20
- end
19
+ # allows for easier access to sheet_data
20
+ def [](row = 0)
21
+ sheet_data[row]
22
+ end
21
23
 
22
- def each
23
- sheet_data.rows.each { |row| yield(row) }
24
- end
24
+ def each
25
+ sheet_data.rows.each { |row| yield(row) }
26
+ end
25
27
 
26
- def add_row(row_index = 0, params = {})
27
- new_row = RubyXL::Row.new(params)
28
- new_row.worksheet = self
29
- sheet_data.rows[row_index] = new_row
30
- end
28
+ def add_row(row_index = 0, params = {})
29
+ new_row = RubyXL::Row.new(params)
30
+ new_row.worksheet = self
31
+ sheet_data.rows[row_index] = new_row
32
+ end
33
+
34
+ def add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true)
35
+ validate_workbook
36
+ validate_nonnegative(row_index)
37
+ validate_nonnegative(column_index)
38
+ row = sheet_data.rows[row_index] || add_row(row_index)
31
39
 
32
- def add_cell(row_index = 0, column_index = 0, data = '', formula = nil, overwrite = true)
33
- validate_workbook
34
- validate_nonnegative(row_index)
35
- validate_nonnegative(column_index)
36
- row = sheet_data.rows[row_index] || add_row(row_index)
37
-
38
- c = row.cells[column_index]
39
-
40
- if overwrite || c.nil?
41
- c = RubyXL::Cell.new
42
- c.worksheet = self
43
- c.row = row_index
44
- c.column = column_index
45
-
46
- if formula then
47
- c.formula = RubyXL::Formula.new(:expression => formula)
48
- c.raw_value = data
49
- else
50
- case data
51
- when Numeric then c.raw_value = data
52
- when String then
40
+ c = row.cells[column_index]
41
+
42
+ if overwrite || c.nil?
43
+ c = RubyXL::Cell.new
44
+ c.worksheet = self
45
+ c.row = row_index
46
+ c.column = column_index
47
+
48
+ if formula then
49
+ c.formula = RubyXL::Formula.new(:expression => formula)
53
50
  c.raw_value = data
54
- c.datatype = RubyXL::DataType::RAW_STRING
55
- when RubyXL::RichText then
56
- c.is = data
57
- c.datatype = RubyXL::DataType::INLINE_STRING
58
- when NilClass then nil
51
+ else
52
+ case data
53
+ when Numeric then c.raw_value = data
54
+ when String then
55
+ if data.length > TEXT_LENGTH_LIMIT_IN_CELL
56
+ raise ArgumentError, "The maximum length of cell contents (text) is #{TEXT_LENGTH_LIMIT_IN_CELL} characters"
57
+ end
58
+ c.raw_value = data
59
+ c.datatype = RubyXL::DataType::RAW_STRING
60
+ when RubyXL::RichText then
61
+ if data.to_s.length > TEXT_LENGTH_LIMIT_IN_CELL
62
+ raise ArgumentError, "The maximum length of cell contents (text) is #{TEXT_LENGTH_LIMIT_IN_CELL} characters"
63
+ end
64
+ c.is = data
65
+ c.datatype = RubyXL::DataType::INLINE_STRING
66
+ when Time, Date, DateTime then
67
+ c.raw_value = workbook.date_to_num(data)
68
+ when NilClass then nil
69
+ end
59
70
  end
71
+
72
+ range = cols&.locate_range(column_index)
73
+ c.style_index = row.style_index || range&.style_index || 0
74
+ row.cells[column_index] = c
60
75
  end
61
76
 
62
- range = cols && cols.locate_range(column_index)
63
- c.style_index = row.style_index || (range && range.style_index) || 0
64
- row.cells[column_index] = c
77
+ c
65
78
  end
66
79
 
67
- c
68
- end
80
+ private
69
81
 
70
- private
82
+ # validates Workbook, ensures that this worksheet is in @workbook
83
+ def validate_workbook
84
+ unless @workbook.nil? || @workbook.worksheets.nil?
85
+ return if @workbook.worksheets.any? { |sheet| sheet.equal?(self) }
86
+ end
71
87
 
72
- #validates Workbook, ensures that this worksheet is in @workbook
73
- def validate_workbook()
74
- unless @workbook.nil? || @workbook.worksheets.nil?
75
- return if @workbook.worksheets.any? { |sheet| sheet.equal?(self) }
88
+ raise "This worksheet #{self} is not in workbook #{@workbook}"
76
89
  end
77
90
 
78
- raise "This worksheet #{self} is not in workbook #{@workbook}"
79
- end
80
-
81
- # Ensures that storage space for a cell with +row_index+ and +column_index+
82
- # exists in +sheet_data+ arrays, growing them up if necessary.
83
- def ensure_cell_exists(row_index, column_index = 0)
84
- validate_nonnegative(row_index)
85
- validate_nonnegative(column_index)
86
-
87
- sheet_data.rows[row_index] || add_row(row_index)
88
- end
89
-
90
- def get_col_xf(column_index)
91
- @workbook.cell_xfs[get_col_style(column_index)]
92
- end
91
+ # Ensures that storage space for a cell with +row_index+ and +column_index+
92
+ # exists in +sheet_data+ arrays, growing them up if necessary.
93
+ def ensure_cell_exists(row_index, column_index = 0)
94
+ validate_nonnegative(row_index)
95
+ validate_nonnegative(column_index)
93
96
 
94
- def get_row_xf(row)
95
- validate_nonnegative(row)
96
- @workbook.cell_xfs[get_row_style(row)]
97
- end
97
+ sheet_data.rows[row_index] || add_row(row_index)
98
+ end
98
99
 
99
- def validate_nonnegative(row_or_col)
100
- raise 'Row and Column arguments must be nonnegative' if row_or_col < 0
100
+ def validate_nonnegative(row_or_col)
101
+ raise 'Row and Column arguments must be nonnegative' if row_or_col < 0
102
+ end
103
+ private :validate_nonnegative
101
104
  end
102
- private :validate_nonnegative
103
-
104
- end #end class
105
105
  end
data/lib/rubyXL.rb CHANGED
@@ -2,11 +2,11 @@ require 'rubyXL/objects/root'
2
2
  require 'rubyXL/parser'
3
3
 
4
4
  module RubyXL
5
+ @@suppress_warnings = false
5
6
 
6
7
  # Convert any path passed to absolute path (within the XLSX file).
7
8
  def self.from_root(path)
8
9
  return path unless path.absolute?
9
10
  path.relative_path_from(OOXMLTopLevelObject::ROOT)
10
11
  end
11
-
12
12
  end