rubyXL 3.3.22 → 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 (465) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +60 -0
  3. data/.codeclimate.yml +3 -0
  4. data/Gemfile +9 -8
  5. data/Gemfile.lock +124 -0
  6. data/LICENSE.txt +1 -1
  7. data/README.rdoc +54 -18
  8. data/Rakefile +29 -29
  9. data/VERSION +1 -1
  10. data/lib/rubyXL/cell.rb +3 -30
  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 +141 -0
  15. data/lib/rubyXL/convenience_methods/worksheet.rb +714 -0
  16. data/lib/rubyXL/convenience_methods.rb +5 -1045
  17. data/lib/rubyXL/objects/border.rb +2 -5
  18. data/lib/rubyXL/objects/calculation_chain.rb +4 -4
  19. data/lib/rubyXL/objects/cell_style.rb +9 -11
  20. data/lib/rubyXL/objects/chartsheet.rb +15 -19
  21. data/lib/rubyXL/objects/color.rb +7 -7
  22. data/lib/rubyXL/objects/column_range.rb +10 -13
  23. data/lib/rubyXL/objects/comments.rb +5 -8
  24. data/lib/rubyXL/objects/connection.rb +175 -0
  25. data/lib/rubyXL/objects/container_nodes.rb +3 -7
  26. data/lib/rubyXL/objects/content_types.rb +5 -8
  27. data/lib/rubyXL/objects/data_validation.rb +4 -4
  28. data/lib/rubyXL/objects/document_properties.rb +12 -16
  29. data/lib/rubyXL/objects/extensions.rb +19 -4
  30. data/lib/rubyXL/objects/external_links.rb +30 -8
  31. data/lib/rubyXL/objects/fill.rb +6 -9
  32. data/lib/rubyXL/objects/filters.rb +17 -19
  33. data/lib/rubyXL/objects/font.rb +4 -64
  34. data/lib/rubyXL/objects/formula.rb +4 -6
  35. data/lib/rubyXL/objects/ooxml_object.rb +25 -18
  36. data/lib/rubyXL/objects/query_table.rb +104 -0
  37. data/lib/rubyXL/objects/reference.rb +6 -8
  38. data/lib/rubyXL/objects/relationships.rb +13 -13
  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 +5 -7
  42. data/lib/rubyXL/objects/sheet_data.rb +50 -16
  43. data/lib/rubyXL/objects/simple_types.rb +21 -1
  44. data/lib/rubyXL/objects/storage.rb +67 -43
  45. data/lib/rubyXL/objects/stylesheet.rb +22 -29
  46. data/lib/rubyXL/objects/text.rb +12 -14
  47. data/lib/rubyXL/objects/theme.rb +142 -126
  48. data/lib/rubyXL/objects/workbook.rb +172 -64
  49. data/lib/rubyXL/objects/worksheet.rb +143 -128
  50. data/lib/rubyXL/parser.rb +1 -3
  51. data/lib/rubyXL/worksheet.rb +83 -78
  52. data/lib/rubyXL.rb +1 -1
  53. data/rdoc/README_rdoc.html +122 -114
  54. data/rdoc/RubyXL/AExtension.html +21 -60
  55. data/rdoc/RubyXL/AExtensionStorageArea.html +12 -17
  56. data/rdoc/RubyXL/ActiveX.html +154 -0
  57. data/rdoc/RubyXL/ActiveXBinary.html +106 -0
  58. data/rdoc/RubyXL/AdjustHandleList.html +13 -19
  59. data/rdoc/RubyXL/Alignment.html +13 -19
  60. data/rdoc/RubyXL/AlternateContent.html +12 -17
  61. data/rdoc/RubyXL/Authors.html +13 -19
  62. data/rdoc/RubyXL/AutoFilter.html +13 -19
  63. data/rdoc/RubyXL/AutoFilterColumn.html +13 -19
  64. data/rdoc/RubyXL/BinaryImageFile.html +12 -25
  65. data/rdoc/RubyXL/BodyProperties.html +13 -19
  66. data/rdoc/RubyXL/BooleanNode.html +12 -17
  67. data/rdoc/RubyXL/BooleanValue.html +12 -17
  68. data/rdoc/RubyXL/Border.html +25 -84
  69. data/rdoc/RubyXL/BorderEdge.html +20 -52
  70. data/rdoc/RubyXL/Borders.html +19 -39
  71. data/rdoc/RubyXL/Break.html +13 -19
  72. data/rdoc/RubyXL/BreakList.html +13 -19
  73. data/rdoc/RubyXL/CT_AdjPoint2D.html +13 -19
  74. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +13 -19
  75. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +13 -19
  76. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +13 -19
  77. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +13 -19
  78. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +13 -19
  79. data/rdoc/RubyXL/CT_Backdrop.html +13 -19
  80. data/rdoc/RubyXL/CT_Bevel.html +13 -19
  81. data/rdoc/RubyXL/CT_BiLevelEffect.html +13 -19
  82. data/rdoc/RubyXL/CT_BlendEffect.html +13 -19
  83. data/rdoc/RubyXL/CT_Blip.html +13 -19
  84. data/rdoc/RubyXL/CT_BlipFillProperties.html +13 -19
  85. data/rdoc/RubyXL/CT_BlurEffect.html +13 -19
  86. data/rdoc/RubyXL/CT_Camera.html +13 -19
  87. data/rdoc/RubyXL/CT_Color.html +13 -19
  88. data/rdoc/RubyXL/CT_ColorChangeEffect.html +13 -19
  89. data/rdoc/RubyXL/CT_ColorMapping.html +13 -19
  90. data/rdoc/RubyXL/CT_ColorScheme.html +13 -19
  91. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +13 -19
  92. data/rdoc/RubyXL/CT_ConnectionSite.html +13 -19
  93. data/rdoc/RubyXL/CT_ConnectionSiteList.html +13 -19
  94. data/rdoc/RubyXL/CT_DashStop.html +13 -19
  95. data/rdoc/RubyXL/CT_DashStopList.html +13 -19
  96. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +13 -19
  97. data/rdoc/RubyXL/CT_DuotoneEffect.html +13 -19
  98. data/rdoc/RubyXL/CT_EffectContainer.html +13 -19
  99. data/rdoc/RubyXL/CT_EffectList.html +13 -19
  100. data/rdoc/RubyXL/CT_EffectReference.html +13 -19
  101. data/rdoc/RubyXL/CT_EffectStyleItem.html +13 -19
  102. data/rdoc/RubyXL/CT_EffectStyleList.html +13 -19
  103. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +13 -19
  104. data/rdoc/RubyXL/CT_FillEffect.html +13 -19
  105. data/rdoc/RubyXL/CT_FillOverlayEffect.html +13 -19
  106. data/rdoc/RubyXL/CT_FillStyleList.html +13 -19
  107. data/rdoc/RubyXL/CT_FlatText.html +13 -19
  108. data/rdoc/RubyXL/CT_FontCollection.html +13 -19
  109. data/rdoc/RubyXL/CT_FontReference.html +13 -19
  110. data/rdoc/RubyXL/CT_GeomGuideList.html +13 -19
  111. data/rdoc/RubyXL/CT_GlowEffect.html +13 -19
  112. data/rdoc/RubyXL/CT_GradientFillProperties.html +13 -19
  113. data/rdoc/RubyXL/CT_GradientStop.html +13 -19
  114. data/rdoc/RubyXL/CT_GradientStopList.html +13 -19
  115. data/rdoc/RubyXL/CT_HSLEffect.html +13 -19
  116. data/rdoc/RubyXL/CT_HslColor.html +13 -19
  117. data/rdoc/RubyXL/CT_Hyperlink.html +13 -19
  118. data/rdoc/RubyXL/CT_InnerShadowEffect.html +13 -19
  119. data/rdoc/RubyXL/CT_LightRig.html +13 -19
  120. data/rdoc/RubyXL/CT_LineEndProperties.html +13 -19
  121. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +13 -19
  122. data/rdoc/RubyXL/CT_LineProperties.html +13 -19
  123. data/rdoc/RubyXL/CT_LineStyleList.html +13 -19
  124. data/rdoc/RubyXL/CT_LinearShadeProperties.html +13 -19
  125. data/rdoc/RubyXL/CT_LuminanceEffect.html +13 -19
  126. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +13 -19
  127. data/rdoc/RubyXL/CT_OuterShadowEffect.html +13 -19
  128. data/rdoc/RubyXL/CT_Path2D.html +13 -19
  129. data/rdoc/RubyXL/CT_Path2DArcTo.html +13 -19
  130. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +13 -19
  131. data/rdoc/RubyXL/CT_Path2DList.html +13 -19
  132. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +13 -19
  133. data/rdoc/RubyXL/CT_Path2DTo.html +13 -19
  134. data/rdoc/RubyXL/CT_PathShadeProperties.html +13 -19
  135. data/rdoc/RubyXL/CT_PatternFillProperties.html +13 -19
  136. data/rdoc/RubyXL/CT_Point3D.html +13 -19
  137. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +13 -19
  138. data/rdoc/RubyXL/CT_PresetColor.html +13 -19
  139. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +13 -19
  140. data/rdoc/RubyXL/CT_PresetShadowEffect.html +13 -19
  141. data/rdoc/RubyXL/CT_PresetTextShape.html +13 -19
  142. data/rdoc/RubyXL/CT_ReflectionEffect.html +13 -19
  143. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +13 -19
  144. data/rdoc/RubyXL/CT_RelativeRect.html +13 -19
  145. data/rdoc/RubyXL/CT_SRgbColor.html +13 -19
  146. data/rdoc/RubyXL/CT_ScRgbColor.html +13 -19
  147. data/rdoc/RubyXL/CT_Scene3D.html +13 -19
  148. data/rdoc/RubyXL/CT_SchemeColor.html +13 -19
  149. data/rdoc/RubyXL/CT_Shape3D.html +13 -19
  150. data/rdoc/RubyXL/CT_ShapeStyle.html +13 -19
  151. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +13 -19
  152. data/rdoc/RubyXL/CT_SphereCoords.html +13 -19
  153. data/rdoc/RubyXL/CT_StretchInfoProperties.html +13 -19
  154. data/rdoc/RubyXL/CT_StyleMatrix.html +13 -19
  155. data/rdoc/RubyXL/CT_StyleMatrixReference.html +13 -19
  156. data/rdoc/RubyXL/CT_SupplementalFont.html +13 -19
  157. data/rdoc/RubyXL/CT_SystemColor.html +13 -19
  158. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +13 -19
  159. data/rdoc/RubyXL/CT_TextBlipBullet.html +13 -19
  160. data/rdoc/RubyXL/CT_TextCharBullet.html +13 -19
  161. data/rdoc/RubyXL/CT_TextCharacterProperties.html +13 -19
  162. data/rdoc/RubyXL/CT_TextFont.html +13 -19
  163. data/rdoc/RubyXL/CT_TextListStyle.html +13 -19
  164. data/rdoc/RubyXL/CT_TextNormalAutofit.html +13 -19
  165. data/rdoc/RubyXL/CT_TextParagraphProperties.html +13 -19
  166. data/rdoc/RubyXL/CT_TextSpacing.html +13 -19
  167. data/rdoc/RubyXL/CT_TextTabStop.html +13 -19
  168. data/rdoc/RubyXL/CT_TextTabStopList.html +13 -19
  169. data/rdoc/RubyXL/CT_TileInfoProperties.html +13 -19
  170. data/rdoc/RubyXL/CT_TintEffect.html +13 -19
  171. data/rdoc/RubyXL/CT_Transform2D.html +13 -19
  172. data/rdoc/RubyXL/CT_TransformEffect.html +13 -19
  173. data/rdoc/RubyXL/CT_Vector3D.html +13 -19
  174. data/rdoc/RubyXL/CT_XYAdjustHandle.html +13 -19
  175. data/rdoc/RubyXL/CalculationChain.html +17 -45
  176. data/rdoc/RubyXL/CalculationChainCell.html +13 -19
  177. data/rdoc/RubyXL/CalculationProperties.html +13 -19
  178. data/rdoc/RubyXL/Cell.html +145 -205
  179. data/rdoc/RubyXL/CellConvenienceMethods.html +255 -460
  180. data/rdoc/RubyXL/CellExt.html +13 -19
  181. data/rdoc/RubyXL/CellSmartTag.html +13 -19
  182. data/rdoc/RubyXL/CellSmartTagProperty.html +13 -19
  183. data/rdoc/RubyXL/CellSmartTags.html +13 -19
  184. data/rdoc/RubyXL/CellStyle.html +13 -19
  185. data/rdoc/RubyXL/CellStyleXFs.html +19 -39
  186. data/rdoc/RubyXL/CellStyles.html +19 -39
  187. data/rdoc/RubyXL/CellValue.html +18 -38
  188. data/rdoc/RubyXL/CellWatch.html +13 -19
  189. data/rdoc/RubyXL/CellWatches.html +13 -19
  190. data/rdoc/RubyXL/CellXFs.html +20 -42
  191. data/rdoc/RubyXL/ChartColorsFile.html +12 -25
  192. data/rdoc/RubyXL/ChartFile.html +19 -49
  193. data/rdoc/RubyXL/ChartStyleFile.html +12 -25
  194. data/rdoc/RubyXL/ChartUserShapesFile.html +12 -25
  195. data/rdoc/RubyXL/Chartsheet.html +20 -68
  196. data/rdoc/RubyXL/ChartsheetPageSetup.html +13 -19
  197. data/rdoc/RubyXL/ChartsheetProperties.html +13 -19
  198. data/rdoc/RubyXL/ChartsheetProtection.html +13 -19
  199. data/rdoc/RubyXL/ChartsheetView.html +13 -19
  200. data/rdoc/RubyXL/ChartsheetViews.html +13 -19
  201. data/rdoc/RubyXL/Color.html +29 -40
  202. data/rdoc/RubyXL/ColorConvenienceClasses/HlsColor.html +242 -0
  203. data/rdoc/RubyXL/ColorConvenienceClasses/RgbColor.html +279 -0
  204. data/rdoc/RubyXL/ColorConvenienceClasses.html +91 -0
  205. data/rdoc/RubyXL/ColorConvenienceMethods.html +137 -0
  206. data/rdoc/RubyXL/ColorFilter.html +13 -19
  207. data/rdoc/RubyXL/ColorScale.html +13 -19
  208. data/rdoc/RubyXL/ColorSet.html +13 -19
  209. data/rdoc/RubyXL/Colors.html +13 -19
  210. data/rdoc/RubyXL/ColumnRange.html +23 -74
  211. data/rdoc/RubyXL/ColumnRanges.html +24 -83
  212. data/rdoc/RubyXL/Comment.html +13 -19
  213. data/rdoc/RubyXL/CommentList.html +13 -19
  214. data/rdoc/RubyXL/CommentsFile.html +18 -51
  215. data/rdoc/RubyXL/ConditionalFormatValue.html +13 -19
  216. data/rdoc/RubyXL/ConditionalFormatting.html +13 -19
  217. data/rdoc/RubyXL/ConditionalFormattingRule.html +13 -19
  218. data/rdoc/RubyXL/Connection.html +99 -0
  219. data/rdoc/RubyXL/ConnectionTable.html +99 -0
  220. data/rdoc/RubyXL/ConnectionTables.html +99 -0
  221. data/rdoc/RubyXL/ConnectionTextField.html +99 -0
  222. data/rdoc/RubyXL/ConnectionTextFields.html +99 -0
  223. data/rdoc/RubyXL/Connections.html +147 -0
  224. data/rdoc/RubyXL/ContentTypeDefault.html +12 -17
  225. data/rdoc/RubyXL/ContentTypeOverride.html +12 -17
  226. data/rdoc/RubyXL/ContentTypes.html +25 -65
  227. data/rdoc/RubyXL/ControlPropertiesFile.html +14 -22
  228. data/rdoc/RubyXL/CorePropertiesFile.html +35 -171
  229. data/rdoc/RubyXL/CustomColor.html +13 -19
  230. data/rdoc/RubyXL/CustomColorList.html +13 -19
  231. data/rdoc/RubyXL/CustomFilter.html +13 -19
  232. data/rdoc/RubyXL/CustomFilters.html +13 -19
  233. data/rdoc/RubyXL/CustomGeometry.html +13 -19
  234. data/rdoc/RubyXL/CustomProperties.html +13 -19
  235. data/rdoc/RubyXL/CustomPropertiesFile.html +12 -25
  236. data/rdoc/RubyXL/CustomProperty.html +13 -19
  237. data/rdoc/RubyXL/CustomPropertyFile.html +108 -0
  238. data/rdoc/RubyXL/CustomSheetView.html +13 -19
  239. data/rdoc/RubyXL/CustomSheetViews.html +13 -19
  240. data/rdoc/RubyXL/CustomWorkbookView.html +13 -19
  241. data/rdoc/RubyXL/CustomWorkbookViews.html +13 -19
  242. data/rdoc/RubyXL/CustomXMLFile.html +12 -22
  243. data/rdoc/RubyXL/DXF.html +13 -19
  244. data/rdoc/RubyXL/DXFs.html +13 -19
  245. data/rdoc/RubyXL/DataBar.html +13 -19
  246. data/rdoc/RubyXL/DataConsolidate.html +13 -19
  247. data/rdoc/RubyXL/DataConsolidationReference.html +13 -19
  248. data/rdoc/RubyXL/DataConsolidationReferences.html +13 -19
  249. data/rdoc/RubyXL/DataType.html +11 -39
  250. data/rdoc/RubyXL/DataValidation.html +13 -19
  251. data/rdoc/RubyXL/DataValidations.html +13 -19
  252. data/rdoc/RubyXL/DateGroupItem.html +13 -19
  253. data/rdoc/RubyXL/DefinedName.html +13 -19
  254. data/rdoc/RubyXL/DefinedNameExt.html +13 -19
  255. data/rdoc/RubyXL/DefinedNames.html +13 -19
  256. data/rdoc/RubyXL/DefinedNamesExt.html +13 -19
  257. data/rdoc/RubyXL/DocumentPropertiesFile.html +22 -68
  258. data/rdoc/RubyXL/DrawingFile.html +19 -49
  259. data/rdoc/RubyXL/DynamicFilter.html +13 -19
  260. data/rdoc/RubyXL/EmbeddedControl.html +13 -19
  261. data/rdoc/RubyXL/EmbeddedControls.html +13 -19
  262. data/rdoc/RubyXL/Extension.html +13 -19
  263. data/rdoc/RubyXL/ExtensionStorageArea.html +13 -19
  264. data/rdoc/RubyXL/Extents.html +13 -19
  265. data/rdoc/RubyXL/ExternalBook.html +13 -19
  266. data/rdoc/RubyXL/ExternalLinksFile.html +19 -49
  267. data/rdoc/RubyXL/ExternalReference.html +13 -19
  268. data/rdoc/RubyXL/ExternalReferences.html +13 -19
  269. data/rdoc/RubyXL/ExtraColorSchemeList.html +13 -19
  270. data/rdoc/RubyXL/FieldItem.html +13 -19
  271. data/rdoc/RubyXL/FileRecoveryProperties.html +13 -19
  272. data/rdoc/RubyXL/FileSharing.html +13 -19
  273. data/rdoc/RubyXL/FileVersion.html +13 -19
  274. data/rdoc/RubyXL/Fill.html +19 -39
  275. data/rdoc/RubyXL/Fills.html +19 -39
  276. data/rdoc/RubyXL/FilterContainer.html +13 -19
  277. data/rdoc/RubyXL/FloatNode.html +12 -17
  278. data/rdoc/RubyXL/FloatValue.html +12 -17
  279. data/rdoc/RubyXL/Font.html +20 -544
  280. data/rdoc/RubyXL/FontConvenienceMethods.html +414 -0
  281. data/rdoc/RubyXL/FontScheme.html +13 -19
  282. data/rdoc/RubyXL/Fonts.html +19 -39
  283. data/rdoc/RubyXL/Formula.html +13 -19
  284. data/rdoc/RubyXL/FunctionGroup.html +13 -19
  285. data/rdoc/RubyXL/FunctionGroups.html +13 -19
  286. data/rdoc/RubyXL/GenericStorageObject.html +22 -84
  287. data/rdoc/RubyXL/GradientFill.html +13 -19
  288. data/rdoc/RubyXL/HeaderFooterSettings.html +13 -19
  289. data/rdoc/RubyXL/Hyperlink.html +13 -19
  290. data/rdoc/RubyXL/HyperlinkRelFile.html +12 -22
  291. data/rdoc/RubyXL/Hyperlinks.html +13 -19
  292. data/rdoc/RubyXL/IconFilter.html +13 -19
  293. data/rdoc/RubyXL/IconSet.html +13 -19
  294. data/rdoc/RubyXL/IgnoredError.html +13 -19
  295. data/rdoc/RubyXL/IgnoredErrors.html +13 -19
  296. data/rdoc/RubyXL/IndexedColors.html +13 -19
  297. data/rdoc/RubyXL/InputCells.html +13 -19
  298. data/rdoc/RubyXL/IntegerNode.html +12 -17
  299. data/rdoc/RubyXL/IntegerValue.html +12 -17
  300. data/rdoc/RubyXL/LegacyCell.html +14 -66
  301. data/rdoc/RubyXL/LegacyWorksheet.html +40 -100
  302. data/rdoc/RubyXL/MRUColors.html +13 -19
  303. data/rdoc/RubyXL/MacrosFile.html +12 -25
  304. data/rdoc/RubyXL/MergedCell.html +13 -19
  305. data/rdoc/RubyXL/MergedCells.html +13 -19
  306. data/rdoc/RubyXL/NumFmt.html +13 -19
  307. data/rdoc/RubyXL/NumberFormat.html +19 -39
  308. data/rdoc/RubyXL/NumberFormats.html +19 -45
  309. data/rdoc/RubyXL/OLEObject.html +13 -19
  310. data/rdoc/RubyXL/OLEObjectFile.html +12 -25
  311. data/rdoc/RubyXL/OLEObjects.html +13 -19
  312. data/rdoc/RubyXL/OLESize.html +13 -19
  313. data/rdoc/RubyXL/OOXMLContainerObject.html +36 -132
  314. data/rdoc/RubyXL/OOXMLIgnored.html +163 -0
  315. data/rdoc/RubyXL/OOXMLObject.html +15 -25
  316. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +92 -183
  317. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +49 -185
  318. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +48 -200
  319. data/rdoc/RubyXL/OOXMLTopLevelObject.html +37 -133
  320. data/rdoc/RubyXL/OdbcOleDbProperties.html +99 -0
  321. data/rdoc/RubyXL/Offset.html +13 -19
  322. data/rdoc/RubyXL/OlapProperties.html +99 -0
  323. data/rdoc/RubyXL/OleItem.html +99 -0
  324. data/rdoc/RubyXL/OleItems.html +99 -0
  325. data/rdoc/RubyXL/OleLink.html +99 -0
  326. data/rdoc/RubyXL/OutlineProperties.html +13 -19
  327. data/rdoc/RubyXL/PageMargins.html +13 -19
  328. data/rdoc/RubyXL/PageSetup.html +13 -19
  329. data/rdoc/RubyXL/PageSetupProperties.html +13 -19
  330. data/rdoc/RubyXL/Pane.html +13 -19
  331. data/rdoc/RubyXL/Parser.html +23 -56
  332. data/rdoc/RubyXL/PatternFill.html +13 -19
  333. data/rdoc/RubyXL/PhoneticProperties.html +13 -19
  334. data/rdoc/RubyXL/PhoneticRun.html +13 -19
  335. data/rdoc/RubyXL/PivotArea.html +13 -19
  336. data/rdoc/RubyXL/PivotCache.html +13 -19
  337. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +14 -30
  338. data/rdoc/RubyXL/PivotCacheRecordsFile.html +12 -25
  339. data/rdoc/RubyXL/PivotCaches.html +13 -19
  340. data/rdoc/RubyXL/PivotReference.html +13 -19
  341. data/rdoc/RubyXL/PivotReferences.html +13 -19
  342. data/rdoc/RubyXL/PivotTableFile.html +14 -30
  343. data/rdoc/RubyXL/PivotTableSelection.html +13 -19
  344. data/rdoc/RubyXL/PresetGeometry.html +13 -19
  345. data/rdoc/RubyXL/PrintOptions.html +13 -19
  346. data/rdoc/RubyXL/PrinterSettingsFile.html +12 -25
  347. data/rdoc/RubyXL/ProtectedRange.html +13 -19
  348. data/rdoc/RubyXL/ProtectedRanges.html +13 -19
  349. data/rdoc/RubyXL/Protection.html +13 -19
  350. data/rdoc/RubyXL/QueryParameter.html +99 -0
  351. data/rdoc/RubyXL/QueryParameters.html +99 -0
  352. data/rdoc/RubyXL/QueryTable.html +155 -0
  353. data/rdoc/RubyXL/QueryTableDeletedField.html +99 -0
  354. data/rdoc/RubyXL/QueryTableDeletedFields.html +99 -0
  355. data/rdoc/RubyXL/QueryTableField.html +99 -0
  356. data/rdoc/RubyXL/QueryTableFields.html +99 -0
  357. data/rdoc/RubyXL/QueryTableRefresh.html +99 -0
  358. data/rdoc/RubyXL/RID.html +12 -17
  359. data/rdoc/RubyXL/RawOOXML.html +21 -60
  360. data/rdoc/RubyXL/Reference.html +63 -228
  361. data/rdoc/RubyXL/Relationship.html +12 -17
  362. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +14 -32
  363. data/rdoc/RubyXL/RelationshipSupport.html +26 -120
  364. data/rdoc/RubyXL/RevisionPointer.html +99 -0
  365. data/rdoc/RubyXL/RichText.html +20 -39
  366. data/rdoc/RubyXL/RichTextRun.html +18 -38
  367. data/rdoc/RubyXL/Row.html +53 -152
  368. data/rdoc/RubyXL/RowExt.html +13 -19
  369. data/rdoc/RubyXL/RunProperties.html +13 -19
  370. data/rdoc/RubyXL/Scenario.html +13 -19
  371. data/rdoc/RubyXL/Scenarios.html +13 -19
  372. data/rdoc/RubyXL/Selection.html +19 -39
  373. data/rdoc/RubyXL/ShapeGuide.html +13 -19
  374. data/rdoc/RubyXL/ShapeTextRectangle.html +13 -19
  375. data/rdoc/RubyXL/SharedStringsTable.html +38 -147
  376. data/rdoc/RubyXL/Sheet.html +13 -19
  377. data/rdoc/RubyXL/SheetCalculationProperties.html +13 -19
  378. data/rdoc/RubyXL/SheetData.html +20 -53
  379. data/rdoc/RubyXL/SheetDataExt.html +13 -19
  380. data/rdoc/RubyXL/SheetDataSet.html +13 -19
  381. data/rdoc/RubyXL/SheetMetadata.html +108 -0
  382. data/rdoc/RubyXL/SheetName.html +13 -19
  383. data/rdoc/RubyXL/SheetNames.html +13 -19
  384. data/rdoc/RubyXL/Sheets.html +13 -19
  385. data/rdoc/RubyXL/SlicerCacheFile.html +12 -25
  386. data/rdoc/RubyXL/SlicerFile.html +12 -25
  387. data/rdoc/RubyXL/SmartTagProperties.html +13 -19
  388. data/rdoc/RubyXL/SmartTagType.html +13 -19
  389. data/rdoc/RubyXL/SmartTagTypes.html +13 -19
  390. data/rdoc/RubyXL/SmartTags.html +13 -19
  391. data/rdoc/RubyXL/SortCondition.html +13 -19
  392. data/rdoc/RubyXL/SortState.html +13 -19
  393. data/rdoc/RubyXL/Sqref.html +20 -53
  394. data/rdoc/RubyXL/Stop.html +13 -19
  395. data/rdoc/RubyXL/StringNode.html +12 -17
  396. data/rdoc/RubyXL/StringNodeW3C.html +21 -54
  397. data/rdoc/RubyXL/StringValue.html +12 -17
  398. data/rdoc/RubyXL/Stylesheet.html +35 -117
  399. data/rdoc/RubyXL/TableFile.html +12 -25
  400. data/rdoc/RubyXL/TableParts.html +12 -17
  401. data/rdoc/RubyXL/TableStyle.html +13 -19
  402. data/rdoc/RubyXL/TableStyles.html +13 -19
  403. data/rdoc/RubyXL/Text.html +23 -67
  404. data/rdoc/RubyXL/TextImportSettings.html +99 -0
  405. data/rdoc/RubyXL/Theme.html +57 -62
  406. data/rdoc/RubyXL/ThemeElements.html +13 -19
  407. data/rdoc/RubyXL/ThumbnailFile.html +12 -25
  408. data/rdoc/RubyXL/Top10.html +13 -19
  409. data/rdoc/RubyXL/VMLDrawingFile.html +15 -32
  410. data/rdoc/RubyXL/Variant.html +13 -19
  411. data/rdoc/RubyXL/Vector.html +18 -38
  412. data/rdoc/RubyXL/VectorValue.html +12 -17
  413. data/rdoc/RubyXL/VisualProperties.html +13 -19
  414. data/rdoc/RubyXL/WebPublishObject.html +13 -19
  415. data/rdoc/RubyXL/WebPublishObjects.html +13 -19
  416. data/rdoc/RubyXL/WebPublishingItem.html +13 -19
  417. data/rdoc/RubyXL/WebPublishingItems.html +13 -19
  418. data/rdoc/RubyXL/WebPublishingProperties.html +13 -19
  419. data/rdoc/RubyXL/WebQueryProperties.html +99 -0
  420. data/rdoc/RubyXL/Workbook.html +487 -227
  421. data/rdoc/RubyXL/WorkbookConvenienceMethods.html +163 -871
  422. data/rdoc/RubyXL/WorkbookProperties.html +13 -19
  423. data/rdoc/RubyXL/WorkbookProtection.html +13 -19
  424. data/rdoc/RubyXL/WorkbookRoot.html +28 -114
  425. data/rdoc/RubyXL/WorkbookView.html +13 -19
  426. data/rdoc/RubyXL/WorkbookViews.html +13 -19
  427. data/rdoc/RubyXL/Worksheet.html +93 -121
  428. data/rdoc/RubyXL/WorksheetConvenienceMethods.html +299 -1109
  429. data/rdoc/RubyXL/WorksheetDimensions.html +13 -19
  430. data/rdoc/RubyXL/WorksheetFormatProperties.html +12 -17
  431. data/rdoc/RubyXL/WorksheetProperties.html +13 -19
  432. data/rdoc/RubyXL/WorksheetProtection.html +13 -19
  433. data/rdoc/RubyXL/WorksheetView.html +13 -19
  434. data/rdoc/RubyXL/WorksheetViews.html +13 -19
  435. data/rdoc/RubyXL/XF.html +13 -19
  436. data/rdoc/RubyXL.html +41 -296
  437. data/rdoc/created.rid +45 -38
  438. data/rdoc/css/fonts.css +6 -6
  439. data/rdoc/css/rdoc.css +55 -6
  440. data/rdoc/fonts/SourceCodePro-Bold.ttf +0 -0
  441. data/rdoc/fonts/SourceCodePro-Regular.ttf +0 -0
  442. data/rdoc/index.html +44 -363
  443. data/rdoc/js/darkfish.js +23 -100
  444. data/rdoc/js/navigation.js +4 -41
  445. data/rdoc/js/navigation.js.gz +0 -0
  446. data/rdoc/js/search.js +32 -31
  447. data/rdoc/js/search_index.js +1 -1
  448. data/rdoc/js/search_index.js.gz +0 -0
  449. data/rdoc/js/searcher.js +7 -6
  450. data/rdoc/js/searcher.js.gz +0 -0
  451. data/rdoc/table_of_contents.html +347 -75
  452. data/rubyXL.gemspec +78 -43
  453. data/spec/lib/cell_spec.rb +115 -4
  454. data/spec/lib/color_spec.rb +2 -1
  455. data/spec/lib/parser_spec.rb +24 -27
  456. data/spec/lib/reference_spec.rb +9 -3
  457. data/spec/lib/rgb_color_spec.rb +27 -0
  458. data/spec/lib/stylesheet_spec.rb +8 -11
  459. data/spec/lib/text_spec.rb +8 -4
  460. data/spec/lib/workbook_spec.rb +26 -5
  461. data/spec/lib/worksheet_spec.rb +873 -479
  462. data/spec/spec_helper.rb +2 -0
  463. data/test/test_parse_write.rb +15 -15
  464. metadata +65 -10
  465. data/rdoc/js/jquery.js +0 -4
@@ -0,0 +1,104 @@
1
+ require 'rubyXL/objects/ooxml_object'
2
+ require 'rubyXL/objects/simple_types'
3
+ require 'rubyXL/objects/extensions'
4
+ require 'rubyXL/objects/relationships'
5
+ require 'rubyXL/objects/sheet_common'
6
+
7
+ # Query Tables
8
+ # https://msdn.microsoft.com/en-us/library/hh643563(v=office.12).aspx
9
+
10
+ module RubyXL
11
+ # http://www.datypic.com/sc/ooxml/e-ssml_queryTableField-1.html
12
+ class QueryTableField < OOXMLObject
13
+ define_attribute(:id, :uint, :required => true)
14
+ define_attribute(:name, RubyXL::ST_Xstring)
15
+ define_attribute(:dataBound, :bool, :default => true)
16
+ define_attribute(:rowNumbers, :bool, :default => false)
17
+ define_attribute(:fillFormulas, :bool, :default => false)
18
+ define_attribute(:clipped, :bool, :default => false)
19
+ define_attribute(:tableColumnId, :uint, :default => 0)
20
+
21
+ define_child_node(RubyXL::ExtensionStorageArea)
22
+
23
+ define_element_name 'queryTableField'
24
+ end
25
+
26
+ # http://www.datypic.com/sc/ooxml/e-ssml_queryTableFields-1.html
27
+ class QueryTableFields < OOXMLObject
28
+ define_child_node(RubyXL::QueryTableField, :collection => :with_count, :accessor => :fields, :node_name => :queryTableField)
29
+ define_element_name 'queryTableFields'
30
+ end
31
+
32
+ # http://www.datypic.com/sc/ooxml/e-ssml_deletedField-1.html
33
+ class QueryTableDeletedField < OOXMLObject
34
+ define_attribute(:name, RubyXL::ST_Xstring, :required => true)
35
+
36
+ define_element_name 'deletedField'
37
+ end
38
+
39
+ # http://www.datypic.com/sc/ooxml/e-ssml_queryTableDeletedFields-1.html
40
+ class QueryTableDeletedFields < OOXMLObject
41
+ define_child_node(RubyXL::QueryTableDeletedField, :collection => :with_count, :accessor => :deleted_fields, :node_name => :deletedField)
42
+ define_element_name 'queryTableDeletedFields'
43
+ end
44
+
45
+ # http://www.datypic.com/sc/ooxml/e-ssml_queryTableRefresh-1.html
46
+ class QueryTableRefresh < OOXMLObject
47
+ define_attribute(:preserveSortFilterLayout, :bool, :default => true)
48
+ define_attribute(:fieldIdWrapped, :bool, :default => false)
49
+ define_attribute(:headersInLastRefresh, :bool, :default => true)
50
+ define_attribute(:minimumVersion, :uint, :default => 0)
51
+ define_attribute(:nextId, :uint, :default => 1)
52
+ define_attribute(:unboundColumnsLeft, :uint, :default => 0)
53
+ define_attribute(:unboundColumnsRight, :uint, :default => 0)
54
+
55
+ define_child_node(RubyXL::QueryTableFields) # [1..1]
56
+ define_child_node(RubyXL::QueryTableDeletedFields)
57
+ define_child_node(RubyXL::SortState)
58
+ define_child_node(RubyXL::ExtensionStorageArea)
59
+
60
+ define_element_name 'queryTableRefresh'
61
+ end
62
+
63
+ # http://www.datypic.com/sc/ooxml/e-ssml_queryTable.html
64
+ class QueryTable < OOXMLTopLevelObject
65
+ CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml'.freeze
66
+ REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/queryTable'.freeze
67
+
68
+ include RubyXL::RelationshipSupport
69
+
70
+ define_attribute(:name, RubyXL::ST_Xstring, :required => true)
71
+ define_attribute(:headers, :bool, :default => true)
72
+ define_attribute(:rowNumbers, :bool, :default => false)
73
+ define_attribute(:disableRefresh, :bool, :default => false)
74
+ define_attribute(:backgroundRefresh, :bool, :default => true)
75
+ define_attribute(:firstBackgroundRefresh, :bool, :default => false)
76
+ define_attribute(:refreshOnLoad, :bool, :default => false)
77
+ define_attribute(:growShrinkType, RubyXL::ST_GrowShrinkType, :default => 'insertDelete')
78
+ define_attribute(:fillFormulas, :bool, :default => false)
79
+ define_attribute(:removeDataOnSave, :bool, :default => false)
80
+ define_attribute(:disableEdit, :bool, :default => false)
81
+ define_attribute(:preserveFormatting, :bool, :default => true)
82
+ define_attribute(:adjustColumnWidth, :bool, :default => true)
83
+ define_attribute(:intermediate, :bool, :default => false)
84
+ define_attribute(:connectionId, :uint, :required => true)
85
+ define_attribute(:autoFormatId, :uint)
86
+ define_attribute(:applyNumberFormats, :bool)
87
+ define_attribute(:applyBorderFormats, :bool)
88
+ define_attribute(:applyFontFormats, :bool)
89
+ define_attribute(:applyPatternFormats, :bool)
90
+ define_attribute(:applyAlignmentFormats, :bool)
91
+ define_attribute(:applyWidthHeightFormats, :bool)
92
+
93
+ define_child_node(RubyXL::QueryTableRefresh)
94
+ define_child_node(RubyXL::ExtensionStorageArea)
95
+
96
+ define_element_name 'queryTable'
97
+ set_namespaces('http://schemas.openxmlformats.org/spreadsheetml/2006/main' => nil,
98
+ 'http://schemas.openxmlformats.org/officeDocument/2006/relationships' => 'r')
99
+
100
+ def xlsx_path
101
+ ROOT.join('xl', 'queryTables', "queryTable#{file_index}.xml")
102
+ end
103
+ end
104
+ end
@@ -29,6 +29,10 @@ module RubyXL
29
29
  (@row_range.begin == @row_range.end) && (@col_range.begin == @col_range.end)
30
30
  end
31
31
 
32
+ def valid?
33
+ !(row_range.begin.negative? || col_range.begin.negative?)
34
+ end
35
+
32
36
  def first_row
33
37
  @row_range.begin
34
38
  end
@@ -71,7 +75,7 @@ module RubyXL
71
75
  end
72
76
 
73
77
  # Converts +row+ and +col+ zero-based indices to Excel-style cell reference
74
- # (0) A...Z, AA...AZ, BA... ...ZZ, AAA... ...AZZ, BAA... ...XFD (16383)
78
+ # <0> A...Z, AA...AZ, BA... ...ZZ, AAA... ...AZZ, BAA... ...XFD <16383>
75
79
  def self.ind2ref(row = 0, col = 0)
76
80
  str = ''
77
81
 
@@ -88,16 +92,11 @@ module RubyXL
88
92
  # Converts Excel-style cell reference to +row+ and +col+ zero-based indices.
89
93
  def self.ref2ind(str)
90
94
  return [ -1, -1 ] unless str =~ /\A([A-Z]+)(\d+)\Z/
91
-
92
- col = 0
93
- $1.each_byte { |chr| col = col * 26 + (chr - 64) }
94
- [ $2.to_i - 1, col - 1 ]
95
+ [ Regexp.last_match(2).to_i - 1, Regexp.last_match(1).each_byte.inject(0) { |col, chr| col * 26 + (chr - 64) } - 1 ]
95
96
  end
96
-
97
97
  end
98
98
 
99
99
  class Sqref < Array
100
-
101
100
  def initialize(str)
102
101
  str.split.each { |ref_str| self << RubyXL::Reference.new(ref_str) }
103
102
  end
@@ -105,6 +104,5 @@ module RubyXL
105
104
  def to_s
106
105
  self.collect{ |ref| ref.to_s }.join(' ')
107
106
  end
108
-
109
107
  end
110
108
  end
@@ -2,9 +2,8 @@ require 'pathname'
2
2
  require 'rubyXL/objects/ooxml_object'
3
3
 
4
4
  module RubyXL
5
-
6
5
  class RID < OOXMLObject
7
- define_attribute(:'r:id', :string, :required => true)
6
+ define_relationship(:required => true)
8
7
  end
9
8
 
10
9
  class Relationship < OOXMLObject
@@ -16,7 +15,7 @@ module RubyXL
16
15
  end
17
16
 
18
17
  class OOXMLRelationshipsFile < OOXMLTopLevelObject
19
- CONTENT_TYPE = 'application/vnd.openxmlformats-package.relationships+xml'
18
+ CONTENT_TYPE = 'application/vnd.openxmlformats-package.relationships+xml'.freeze
20
19
  SAVE_ORDER = 100
21
20
 
22
21
  define_child_node(RubyXL::Relationship, :collection => true, :accessor => :relationships)
@@ -28,8 +27,8 @@ module RubyXL
28
27
  @@debug_indent = ($DEBUG ? 0 : nil)
29
28
 
30
29
  def new_relationship(target, type)
31
- RubyXL::Relationship.new(:id => "rId#{relationships.size + 1}",
32
- :type => type,
30
+ RubyXL::Relationship.new(:id => "rId#{relationships.size + 1}",
31
+ :type => type,
33
32
  :target => target)
34
33
  end
35
34
  protected :new_relationship
@@ -37,8 +36,8 @@ module RubyXL
37
36
  def add_relationship(obj)
38
37
  return if obj.nil? || !defined?(obj.class::REL_TYPE) || (obj.respond_to?(:empty?) && obj.empty?)
39
38
 
40
- relationships << RubyXL::Relationship.new(:id => "rId#{relationships.size + 1}",
41
- :type => obj.class::REL_TYPE,
39
+ relationships << RubyXL::Relationship.new(:id => "rId#{relationships.size + 1}",
40
+ :type => obj.class::REL_TYPE,
42
41
  :target => obj.xlsx_path.relative_path_from(owner.xlsx_path.dirname))
43
42
  end
44
43
  protected :add_relationship
@@ -82,7 +81,10 @@ module RubyXL
82
81
  klass = RubyXL::OOXMLRelationshipsFile.get_class_by_rel_type(rel.type)
83
82
 
84
83
  if klass.nil? then
85
- puts "*** WARNING: storage class not found for #{rel.target} (#{rel.type})"
84
+ if !RubyXL.class_variable_get(:@@suppress_warnings) then
85
+ puts "*** WARNING: storage class not found for #{rel.target} (#{rel.type})"
86
+ end
87
+
86
88
  klass = GenericStorageObject
87
89
  end
88
90
 
@@ -128,12 +130,10 @@ module RubyXL
128
130
  basename = base_file_path.root? ? '' : base_file_path.basename
129
131
  base_file_path.dirname.join('_rels', "#{basename}.rels").cleanpath
130
132
  end
131
-
132
133
  end
133
134
 
134
135
  # +RelationshipSupport+ module enables automatic loading and saving of _rels for the respective file
135
136
  module RelationshipSupport
136
-
137
137
  module ClassMehods
138
138
  def define_relationship(klass, accessor = nil)
139
139
  class_variable_get(:@@ooxml_relationships)[klass] = accessor
@@ -204,10 +204,10 @@ module RubyXL
204
204
 
205
205
  def store_relationship(related_file, unknown = false)
206
206
  self.generic_storage ||= []
207
- puts "WARNING: #{self.class} is not aware what to do with #{related_file.class}" if unknown
207
+ if unknown && !RubyXL.class_variable_get(:@@suppress_warnings) then
208
+ puts "WARNING: #{self.class} is not aware how to process #{related_file.class}"
209
+ end
208
210
  self.generic_storage << related_file
209
211
  end
210
-
211
212
  end
212
-
213
213
  end
@@ -5,7 +5,6 @@ require 'rubyXL/objects/content_types'
5
5
  require 'rubyXL/objects/workbook'
6
6
 
7
7
  module RubyXL
8
-
9
8
  class WorkbookRoot
10
9
  @@debug = $DEBUG
11
10
 
@@ -82,5 +81,4 @@ module RubyXL
82
81
  root
83
82
  end
84
83
  end
85
-
86
84
  end
@@ -3,15 +3,14 @@ require 'rubyXL/objects/text'
3
3
  require 'rubyXL/objects/extensions'
4
4
 
5
5
  module RubyXL
6
-
7
- # http://www.schemacentral.com/sc/ooxml/e-ssml_sst.html
6
+ # http://www.datypic.com/sc/ooxml/e-ssml_sst.html
8
7
  class SharedStringsTable < OOXMLTopLevelObject
9
- CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'
10
- REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings'
8
+ CONTENT_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'.freeze
9
+ REL_TYPE = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings'.freeze
11
10
 
12
11
  # According to http://msdn.microsoft.com/en-us/library/office/gg278314.aspx,
13
12
  # +count+ and +uniqueCount+ may be either both missing, or both present. Need to validate.
14
- define_attribute(:uniqueCount, :int)
13
+ define_attribute(:uniqueCount, :int)
15
14
  define_child_node(RubyXL::RichText, :collection => :with_count, :node_name => 'si', :accessor => :strings)
16
15
  define_child_node(RubyXL::ExtensionStorageArea)
17
16
  define_element_name 'sst'
@@ -64,7 +63,5 @@ module RubyXL
64
63
  def xlsx_path
65
64
  ROOT.join('xl', 'sharedStrings.xml')
66
65
  end
67
-
68
66
  end
69
-
70
67
  end
@@ -2,8 +2,7 @@ require 'rubyXL/objects/ooxml_object'
2
2
  require 'rubyXL/objects/storage'
3
3
 
4
4
  module RubyXL
5
-
6
- # http://www.schemacentral.com/sc/ooxml/e-ssml_webPublishItem-1.html
5
+ # http://www.datypic.com/sc/ooxml/e-ssml_webPublishItem-1.html
7
6
  class WebPublishingItem < OOXMLObject
8
7
  define_attribute(:id, :int, :required => true)
9
8
  define_attribute(:divId, :int, :required => true)
@@ -12,17 +11,17 @@ module RubyXL
12
11
  define_attribute(:sourceObject, :string)
13
12
  define_attribute(:destinationFile, :string, :required => true)
14
13
  define_attribute(:title, :string)
15
- define_attribute(:autoRepublish, :bool, :default => false)
14
+ define_attribute(:autoRepublish, :bool, :default => false)
16
15
  define_element_name 'webPublishItem'
17
16
  end
18
17
 
19
- # http://www.schemacentral.com/sc/ooxml/e-ssml_webPublishItems-1.html
18
+ # http://www.datypic.com/sc/ooxml/e-ssml_webPublishItems-1.html
20
19
  class WebPublishingItems < OOXMLContainerObject
21
20
  define_child_node(RubyXL::WebPublishingItem, :collection => :with_count)
22
21
  define_element_name 'webPublishItems'
23
22
  end
24
23
 
25
- # http://www.schemacentral.com/sc/ooxml/e-ssml_pageMargins-1.html
24
+ # http://www.datypic.com/sc/ooxml/e-ssml_pageMargins-1.html
26
25
  class PageMargins < OOXMLObject
27
26
  define_attribute(:left, :double, :required => true)
28
27
  define_attribute(:right, :double, :required => true)
@@ -33,7 +32,7 @@ module RubyXL
33
32
  define_element_name 'pageMargins'
34
33
  end
35
34
 
36
- # http://www.schemacentral.com/sc/ooxml/e-ssml_headerFooter-1.html
35
+ # http://www.datypic.com/sc/ooxml/e-ssml_headerFooter-1.html
37
36
  class HeaderFooterSettings < OOXMLObject
38
37
  define_attribute(:differentOddEven, :bool, :default => false)
39
38
  define_attribute(:differentFirst, :bool, :default => false)
@@ -47,5 +46,4 @@ module RubyXL
47
46
  define_child_node(RubyXL::StringNode, :node_name => :firstFooter)
48
47
  define_element_name 'headerFooter'
49
48
  end
50
-
51
49
  end
@@ -3,11 +3,20 @@ require 'rubyXL/objects/simple_types'
3
3
  require 'rubyXL/objects/text'
4
4
  require 'rubyXL/objects/formula'
5
5
  require 'rubyXL/cell'
6
- require 'rubyXL/convenience_methods'
7
6
 
8
7
  module RubyXL
8
+ # http://msdn.microsoft.com/en-us/library/documentformat.openxml.spreadsheet.cellvalues(v=office.14).aspx
9
+ module DataType
10
+ SHARED_STRING = 's'
11
+ RAW_STRING = 'str'
12
+ INLINE_STRING = 'inlineStr'
13
+ ERROR = 'e'
14
+ BOOLEAN = 'b'
15
+ NUMBER = 'n'
16
+ DATE = 'd' # Only available in Office2010.
17
+ end
9
18
 
10
- # http://www.schemacentral.com/sc/ooxml/e-ssml_v-1.html
19
+ # http://www.datypic.com/sc/ooxml/e-ssml_v-1.html
11
20
  class CellValue < OOXMLObject
12
21
  define_attribute(:_, :string, :accessor => :value)
13
22
  define_attribute(:'xml:space', %w{ preserve })
@@ -19,19 +28,23 @@ module RubyXL
19
28
  end
20
29
  end
21
30
 
22
- # http://www.schemacentral.com/sc/ooxml/e-ssml_c-2.html
31
+ # http://www.datypic.com/sc/ooxml/e-ssml_c-2.html
23
32
  class Cell < OOXMLObject
33
+ NUMBER_REGEXP = /\A-?\d+((?:\.\d+)?(?:e[+-]?\d+)?)?\Z/i
34
+
24
35
  define_attribute(:r, :ref)
25
36
  define_attribute(:s, :int, :default => 0, :accessor => :style_index)
26
- define_attribute(:t, RubyXL::ST_CellType, :accessor => :datatype, :default => 'n' )
37
+ define_attribute(:t, RubyXL::ST_CellType, :accessor => :datatype, :default => 'n')
27
38
  define_attribute(:cm, :int, :default => 0)
28
39
  define_attribute(:vm, :int, :default => 0)
29
40
  define_attribute(:ph, :bool, :default => false)
30
41
  define_child_node(RubyXL::Formula, :accessor => :formula)
31
42
  define_child_node(RubyXL::CellValue, :accessor => :value_container)
32
- define_child_node(RubyXL::RichText) # is
43
+ define_child_node(RubyXL::RichText) # is
33
44
  define_element_name 'c'
34
45
 
46
+ attr_accessor :worksheet
47
+
35
48
  def index_in_collection
36
49
  r.col_range.begin
37
50
  end
@@ -61,12 +74,30 @@ module RubyXL
61
74
  value_container.value = v
62
75
  end
63
76
 
77
+ def get_cell_xf
78
+ workbook.stylesheet.cell_xfs[self.style_index || 0]
79
+ end
80
+
81
+ def get_cell_font
82
+ workbook.stylesheet.fonts[get_cell_xf.font_id]
83
+ end
84
+
85
+ def get_cell_border
86
+ workbook.stylesheet.borders[get_cell_xf.border_id]
87
+ end
88
+
64
89
  def number_format
65
90
  workbook.stylesheet.get_number_format_by_id(get_cell_xf.num_fmt_id)
66
91
  end
67
92
 
68
93
  def is_date?
69
- return false unless raw_value =~ /\A\d+(?:\.\d+)?\Z/ # Only fully numeric values can be dates
94
+ return false unless # Only fully numeric values can be dates
95
+ case raw_value
96
+ when Numeric then true
97
+ when String then raw_value =~ NUMBER_REGEXP
98
+ else false
99
+ end
100
+
70
101
  num_fmt = self.number_format
71
102
  num_fmt && num_fmt.is_date_format?
72
103
  end
@@ -78,11 +109,13 @@ module RubyXL
78
109
 
79
110
  case datatype
80
111
  when RubyXL::DataType::SHARED_STRING then workbook.shared_strings_container[r.to_i].to_s
112
+ when RubyXL::DataType::INLINE_STRING then is.to_s
81
113
  when RubyXL::DataType::RAW_STRING then raw_value
82
114
  else
83
- if is_date? then workbook.num_to_date(r.to_f)
84
- elsif r.is_a?(String) && (r =~ /\A-?\d+((?:\.\d+)?(?:e[+-]?\d+)?)?\Z/i) then # Numeric
85
- if $1 != '' then r.to_f
115
+ if is then is.to_s
116
+ elsif is_date? then workbook.num_to_date(r.to_f)
117
+ elsif r.is_a?(String) && (r =~ NUMBER_REGEXP) then # Numeric
118
+ if Regexp.last_match(1) != '' then r.to_f
86
119
  else r.to_i
87
120
  end
88
121
  else r
@@ -92,18 +125,17 @@ module RubyXL
92
125
 
93
126
  def inspect
94
127
  str = "#<#{self.class}(#{row},#{column}): #{raw_value.inspect}"
95
- str += " =#{self.formula.expression}" if self.formula
96
- str += ", datatype=#{self.datatype.inspect}, style_index=#{self.style_index.inspect}>"
128
+ str << " =#{self.formula.expression}" if self.formula
129
+ str << ", datatype=#{self.datatype.inspect}, style_index=#{self.style_index.inspect}>"
97
130
  return str
98
131
  end
99
132
 
100
133
  include LegacyCell
101
- include CellConvenienceMethods
102
134
  end
103
135
 
104
136
  #TODO#<row r="1" spans="1:1" x14ac:dyDescent="0.25">
105
137
 
106
- # http://www.schemacentral.com/sc/ooxml/e-ssml_row-1.html
138
+ # http://www.datypic.com/sc/ooxml/e-ssml_row-1.html
107
139
  class Row < OOXMLObject
108
140
  define_attribute(:r, :int)
109
141
  define_attribute(:spans, :string)
@@ -122,6 +154,10 @@ module RubyXL
122
154
 
123
155
  attr_accessor :worksheet
124
156
 
157
+ def before_write_xml
158
+ !(cells.nil? || cells.empty?)
159
+ end
160
+
125
161
  def index_in_collection
126
162
  r - 1
127
163
  end
@@ -167,7 +203,7 @@ module RubyXL
167
203
  DEFAULT_HEIGHT = 13
168
204
  end
169
205
 
170
- # http://www.schemacentral.com/sc/ooxml/e-ssml_sheetData-1.html
206
+ # http://www.datypic.com/sc/ooxml/e-ssml_sheetData-1.html
171
207
  class SheetData < OOXMLObject
172
208
  define_child_node(RubyXL::Row, :collection => true, :accessor => :rows)
173
209
  define_element_name 'sheetData'
@@ -179,7 +215,5 @@ module RubyXL
179
215
  def size
180
216
  rows.size
181
217
  end
182
-
183
218
  end
184
-
185
219
  end
@@ -140,7 +140,7 @@ module RubyXL
140
140
  ST_TextHorzOverflowType = %w{ overflow clip }
141
141
  ST_TextVerticalType = %w{ horz vert vert270 wordArtVert eaVert mongolianVert wordArtVertRtl }
142
142
  ST_TextWrappingType = %w{ none square }
143
- ST_TextAnchoringType = %w{ t ctr b just dist }
143
+ ST_TextAnchoringType = %w{ t ctr b just dist }
144
144
  ST_TextShapeType = %w{ textNoShape textPlain textStop textTriangle textTriangleInverted textChevron
145
145
  textChevronInverted textRingInside textRingOutside textArchUp textArchDown
146
146
  textCircle textButton textArchUpPour textArchDownPour textCirclePour textButtonPour
@@ -223,7 +223,27 @@ module RubyXL
223
223
 
224
224
  ST_TextUnderlineType = %w{ none words sng dbl heavy dotted dottedHeavy dash dashHeavy dashLong dashLongHeavy
225
225
  dotDash dotDashHeavy dotDotDash dotDotDashHeavy wavy wavyHeavy wavyDbl }
226
+ ST_UnderlineValues = %w{ single double singleAccounting doubleAccounting none }
227
+
226
228
  ST_TextStrikeType = %w{ noStrike sngStrike dblStrike }
227
229
  ST_TextCapsType = %w{ none small all }
228
230
 
231
+ # TODO: http://www.datypic.com/sc/ooxml/t-ssml_ST_UnsignedIntHex.html
232
+ ST_UnsignedIntHex = :string # length = 4
233
+ # TODO: http://www.datypic.com/sc/ooxml/t-ssml_ST_UnsignedShortHex.html
234
+ ST_UnsignedShortHex = :string # length = 2
235
+
236
+ ST_Xstring = :string
237
+
238
+ # Query Tables
239
+ ST_GrowShrinkType = %w{ insertDelete insertClear overwriteClear }
240
+
241
+ # Connections
242
+ ST_CredMethod = %w{ integrated none stored prompt }
243
+ ST_ParameterType = %w{ prompt value cell }
244
+ ST_FileType = %w{ mac win dos }
245
+ ST_Qualifier = %w{ doubleQuote singleQuote none }
246
+ ST_ExternalConnectionType = %w{ general text MDY DMY YMD MYD DYM YDM skip EMD }
247
+
248
+ ST_HtmlFmt = %w{ none rtf all }
229
249
  end