rubyXL 3.3.33 → 3.4.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +60 -0
  3. data/Gemfile +9 -8
  4. data/Gemfile.lock +124 -0
  5. data/LICENSE.txt +1 -1
  6. data/README.rdoc +46 -22
  7. data/Rakefile +29 -29
  8. data/VERSION +1 -1
  9. data/lib/rubyXL/cell.rb +2 -29
  10. data/lib/rubyXL/convenience_methods/cell.rb +276 -0
  11. data/lib/rubyXL/convenience_methods/color.rb +156 -0
  12. data/lib/rubyXL/convenience_methods/font.rb +63 -0
  13. data/lib/rubyXL/convenience_methods/workbook.rb +141 -0
  14. data/lib/rubyXL/convenience_methods/worksheet.rb +714 -0
  15. data/lib/rubyXL/convenience_methods.rb +5 -1301
  16. data/lib/rubyXL/objects/border.rb +0 -3
  17. data/lib/rubyXL/objects/calculation_chain.rb +2 -2
  18. data/lib/rubyXL/objects/cell_style.rb +1 -3
  19. data/lib/rubyXL/objects/chartsheet.rb +8 -12
  20. data/lib/rubyXL/objects/color.rb +3 -7
  21. data/lib/rubyXL/objects/column_range.rb +0 -3
  22. data/lib/rubyXL/objects/comments.rb +1 -4
  23. data/lib/rubyXL/objects/connection.rb +175 -0
  24. data/lib/rubyXL/objects/container_nodes.rb +1 -5
  25. data/lib/rubyXL/objects/content_types.rb +3 -6
  26. data/lib/rubyXL/objects/data_validation.rb +2 -2
  27. data/lib/rubyXL/objects/document_properties.rb +11 -15
  28. data/lib/rubyXL/objects/extensions.rb +0 -2
  29. data/lib/rubyXL/objects/external_links.rb +30 -8
  30. data/lib/rubyXL/objects/fill.rb +2 -5
  31. data/lib/rubyXL/objects/filters.rb +5 -7
  32. data/lib/rubyXL/objects/font.rb +2 -7
  33. data/lib/rubyXL/objects/formula.rb +3 -5
  34. data/lib/rubyXL/objects/ooxml_object.rb +26 -19
  35. data/lib/rubyXL/objects/query_table.rb +104 -0
  36. data/lib/rubyXL/objects/reference.rb +6 -8
  37. data/lib/rubyXL/objects/relationships.rb +13 -13
  38. data/lib/rubyXL/objects/root.rb +0 -2
  39. data/lib/rubyXL/objects/shared_strings.rb +3 -6
  40. data/lib/rubyXL/objects/sheet_common.rb +1 -3
  41. data/lib/rubyXL/objects/sheet_data.rb +38 -11
  42. data/lib/rubyXL/objects/simple_types.rb +16 -1
  43. data/lib/rubyXL/objects/storage.rb +51 -50
  44. data/lib/rubyXL/objects/stylesheet.rb +8 -15
  45. data/lib/rubyXL/objects/text.rb +5 -7
  46. data/lib/rubyXL/objects/theme.rb +5 -8
  47. data/lib/rubyXL/objects/workbook.rb +140 -33
  48. data/lib/rubyXL/objects/worksheet.rb +44 -31
  49. data/lib/rubyXL/parser.rb +1 -3
  50. data/lib/rubyXL/worksheet.rb +83 -91
  51. data/lib/rubyXL.rb +1 -1
  52. data/rdoc/README_rdoc.html +111 -126
  53. data/rdoc/RubyXL/AExtension.html +20 -60
  54. data/rdoc/RubyXL/AExtensionStorageArea.html +11 -17
  55. data/rdoc/RubyXL/ActiveX.html +19 -47
  56. data/rdoc/RubyXL/ActiveXBinary.html +11 -22
  57. data/rdoc/RubyXL/AdjustHandleList.html +12 -19
  58. data/rdoc/RubyXL/Alignment.html +12 -19
  59. data/rdoc/RubyXL/AlternateContent.html +11 -17
  60. data/rdoc/RubyXL/Authors.html +12 -19
  61. data/rdoc/RubyXL/AutoFilter.html +12 -19
  62. data/rdoc/RubyXL/AutoFilterColumn.html +12 -19
  63. data/rdoc/RubyXL/BinaryImageFile.html +11 -25
  64. data/rdoc/RubyXL/BodyProperties.html +12 -19
  65. data/rdoc/RubyXL/BooleanNode.html +11 -17
  66. data/rdoc/RubyXL/BooleanValue.html +11 -17
  67. data/rdoc/RubyXL/Border.html +24 -84
  68. data/rdoc/RubyXL/BorderEdge.html +19 -52
  69. data/rdoc/RubyXL/Borders.html +18 -39
  70. data/rdoc/RubyXL/Break.html +12 -19
  71. data/rdoc/RubyXL/BreakList.html +12 -19
  72. data/rdoc/RubyXL/CT_AdjPoint2D.html +12 -19
  73. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +12 -19
  74. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +12 -19
  75. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +12 -19
  76. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +12 -19
  77. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +12 -19
  78. data/rdoc/RubyXL/CT_Backdrop.html +12 -19
  79. data/rdoc/RubyXL/CT_Bevel.html +12 -19
  80. data/rdoc/RubyXL/CT_BiLevelEffect.html +12 -19
  81. data/rdoc/RubyXL/CT_BlendEffect.html +12 -19
  82. data/rdoc/RubyXL/CT_Blip.html +12 -19
  83. data/rdoc/RubyXL/CT_BlipFillProperties.html +12 -19
  84. data/rdoc/RubyXL/CT_BlurEffect.html +12 -19
  85. data/rdoc/RubyXL/CT_Camera.html +12 -19
  86. data/rdoc/RubyXL/CT_Color.html +12 -19
  87. data/rdoc/RubyXL/CT_ColorChangeEffect.html +12 -19
  88. data/rdoc/RubyXL/CT_ColorMapping.html +12 -19
  89. data/rdoc/RubyXL/CT_ColorScheme.html +12 -19
  90. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +12 -19
  91. data/rdoc/RubyXL/CT_ConnectionSite.html +12 -19
  92. data/rdoc/RubyXL/CT_ConnectionSiteList.html +12 -19
  93. data/rdoc/RubyXL/CT_DashStop.html +12 -19
  94. data/rdoc/RubyXL/CT_DashStopList.html +12 -19
  95. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +12 -19
  96. data/rdoc/RubyXL/CT_DuotoneEffect.html +12 -19
  97. data/rdoc/RubyXL/CT_EffectContainer.html +12 -19
  98. data/rdoc/RubyXL/CT_EffectList.html +12 -19
  99. data/rdoc/RubyXL/CT_EffectReference.html +12 -19
  100. data/rdoc/RubyXL/CT_EffectStyleItem.html +12 -19
  101. data/rdoc/RubyXL/CT_EffectStyleList.html +12 -19
  102. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +12 -19
  103. data/rdoc/RubyXL/CT_FillEffect.html +12 -19
  104. data/rdoc/RubyXL/CT_FillOverlayEffect.html +12 -19
  105. data/rdoc/RubyXL/CT_FillStyleList.html +12 -19
  106. data/rdoc/RubyXL/CT_FlatText.html +12 -19
  107. data/rdoc/RubyXL/CT_FontCollection.html +12 -19
  108. data/rdoc/RubyXL/CT_FontReference.html +12 -19
  109. data/rdoc/RubyXL/CT_GeomGuideList.html +12 -19
  110. data/rdoc/RubyXL/CT_GlowEffect.html +12 -19
  111. data/rdoc/RubyXL/CT_GradientFillProperties.html +12 -19
  112. data/rdoc/RubyXL/CT_GradientStop.html +12 -19
  113. data/rdoc/RubyXL/CT_GradientStopList.html +12 -19
  114. data/rdoc/RubyXL/CT_HSLEffect.html +12 -19
  115. data/rdoc/RubyXL/CT_HslColor.html +12 -19
  116. data/rdoc/RubyXL/CT_Hyperlink.html +12 -19
  117. data/rdoc/RubyXL/CT_InnerShadowEffect.html +12 -19
  118. data/rdoc/RubyXL/CT_LightRig.html +12 -19
  119. data/rdoc/RubyXL/CT_LineEndProperties.html +12 -19
  120. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +12 -19
  121. data/rdoc/RubyXL/CT_LineProperties.html +12 -19
  122. data/rdoc/RubyXL/CT_LineStyleList.html +12 -19
  123. data/rdoc/RubyXL/CT_LinearShadeProperties.html +12 -19
  124. data/rdoc/RubyXL/CT_LuminanceEffect.html +12 -19
  125. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +12 -19
  126. data/rdoc/RubyXL/CT_OuterShadowEffect.html +12 -19
  127. data/rdoc/RubyXL/CT_Path2D.html +12 -19
  128. data/rdoc/RubyXL/CT_Path2DArcTo.html +12 -19
  129. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +12 -19
  130. data/rdoc/RubyXL/CT_Path2DList.html +12 -19
  131. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +12 -19
  132. data/rdoc/RubyXL/CT_Path2DTo.html +12 -19
  133. data/rdoc/RubyXL/CT_PathShadeProperties.html +12 -19
  134. data/rdoc/RubyXL/CT_PatternFillProperties.html +12 -19
  135. data/rdoc/RubyXL/CT_Point3D.html +12 -19
  136. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +12 -19
  137. data/rdoc/RubyXL/CT_PresetColor.html +12 -19
  138. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +12 -19
  139. data/rdoc/RubyXL/CT_PresetShadowEffect.html +12 -19
  140. data/rdoc/RubyXL/CT_PresetTextShape.html +12 -19
  141. data/rdoc/RubyXL/CT_ReflectionEffect.html +12 -19
  142. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +12 -19
  143. data/rdoc/RubyXL/CT_RelativeRect.html +12 -19
  144. data/rdoc/RubyXL/CT_SRgbColor.html +12 -19
  145. data/rdoc/RubyXL/CT_ScRgbColor.html +12 -19
  146. data/rdoc/RubyXL/CT_Scene3D.html +12 -19
  147. data/rdoc/RubyXL/CT_SchemeColor.html +12 -19
  148. data/rdoc/RubyXL/CT_Shape3D.html +12 -19
  149. data/rdoc/RubyXL/CT_ShapeStyle.html +12 -19
  150. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +12 -19
  151. data/rdoc/RubyXL/CT_SphereCoords.html +12 -19
  152. data/rdoc/RubyXL/CT_StretchInfoProperties.html +12 -19
  153. data/rdoc/RubyXL/CT_StyleMatrix.html +12 -19
  154. data/rdoc/RubyXL/CT_StyleMatrixReference.html +12 -19
  155. data/rdoc/RubyXL/CT_SupplementalFont.html +12 -19
  156. data/rdoc/RubyXL/CT_SystemColor.html +12 -19
  157. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +12 -19
  158. data/rdoc/RubyXL/CT_TextBlipBullet.html +12 -19
  159. data/rdoc/RubyXL/CT_TextCharBullet.html +12 -19
  160. data/rdoc/RubyXL/CT_TextCharacterProperties.html +12 -19
  161. data/rdoc/RubyXL/CT_TextFont.html +12 -19
  162. data/rdoc/RubyXL/CT_TextListStyle.html +12 -19
  163. data/rdoc/RubyXL/CT_TextNormalAutofit.html +12 -19
  164. data/rdoc/RubyXL/CT_TextParagraphProperties.html +12 -19
  165. data/rdoc/RubyXL/CT_TextSpacing.html +12 -19
  166. data/rdoc/RubyXL/CT_TextTabStop.html +12 -19
  167. data/rdoc/RubyXL/CT_TextTabStopList.html +12 -19
  168. data/rdoc/RubyXL/CT_TileInfoProperties.html +12 -19
  169. data/rdoc/RubyXL/CT_TintEffect.html +12 -19
  170. data/rdoc/RubyXL/CT_Transform2D.html +12 -19
  171. data/rdoc/RubyXL/CT_TransformEffect.html +12 -19
  172. data/rdoc/RubyXL/CT_Vector3D.html +12 -19
  173. data/rdoc/RubyXL/CT_XYAdjustHandle.html +12 -19
  174. data/rdoc/RubyXL/CalculationChain.html +16 -45
  175. data/rdoc/RubyXL/CalculationChainCell.html +12 -19
  176. data/rdoc/RubyXL/CalculationProperties.html +12 -19
  177. data/rdoc/RubyXL/Cell.html +133 -209
  178. data/rdoc/RubyXL/CellConvenienceMethods.html +168 -522
  179. data/rdoc/RubyXL/CellExt.html +12 -19
  180. data/rdoc/RubyXL/CellSmartTag.html +12 -19
  181. data/rdoc/RubyXL/CellSmartTagProperty.html +12 -19
  182. data/rdoc/RubyXL/CellSmartTags.html +12 -19
  183. data/rdoc/RubyXL/CellStyle.html +12 -19
  184. data/rdoc/RubyXL/CellStyleXFs.html +18 -39
  185. data/rdoc/RubyXL/CellStyles.html +18 -39
  186. data/rdoc/RubyXL/CellValue.html +17 -38
  187. data/rdoc/RubyXL/CellWatch.html +12 -19
  188. data/rdoc/RubyXL/CellWatches.html +12 -19
  189. data/rdoc/RubyXL/CellXFs.html +19 -42
  190. data/rdoc/RubyXL/ChartColorsFile.html +11 -25
  191. data/rdoc/RubyXL/ChartFile.html +18 -49
  192. data/rdoc/RubyXL/ChartStyleFile.html +11 -25
  193. data/rdoc/RubyXL/ChartUserShapesFile.html +11 -25
  194. data/rdoc/RubyXL/Chartsheet.html +19 -68
  195. data/rdoc/RubyXL/ChartsheetPageSetup.html +12 -19
  196. data/rdoc/RubyXL/ChartsheetProperties.html +12 -19
  197. data/rdoc/RubyXL/ChartsheetProtection.html +12 -19
  198. data/rdoc/RubyXL/ChartsheetView.html +12 -19
  199. data/rdoc/RubyXL/ChartsheetViews.html +12 -19
  200. data/rdoc/RubyXL/Color.html +18 -55
  201. data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +18 -65
  202. data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +28 -88
  203. data/rdoc/RubyXL/ColorConvenienceClasses.html +9 -14
  204. data/rdoc/RubyXL/ColorConvenienceMethods.html +14 -33
  205. data/rdoc/RubyXL/ColorFilter.html +12 -19
  206. data/rdoc/RubyXL/ColorScale.html +12 -19
  207. data/rdoc/RubyXL/ColorSet.html +12 -19
  208. data/rdoc/RubyXL/Colors.html +12 -19
  209. data/rdoc/RubyXL/ColumnRange.html +22 -74
  210. data/rdoc/RubyXL/ColumnRanges.html +23 -83
  211. data/rdoc/RubyXL/Comment.html +12 -19
  212. data/rdoc/RubyXL/CommentList.html +12 -19
  213. data/rdoc/RubyXL/CommentsFile.html +17 -51
  214. data/rdoc/RubyXL/ConditionalFormatValue.html +12 -19
  215. data/rdoc/RubyXL/ConditionalFormatting.html +12 -19
  216. data/rdoc/RubyXL/ConditionalFormattingRule.html +12 -19
  217. data/rdoc/RubyXL/Connection.html +99 -0
  218. data/rdoc/RubyXL/ConnectionTable.html +99 -0
  219. data/rdoc/RubyXL/ConnectionTables.html +99 -0
  220. data/rdoc/RubyXL/ConnectionTextField.html +99 -0
  221. data/rdoc/RubyXL/ConnectionTextFields.html +99 -0
  222. data/rdoc/RubyXL/Connections.html +147 -0
  223. data/rdoc/RubyXL/ContentTypeDefault.html +11 -17
  224. data/rdoc/RubyXL/ContentTypeOverride.html +11 -17
  225. data/rdoc/RubyXL/ContentTypes.html +22 -63
  226. data/rdoc/RubyXL/ControlPropertiesFile.html +13 -22
  227. data/rdoc/RubyXL/CorePropertiesFile.html +34 -171
  228. data/rdoc/RubyXL/CustomColor.html +12 -19
  229. data/rdoc/RubyXL/CustomColorList.html +12 -19
  230. data/rdoc/RubyXL/CustomFilter.html +12 -19
  231. data/rdoc/RubyXL/CustomFilters.html +12 -19
  232. data/rdoc/RubyXL/CustomGeometry.html +12 -19
  233. data/rdoc/RubyXL/CustomProperties.html +12 -19
  234. data/rdoc/RubyXL/CustomPropertiesFile.html +11 -25
  235. data/rdoc/RubyXL/CustomProperty.html +12 -19
  236. data/rdoc/RubyXL/CustomPropertyFile.html +11 -25
  237. data/rdoc/RubyXL/CustomSheetView.html +12 -19
  238. data/rdoc/RubyXL/CustomSheetViews.html +12 -19
  239. data/rdoc/RubyXL/CustomWorkbookView.html +12 -19
  240. data/rdoc/RubyXL/CustomWorkbookViews.html +12 -19
  241. data/rdoc/RubyXL/CustomXMLFile.html +11 -22
  242. data/rdoc/RubyXL/DXF.html +12 -19
  243. data/rdoc/RubyXL/DXFs.html +12 -19
  244. data/rdoc/RubyXL/DataBar.html +12 -19
  245. data/rdoc/RubyXL/DataConsolidate.html +12 -19
  246. data/rdoc/RubyXL/DataConsolidationReference.html +12 -19
  247. data/rdoc/RubyXL/DataConsolidationReferences.html +12 -19
  248. data/rdoc/RubyXL/DataType.html +10 -39
  249. data/rdoc/RubyXL/DataValidation.html +12 -19
  250. data/rdoc/RubyXL/DataValidations.html +12 -19
  251. data/rdoc/RubyXL/DateGroupItem.html +12 -19
  252. data/rdoc/RubyXL/DefinedName.html +12 -19
  253. data/rdoc/RubyXL/DefinedNameExt.html +12 -19
  254. data/rdoc/RubyXL/DefinedNames.html +12 -19
  255. data/rdoc/RubyXL/DefinedNamesExt.html +12 -19
  256. data/rdoc/RubyXL/DocumentPropertiesFile.html +21 -68
  257. data/rdoc/RubyXL/DrawingFile.html +18 -49
  258. data/rdoc/RubyXL/DynamicFilter.html +12 -19
  259. data/rdoc/RubyXL/EmbeddedControl.html +12 -19
  260. data/rdoc/RubyXL/EmbeddedControls.html +12 -19
  261. data/rdoc/RubyXL/Extension.html +12 -19
  262. data/rdoc/RubyXL/ExtensionStorageArea.html +12 -19
  263. data/rdoc/RubyXL/Extents.html +12 -19
  264. data/rdoc/RubyXL/ExternalBook.html +12 -19
  265. data/rdoc/RubyXL/ExternalLinksFile.html +18 -49
  266. data/rdoc/RubyXL/ExternalReference.html +12 -19
  267. data/rdoc/RubyXL/ExternalReferences.html +12 -19
  268. data/rdoc/RubyXL/ExtraColorSchemeList.html +12 -19
  269. data/rdoc/RubyXL/FieldItem.html +12 -19
  270. data/rdoc/RubyXL/FileRecoveryProperties.html +12 -19
  271. data/rdoc/RubyXL/FileSharing.html +12 -19
  272. data/rdoc/RubyXL/FileVersion.html +12 -19
  273. data/rdoc/RubyXL/Fill.html +18 -39
  274. data/rdoc/RubyXL/Fills.html +18 -39
  275. data/rdoc/RubyXL/FilterContainer.html +12 -19
  276. data/rdoc/RubyXL/FloatNode.html +11 -17
  277. data/rdoc/RubyXL/FloatValue.html +11 -17
  278. data/rdoc/RubyXL/Font.html +21 -59
  279. data/rdoc/RubyXL/FontConvenienceMethods.html +48 -237
  280. data/rdoc/RubyXL/FontScheme.html +12 -19
  281. data/rdoc/RubyXL/Fonts.html +18 -39
  282. data/rdoc/RubyXL/Formula.html +12 -19
  283. data/rdoc/RubyXL/FunctionGroup.html +12 -19
  284. data/rdoc/RubyXL/FunctionGroups.html +12 -19
  285. data/rdoc/RubyXL/GenericStorageObject.html +21 -84
  286. data/rdoc/RubyXL/GradientFill.html +12 -19
  287. data/rdoc/RubyXL/HeaderFooterSettings.html +12 -19
  288. data/rdoc/RubyXL/Hyperlink.html +12 -19
  289. data/rdoc/RubyXL/HyperlinkRelFile.html +11 -22
  290. data/rdoc/RubyXL/Hyperlinks.html +12 -19
  291. data/rdoc/RubyXL/IconFilter.html +12 -19
  292. data/rdoc/RubyXL/IconSet.html +12 -19
  293. data/rdoc/RubyXL/IgnoredError.html +12 -19
  294. data/rdoc/RubyXL/IgnoredErrors.html +12 -19
  295. data/rdoc/RubyXL/IndexedColors.html +12 -19
  296. data/rdoc/RubyXL/InputCells.html +12 -19
  297. data/rdoc/RubyXL/IntegerNode.html +11 -17
  298. data/rdoc/RubyXL/IntegerValue.html +11 -17
  299. data/rdoc/RubyXL/LegacyCell.html +13 -66
  300. data/rdoc/RubyXL/LegacyWorksheet.html +25 -99
  301. data/rdoc/RubyXL/MRUColors.html +12 -19
  302. data/rdoc/RubyXL/MacrosFile.html +11 -25
  303. data/rdoc/RubyXL/MergedCell.html +12 -19
  304. data/rdoc/RubyXL/MergedCells.html +12 -19
  305. data/rdoc/RubyXL/NumFmt.html +12 -19
  306. data/rdoc/RubyXL/NumberFormat.html +18 -39
  307. data/rdoc/RubyXL/NumberFormats.html +18 -45
  308. data/rdoc/RubyXL/OLEObject.html +12 -19
  309. data/rdoc/RubyXL/OLEObjectFile.html +11 -25
  310. data/rdoc/RubyXL/OLEObjects.html +12 -19
  311. data/rdoc/RubyXL/OLESize.html +12 -19
  312. data/rdoc/RubyXL/OOXMLContainerObject.html +35 -132
  313. data/rdoc/RubyXL/OOXMLIgnored.html +19 -53
  314. data/rdoc/RubyXL/OOXMLObject.html +14 -25
  315. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +91 -183
  316. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +48 -185
  317. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +47 -200
  318. data/rdoc/RubyXL/OOXMLTopLevelObject.html +36 -133
  319. data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
  320. data/rdoc/RubyXL/Offset.html +12 -19
  321. data/rdoc/RubyXL/OlapProperties.html +99 -0
  322. data/rdoc/RubyXL/OleItem.html +99 -0
  323. data/rdoc/RubyXL/OleItems.html +99 -0
  324. data/rdoc/RubyXL/OleLink.html +99 -0
  325. data/rdoc/RubyXL/OutlineProperties.html +12 -19
  326. data/rdoc/RubyXL/PageMargins.html +12 -19
  327. data/rdoc/RubyXL/PageSetup.html +12 -19
  328. data/rdoc/RubyXL/PageSetupProperties.html +12 -19
  329. data/rdoc/RubyXL/Pane.html +12 -19
  330. data/rdoc/RubyXL/Parser.html +22 -56
  331. data/rdoc/RubyXL/PatternFill.html +12 -19
  332. data/rdoc/RubyXL/PhoneticProperties.html +12 -19
  333. data/rdoc/RubyXL/PhoneticRun.html +12 -19
  334. data/rdoc/RubyXL/PivotArea.html +12 -19
  335. data/rdoc/RubyXL/PivotCache.html +12 -19
  336. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +13 -30
  337. data/rdoc/RubyXL/PivotCacheRecordsFile.html +11 -25
  338. data/rdoc/RubyXL/PivotCaches.html +12 -19
  339. data/rdoc/RubyXL/PivotReference.html +12 -19
  340. data/rdoc/RubyXL/PivotReferences.html +12 -19
  341. data/rdoc/RubyXL/PivotTableFile.html +13 -30
  342. data/rdoc/RubyXL/PivotTableSelection.html +12 -19
  343. data/rdoc/RubyXL/PresetGeometry.html +12 -19
  344. data/rdoc/RubyXL/PrintOptions.html +12 -19
  345. data/rdoc/RubyXL/PrinterSettingsFile.html +11 -25
  346. data/rdoc/RubyXL/ProtectedRange.html +12 -19
  347. data/rdoc/RubyXL/ProtectedRanges.html +12 -19
  348. data/rdoc/RubyXL/Protection.html +12 -19
  349. data/rdoc/RubyXL/QueryParameter.html +99 -0
  350. data/rdoc/RubyXL/QueryParameters.html +99 -0
  351. data/rdoc/RubyXL/QueryTable.html +155 -0
  352. data/rdoc/RubyXL/QueryTableDeletedField.html +99 -0
  353. data/rdoc/RubyXL/QueryTableDeletedFields.html +99 -0
  354. data/rdoc/RubyXL/QueryTableField.html +99 -0
  355. data/rdoc/RubyXL/QueryTableFields.html +99 -0
  356. data/rdoc/RubyXL/QueryTableRefresh.html +99 -0
  357. data/rdoc/RubyXL/RID.html +11 -17
  358. data/rdoc/RubyXL/RawOOXML.html +20 -60
  359. data/rdoc/RubyXL/Reference.html +62 -228
  360. data/rdoc/RubyXL/Relationship.html +11 -17
  361. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +13 -32
  362. data/rdoc/RubyXL/RelationshipSupport.html +25 -120
  363. data/rdoc/RubyXL/RevisionPointer.html +12 -22
  364. data/rdoc/RubyXL/RichText.html +19 -39
  365. data/rdoc/RubyXL/RichTextRun.html +17 -38
  366. data/rdoc/RubyXL/Row.html +33 -168
  367. data/rdoc/RubyXL/RowExt.html +12 -19
  368. data/rdoc/RubyXL/RunProperties.html +12 -19
  369. data/rdoc/RubyXL/Scenario.html +12 -19
  370. data/rdoc/RubyXL/Scenarios.html +12 -19
  371. data/rdoc/RubyXL/Selection.html +16 -37
  372. data/rdoc/RubyXL/ShapeGuide.html +12 -19
  373. data/rdoc/RubyXL/ShapeTextRectangle.html +12 -19
  374. data/rdoc/RubyXL/SharedStringsTable.html +37 -147
  375. data/rdoc/RubyXL/Sheet.html +12 -19
  376. data/rdoc/RubyXL/SheetCalculationProperties.html +12 -19
  377. data/rdoc/RubyXL/SheetData.html +19 -53
  378. data/rdoc/RubyXL/SheetDataExt.html +12 -19
  379. data/rdoc/RubyXL/SheetDataSet.html +12 -19
  380. data/rdoc/RubyXL/SheetMetadata.html +108 -0
  381. data/rdoc/RubyXL/SheetName.html +12 -19
  382. data/rdoc/RubyXL/SheetNames.html +12 -19
  383. data/rdoc/RubyXL/Sheets.html +12 -19
  384. data/rdoc/RubyXL/SlicerCacheFile.html +11 -25
  385. data/rdoc/RubyXL/SlicerFile.html +11 -25
  386. data/rdoc/RubyXL/SmartTagProperties.html +12 -19
  387. data/rdoc/RubyXL/SmartTagType.html +12 -19
  388. data/rdoc/RubyXL/SmartTagTypes.html +12 -19
  389. data/rdoc/RubyXL/SmartTags.html +12 -19
  390. data/rdoc/RubyXL/SortCondition.html +12 -19
  391. data/rdoc/RubyXL/SortState.html +12 -19
  392. data/rdoc/RubyXL/Sqref.html +19 -53
  393. data/rdoc/RubyXL/Stop.html +12 -19
  394. data/rdoc/RubyXL/StringNode.html +11 -17
  395. data/rdoc/RubyXL/StringNodeW3C.html +20 -54
  396. data/rdoc/RubyXL/StringValue.html +11 -17
  397. data/rdoc/RubyXL/Stylesheet.html +34 -117
  398. data/rdoc/RubyXL/TableFile.html +11 -25
  399. data/rdoc/RubyXL/TableParts.html +11 -17
  400. data/rdoc/RubyXL/TableStyle.html +12 -19
  401. data/rdoc/RubyXL/TableStyles.html +12 -19
  402. data/rdoc/RubyXL/Text.html +22 -67
  403. data/rdoc/RubyXL/TextImportSettings.html +99 -0
  404. data/rdoc/RubyXL/Theme.html +19 -75
  405. data/rdoc/RubyXL/ThemeElements.html +12 -19
  406. data/rdoc/RubyXL/ThumbnailFile.html +11 -25
  407. data/rdoc/RubyXL/Top10.html +12 -19
  408. data/rdoc/RubyXL/VMLDrawingFile.html +14 -32
  409. data/rdoc/RubyXL/Variant.html +12 -19
  410. data/rdoc/RubyXL/Vector.html +17 -38
  411. data/rdoc/RubyXL/VectorValue.html +11 -17
  412. data/rdoc/RubyXL/VisualProperties.html +12 -19
  413. data/rdoc/RubyXL/WebPublishObject.html +12 -19
  414. data/rdoc/RubyXL/WebPublishObjects.html +12 -19
  415. data/rdoc/RubyXL/WebPublishingItem.html +12 -19
  416. data/rdoc/RubyXL/WebPublishingItems.html +12 -19
  417. data/rdoc/RubyXL/WebPublishingProperties.html +12 -19
  418. data/rdoc/RubyXL/WebQueryProperties.html +99 -0
  419. data/rdoc/RubyXL/Workbook.html +486 -227
  420. data/rdoc/RubyXL/WorkbookConvenienceMethods.html +130 -888
  421. data/rdoc/RubyXL/WorkbookProperties.html +12 -19
  422. data/rdoc/RubyXL/WorkbookProtection.html +12 -19
  423. data/rdoc/RubyXL/WorkbookRoot.html +27 -114
  424. data/rdoc/RubyXL/WorkbookView.html +12 -19
  425. data/rdoc/RubyXL/WorkbookViews.html +12 -19
  426. data/rdoc/RubyXL/Worksheet.html +92 -121
  427. data/rdoc/RubyXL/WorksheetConvenienceMethods.html +298 -1109
  428. data/rdoc/RubyXL/WorksheetDimensions.html +12 -19
  429. data/rdoc/RubyXL/WorksheetFormatProperties.html +11 -17
  430. data/rdoc/RubyXL/WorksheetProperties.html +12 -19
  431. data/rdoc/RubyXL/WorksheetProtection.html +12 -19
  432. data/rdoc/RubyXL/WorksheetView.html +12 -19
  433. data/rdoc/RubyXL/WorksheetViews.html +12 -19
  434. data/rdoc/RubyXL/XF.html +12 -19
  435. data/rdoc/RubyXL.html +39 -318
  436. data/rdoc/created.rid +45 -38
  437. data/rdoc/css/rdoc.css +55 -6
  438. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  439. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  440. data/rdoc/index.html +33 -373
  441. data/rdoc/js/darkfish.js +22 -99
  442. data/rdoc/js/navigation.js +4 -41
  443. data/rdoc/js/navigation.js.gz +0 -0
  444. data/rdoc/js/search.js +32 -31
  445. data/rdoc/js/search_index.js +1 -1
  446. data/rdoc/js/search_index.js.gz +0 -0
  447. data/rdoc/js/searcher.js +6 -6
  448. data/rdoc/js/searcher.js.gz +0 -0
  449. data/rdoc/table_of_contents.html +205 -45
  450. data/rubyXL.gemspec +53 -29
  451. data/spec/lib/cell_spec.rb +57 -6
  452. data/spec/lib/color_spec.rb +2 -1
  453. data/spec/lib/parser_spec.rb +24 -27
  454. data/spec/lib/reference_spec.rb +9 -3
  455. data/spec/lib/rgb_color_spec.rb +27 -0
  456. data/spec/lib/stylesheet_spec.rb +8 -11
  457. data/spec/lib/text_spec.rb +1 -5
  458. data/spec/lib/workbook_spec.rb +25 -4
  459. data/spec/lib/worksheet_spec.rb +873 -479
  460. data/spec/spec_helper.rb +2 -0
  461. data/test/test_parse_write.rb +15 -15
  462. metadata +54 -10
  463. data/rdoc/js/jquery.js +0 -4
@@ -1,6 +1,4 @@
1
- #require 'tmpdir'
2
1
  require 'date'
3
- require 'rubyXL/convenience_methods'
4
2
  require 'rubyXL/objects/ooxml_object'
5
3
  require 'rubyXL/objects/shared_strings'
6
4
  require 'rubyXL/objects/stylesheet'
@@ -8,13 +6,13 @@ require 'rubyXL/objects/theme'
8
6
  require 'rubyXL/objects/calculation_chain'
9
7
  require 'rubyXL/objects/worksheet'
10
8
  require 'rubyXL/objects/chartsheet'
9
+ require 'rubyXL/objects/connection'
11
10
  require 'rubyXL/objects/relationships'
12
11
  require 'rubyXL/objects/simple_types'
13
12
  require 'rubyXL/objects/extensions'
14
13
  require 'rubyXL/objects/external_links'
15
14
 
16
15
  module RubyXL
17
-
18
16
  # Eventually, the entire code for Workbook will be moved here.
19
17
 
20
18
  # http://www.datypic.com/sc/ooxml/e-ssml_fileVersion-1.html
@@ -37,7 +35,7 @@ module RubyXL
37
35
 
38
36
  # http://www.datypic.com/sc/ooxml/e-ssml_workbookPr-1.html
39
37
  class WorkbookProperties < OOXMLObject
40
- define_attribute(:date1904, :bool, :default => false)
38
+ define_attribute(:date1904, :bool, :default => false)
41
39
  define_attribute(:showObjects, RubyXL::ST_Objects, :default => 'all')
42
40
  define_attribute(:showBorderUnselectedTables, :bool, :default => true)
43
41
  define_attribute(:filterPrivacy, :bool, :default => false)
@@ -98,7 +96,7 @@ module RubyXL
98
96
  define_attribute(:name, :string, :required => true)
99
97
  define_attribute(:sheetId, :int, :required => true)
100
98
  define_attribute(:state, RubyXL::ST_Visibility, :default => 'visible')
101
- define_attribute(:'r:id', :string, :required => true)
99
+ define_relationship(:required => true)
102
100
  define_element_name 'sheet'
103
101
  end
104
102
 
@@ -110,7 +108,7 @@ module RubyXL
110
108
 
111
109
  # http://www.datypic.com/sc/ooxml/e-ssml_externalReference-1.html
112
110
  class ExternalReference < OOXMLObject
113
- define_attribute(:'r:id', :string, :required => true)
111
+ define_relationship(:required => true)
114
112
  define_element_name 'externalReference'
115
113
  end
116
114
 
@@ -152,8 +150,8 @@ module RubyXL
152
150
 
153
151
  # http://www.datypic.com/sc/ooxml/e-ssml_pivotCache-1.html
154
152
  class PivotCache < OOXMLObject
155
- define_attribute(:cacheId, :int, :required => true)
156
- define_attribute(:'r:id', :string, :required => true)
153
+ define_attribute(:cacheId, :int, :required => true)
154
+ define_relationship(:required => true)
157
155
  define_element_name 'pivotCache'
158
156
  end
159
157
 
@@ -186,7 +184,7 @@ module RubyXL
186
184
  define_attribute(:vml, :bool, :default => false)
187
185
  define_attribute(:allowPng, :bool, :default => false)
188
186
  define_attribute(:targetScreenSize, RubyXL::ST_TargetScreenSize, :default => '800x600')
189
- define_attribute(:dpi, :int, :default => 96)
187
+ define_attribute(:dpi, :int, :default => 96)
190
188
  define_attribute(:codePage, :int)
191
189
  define_element_name 'webPublishing'
192
190
  end
@@ -195,7 +193,7 @@ module RubyXL
195
193
  class CalculationProperties < OOXMLObject
196
194
  define_attribute(:calcId, :int)
197
195
  define_attribute(:calcMode, RubyXL::ST_CalcMode, :default => 'auto')
198
- define_attribute(:fullCalcOnLoad, :bool, :default => false)
196
+ define_attribute(:fullCalcOnLoad, :bool, :default => false)
199
197
  define_attribute(:refMode, RubyXL::ST_RefMode, :default => 'A1')
200
198
  define_attribute(:iterate, :bool, :default => false)
201
199
  define_attribute(:iterateCount, :int, :default => 100)
@@ -216,7 +214,7 @@ module RubyXL
216
214
  define_attribute(:sourceObject, :string)
217
215
  define_attribute(:destinationFile, :string, :required => true)
218
216
  define_attribute(:title, :string)
219
- define_attribute(:autoRepublish, :bool, :default => false)
217
+ define_attribute(:autoRepublish, :bool, :default => false)
220
218
  define_element_name 'webPublishObject'
221
219
  end
222
220
 
@@ -228,7 +226,7 @@ module RubyXL
228
226
 
229
227
  # http://www.datypic.com/sc/ooxml/e-ssml_smartTagPr-1.html
230
228
  class SmartTagProperties < OOXMLObject
231
- define_attribute(:embed, :bool, :default => false)
229
+ define_attribute(:embed, :bool, :default => false)
232
230
  define_attribute(:show, RubyXL::ST_SmartTagShow, :default => 'all')
233
231
  define_element_name 'smartTagPr'
234
232
  end
@@ -280,7 +278,7 @@ module RubyXL
280
278
  define_attribute(:yWindow, :int, :default => 0)
281
279
  define_attribute(:windowWidth, :int)
282
280
  define_attribute(:windowHeight, :int)
283
- define_attribute(:tabRatio, :int, :default => 600)
281
+ define_attribute(:tabRatio, :int, :default => 600)
284
282
  define_attribute(:activeSheetId, :int)
285
283
  define_attribute(:showFormulaBar, :bool, :default => true)
286
284
  define_attribute(:showStatusbar, :bool, :default => true)
@@ -298,18 +296,25 @@ module RubyXL
298
296
 
299
297
  # http://www.datypic.com/sc/ooxml/e-ssml_workbook.html
300
298
  class Workbook < OOXMLTopLevelObject
301
- CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'
302
- CONTENT_TYPE_WITH_MACROS = 'application/vnd.ms-excel.sheet.macroEnabled.main+xml'
303
- REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'
299
+ CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'.freeze
300
+ CONTENT_TYPE_TEMPLATE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml'.freeze
301
+ CONTENT_TYPE_TEMPLATE_WITH_MACROS = 'application/vnd.ms-excel.template.macroEnabled.main+xml'.freeze
302
+ CONTENT_TYPE_WITH_MACROS = 'application/vnd.ms-excel.sheet.macroEnabled.main+xml'.freeze
303
+ REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'.freeze
304
304
 
305
305
  # http://www.accountingweb.com/technology/excel/seven-characters-you-cant-use-in-worksheet-names
306
- SHEET_NAME_FORBIDDEN_CHARS = /[\/\\\*\[\]\:\?]/
307
- #SHEET_NAME_FORBIDDEN_NAMES = [ 'History' ]
306
+ SHEET_NAME_FORBIDDEN_CHARS = /[\/\\*\[\]:?]/
307
+
308
+ # https://answers.microsoft.com/en-us/msoffice/forum/all/excel-history-is-a-reserved-name-help/f8a398a4-b72c-48e3-82da-4f132c305e91
309
+ SHEET_NAME_FORBIDDEN_NAMES = [ 'History' ]
308
310
 
309
311
  include RubyXL::RelationshipSupport
310
312
 
311
313
  def content_type
312
- if macros then CONTENT_TYPE_WITH_MACROS else CONTENT_TYPE end
314
+ content_type_name = 'CONTENT_TYPE'
315
+ content_type_name << '_TEMPLATE' if is_template
316
+ content_type_name << '_WITH_MACROS' if macros
317
+ self.class.const_get(content_type_name)
313
318
  end
314
319
 
315
320
  def related_objects
@@ -322,11 +327,12 @@ module RubyXL
322
327
  define_relationship(RubyXL::CalculationChain, :calculation_chain)
323
328
  define_relationship(RubyXL::Worksheet, false)
324
329
  define_relationship(RubyXL::Chartsheet, false)
330
+ define_relationship(RubyXL::Connections)
325
331
  define_relationship(RubyXL::ExternalLinksFile)
326
332
  define_relationship(RubyXL::PivotCacheDefinitionFile)
327
333
  define_relationship(RubyXL::PivotCacheRecordsFile)
328
334
  define_relationship(RubyXL::CustomXMLFile)
329
- define_relationship(RubyXL::MacrosFile, :macros)
335
+ define_relationship(RubyXL::MacrosFile, :macros)
330
336
  define_relationship(RubyXL::SlicerCacheFile)
331
337
 
332
338
  define_child_node(RubyXL::FileVersion)
@@ -352,12 +358,12 @@ module RubyXL
352
358
  define_child_node(RubyXL::ExtensionStorageArea)
353
359
 
354
360
  define_element_name 'workbook'
355
- set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
361
+ set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
356
362
  'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r',
357
- 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
358
- 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main' => 'x15')
363
+ 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
364
+ 'http://schemas.microsoft.com/office/spreadsheetml/2010/11/main' => 'x15')
359
365
 
360
- attr_accessor :worksheets
366
+ attr_accessor :worksheets, :is_template
361
367
 
362
368
  def before_write_xml
363
369
  max_sheet_id = worksheets.collect(&:sheet_id).compact.max || 0
@@ -368,6 +374,7 @@ module RubyXL
368
374
  rel = relationship_container.find_by_target(sheet.xlsx_path)
369
375
 
370
376
  raise "Worksheet name '#{sheet.sheet_name}' contains forbidden characters" if sheet.sheet_name =~ SHEET_NAME_FORBIDDEN_CHARS
377
+ raise "Worksheet name '#{sheet.sheet_name}' is forbidden" if SHEET_NAME_FORBIDDEN_NAMES.include?(sheet.sheet_name)
371
378
 
372
379
  sheets << RubyXL::Sheet.new(:name => sheet.sheet_name[0..30], # Max sheet name length is 31 char
373
380
  :sheet_id => sheet.sheet_id || (max_sheet_id += 1),
@@ -392,11 +399,11 @@ module RubyXL
392
399
  dst_file_path ||= root.source_file_path
393
400
 
394
401
  extension = File.extname(dst_file_path)
395
- unless %w{.xlsx .xlsm}.include?(extension.downcase)
396
- raise "Unsupported extension: #{extension} (only .xlsx and .xlsm files are supported)."
402
+ unless %w{.xlsx .xlsm .xltx .xltm}.include?(extension.downcase)
403
+ raise "Unsupported extension: #{extension} (only .xlsx, .xlsm, .xltx and .xltm files are supported)."
397
404
  end
398
405
 
399
- File.open(dst_file_path, "wb") { |output_file| FileUtils.copy_stream(root.stream, output_file) }
406
+ File.open(dst_file_path, 'wb') { |output_file| FileUtils.copy_stream(root.stream, output_file) }
400
407
 
401
408
  return dst_file_path
402
409
  end
@@ -413,16 +420,22 @@ module RubyXL
413
420
  private :base_date
414
421
 
415
422
  def date_to_num(date)
416
- date && (date.ajd - base_date().ajd).to_f
423
+ case date
424
+ when Date, DateTime then (date.ajd - base_date.ajd).to_f
425
+ when Time then ((date.to_r - base_date.to_time.to_r) / 86400).to_f
426
+ end
417
427
  end
418
428
 
419
429
  def num_to_date(num)
430
+ return nil if num.nil?
431
+
420
432
  # Bug-for-bug Excel compatibility (https://support.microsoft.com/kb/214058/)
421
- if num && num < MARCH_1_1900 then
433
+ if num < MARCH_1_1900 then
422
434
  num += 1 unless workbook_properties && workbook_properties.date1904
423
435
  end
424
436
 
425
- num && (base_date + num)
437
+ dateparts = num.divmod(1)
438
+ base_date + (dateparts[0] + (dateparts[1] * 86400).round(6) / 86400)
426
439
  end
427
440
 
428
441
  include Enumerable
@@ -431,7 +444,8 @@ module RubyXL
431
444
  APPVERSION = '12.0000'
432
445
 
433
446
  def initialize(worksheets = [], src_file_path = nil, creator = nil, modifier = nil, created_at = nil,
434
- company = '', application = APPLICATION, appversion = APPVERSION, date1904 = 0)
447
+ company = '', application = APPLICATION, appversion = APPVERSION, date1904 = 0,
448
+ is_template = false)
435
449
  super()
436
450
 
437
451
  # Order of sheets in the +worksheets+ array corresponds to the order of pages in Excel UI.
@@ -456,9 +470,102 @@ module RubyXL
456
470
  self.creator = creator
457
471
  self.modifier = modifier
458
472
  self.date1904 = date1904 > 0
473
+ self.is_template = is_template
459
474
  end
460
475
 
461
- include WorkbookConvenienceMethods
462
- end
476
+ SHEET_NAME_TEMPLATE = 'Sheet%d'
477
+
478
+ # Finds worksheet by its name or numerical index
479
+ def [](ind)
480
+ case ind
481
+ when Integer then worksheets[ind]
482
+ when String then worksheets.find { |ws| ws.sheet_name == ind }
483
+ end
484
+ end
485
+
486
+ # Create new simple worksheet and add it to the workbook worksheets
487
+ #
488
+ # @param [String] The name for the new worksheet
489
+ def add_worksheet(name = nil)
490
+ if name.nil? then
491
+ n = 0
492
+
493
+ begin
494
+ name = SHEET_NAME_TEMPLATE % (n += 1)
495
+ end until self[name].nil?
496
+ end
497
+
498
+ new_worksheet = Worksheet.new(:workbook => self, :sheet_name => name)
499
+ worksheets << new_worksheet
500
+ new_worksheet
501
+ end
502
+
503
+ def created_at
504
+ root.core_properties.created_at
505
+ end
506
+
507
+ def created_at=(v)
508
+ root.core_properties.created_at = v
509
+ end
510
+
511
+ def modified_at
512
+ root.core_properties.modified_at
513
+ end
514
+
515
+ def modified_at=(v)
516
+ root.core_properties.modified_at = v
517
+ end
518
+
519
+ def company
520
+ root.document_properties.company && root.document_properties.company.value
521
+ end
463
522
 
523
+ def company=(v)
524
+ root.document_properties.company ||= StringNode.new
525
+ root.document_properties.company.value = v
526
+ end
527
+
528
+ def application
529
+ root.document_properties.application && root.document_properties.application.value
530
+ end
531
+
532
+ def application=(v)
533
+ root.document_properties.application ||= StringNode.new
534
+ root.document_properties.application.value = v
535
+ end
536
+
537
+ def appversion
538
+ root.document_properties.app_version && root.document_properties.app_version.value
539
+ end
540
+
541
+ def appversion=(v)
542
+ root.document_properties.app_version ||= StringNode.new
543
+ root.document_properties.app_version.value = v
544
+ end
545
+
546
+ def creator
547
+ root.core_properties.creator
548
+ end
549
+
550
+ def creator=(v)
551
+ root.core_properties.creator = v
552
+ end
553
+
554
+ def modifier
555
+ root.core_properties.modifier
556
+ end
557
+
558
+ def modifier=(v)
559
+ root.core_properties.modifier = v
560
+ end
561
+
562
+ def date1904
563
+ workbook_properties && workbook_properties.date1904
564
+ end
565
+
566
+ def date1904=(v)
567
+ self.workbook_properties ||= RubyXL::WorkbookProperties.new
568
+ workbook_properties.date1904 = v
569
+ end
570
+ end
464
571
  end
@@ -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
@@ -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
 
@@ -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
 
@@ -634,6 +634,7 @@ module RubyXL
634
634
  define_relationship(RubyXL::SlicerFile)
635
635
  define_relationship(RubyXL::OLEObjectFile)
636
636
  define_relationship(RubyXL::ActiveX)
637
+ define_relationship(RubyXL::QueryTable)
637
638
 
638
639
  define_child_node(RubyXL::WorksheetProperties)
639
640
  define_child_node(RubyXL::WorksheetDimensions)
@@ -649,7 +650,7 @@ module RubyXL
649
650
  define_child_node(RubyXL::SortState)
650
651
  define_child_node(RubyXL::DataConsolidate)
651
652
  define_child_node(RubyXL::CustomSheetViews)
652
- define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
653
+ define_child_node(RubyXL::MergedCells, :accessor => :merged_cells)
653
654
  define_child_node(RubyXL::PhoneticProperties)
654
655
  define_child_node(RubyXL::ConditionalFormatting, :collection => [0..-1])
655
656
  define_child_node(RubyXL::DataValidations)
@@ -675,11 +676,11 @@ module RubyXL
675
676
  define_child_node(RubyXL::ExtensionStorageArea)
676
677
  define_child_node(RubyXL::AlternateContent)
677
678
  define_element_name 'worksheet'
678
- set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
679
+ set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
679
680
  'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r',
680
- 'http://schemas.openxmlformats.org/markup-compatibility/2006' => 'mc',
681
- 'http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac' => 'x14ac',
682
- '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')
683
684
 
684
685
  attr_accessor :workbook, :state, :sheet_name, :sheet_id, :rels
685
686
 
@@ -742,8 +743,20 @@ module RubyXL
742
743
  sheet_obj
743
744
  end
744
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
+
745
760
  include LegacyWorksheet
746
- include WorksheetConvenienceMethods
747
761
  end
748
-
749
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