rubyXL 3.1.0 → 3.1.2

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 (370) hide show
  1. data/Gemfile +1 -1
  2. data/README.rdoc +3 -3
  3. data/VERSION +1 -1
  4. data/lib/rubyXL.rb +1 -17
  5. data/lib/rubyXL/cell.rb +22 -3
  6. data/lib/rubyXL/objects/content_types.rb +2 -3
  7. data/lib/rubyXL/objects/document_properties.rb +1 -0
  8. data/lib/rubyXL/objects/ooxml_object.rb +2 -30
  9. data/lib/rubyXL/objects/relationships.rb +42 -10
  10. data/lib/rubyXL/objects/root.rb +10 -18
  11. data/lib/rubyXL/objects/sheet_data.rb +1 -0
  12. data/lib/rubyXL/objects/storage.rb +1 -4
  13. data/lib/rubyXL/objects/text.rb +1 -0
  14. data/lib/rubyXL/objects/workbook.rb +8 -0
  15. data/lib/rubyXL/objects/worksheet.rb +2 -0
  16. data/lib/rubyXL/worksheet.rb +49 -88
  17. data/rdoc/README_rdoc.html +28 -28
  18. data/rdoc/RubyXL.html +1 -1
  19. data/rdoc/RubyXL/AExtension.html +1 -1
  20. data/rdoc/RubyXL/AExtensionStorageArea.html +1 -1
  21. data/rdoc/RubyXL/AdjustHandleList.html +1 -1
  22. data/rdoc/RubyXL/Alignment.html +1 -1
  23. data/rdoc/RubyXL/AlternateContent.html +1 -1
  24. data/rdoc/RubyXL/Authors.html +1 -1
  25. data/rdoc/RubyXL/AutoFilter.html +1 -1
  26. data/rdoc/RubyXL/AutoFilterColumn.html +1 -1
  27. data/rdoc/RubyXL/BinaryImageFile.html +1 -1
  28. data/rdoc/RubyXL/BodyProperties.html +1 -1
  29. data/rdoc/RubyXL/BooleanNode.html +1 -1
  30. data/rdoc/RubyXL/BooleanValue.html +1 -1
  31. data/rdoc/RubyXL/Border.html +1 -1
  32. data/rdoc/RubyXL/BorderEdge.html +1 -1
  33. data/rdoc/RubyXL/Borders.html +1 -1
  34. data/rdoc/RubyXL/Break.html +1 -1
  35. data/rdoc/RubyXL/BreakList.html +1 -1
  36. data/rdoc/RubyXL/CT_AdjPoint2D.html +1 -1
  37. data/rdoc/RubyXL/CT_AlphaBiLevelEffect.html +1 -1
  38. data/rdoc/RubyXL/CT_AlphaModulateEffect.html +1 -1
  39. data/rdoc/RubyXL/CT_AlphaModulateFixedEffect.html +1 -1
  40. data/rdoc/RubyXL/CT_AlphaOutsetEffect.html +1 -1
  41. data/rdoc/RubyXL/CT_AlphaReplaceEffect.html +1 -1
  42. data/rdoc/RubyXL/CT_Backdrop.html +1 -1
  43. data/rdoc/RubyXL/CT_Bevel.html +1 -1
  44. data/rdoc/RubyXL/CT_BiLevelEffect.html +1 -1
  45. data/rdoc/RubyXL/CT_BlendEffect.html +1 -1
  46. data/rdoc/RubyXL/CT_Blip.html +1 -1
  47. data/rdoc/RubyXL/CT_BlipFillProperties.html +1 -1
  48. data/rdoc/RubyXL/CT_BlurEffect.html +1 -1
  49. data/rdoc/RubyXL/CT_Camera.html +1 -1
  50. data/rdoc/RubyXL/CT_Color.html +1 -1
  51. data/rdoc/RubyXL/CT_ColorChangeEffect.html +1 -1
  52. data/rdoc/RubyXL/CT_ColorMapping.html +1 -1
  53. data/rdoc/RubyXL/CT_ColorScheme.html +1 -1
  54. data/rdoc/RubyXL/CT_ColorSchemeAndMapping.html +1 -1
  55. data/rdoc/RubyXL/CT_ConnectionSite.html +1 -1
  56. data/rdoc/RubyXL/CT_ConnectionSiteList.html +1 -1
  57. data/rdoc/RubyXL/CT_DashStop.html +1 -1
  58. data/rdoc/RubyXL/CT_DashStopList.html +1 -1
  59. data/rdoc/RubyXL/CT_DefaultShapeDefinition.html +1 -1
  60. data/rdoc/RubyXL/CT_DuotoneEffect.html +1 -1
  61. data/rdoc/RubyXL/CT_EffectContainer.html +1 -1
  62. data/rdoc/RubyXL/CT_EffectList.html +1 -1
  63. data/rdoc/RubyXL/CT_EffectReference.html +1 -1
  64. data/rdoc/RubyXL/CT_EffectStyleItem.html +1 -1
  65. data/rdoc/RubyXL/CT_EffectStyleList.html +1 -1
  66. data/rdoc/RubyXL/CT_EmbeddedWAVAudioFile.html +1 -1
  67. data/rdoc/RubyXL/CT_FillEffect.html +1 -1
  68. data/rdoc/RubyXL/CT_FillOverlayEffect.html +1 -1
  69. data/rdoc/RubyXL/CT_FillStyleList.html +1 -1
  70. data/rdoc/RubyXL/CT_FlatText.html +1 -1
  71. data/rdoc/RubyXL/CT_FontCollection.html +1 -1
  72. data/rdoc/RubyXL/CT_FontReference.html +1 -1
  73. data/rdoc/RubyXL/CT_GeomGuideList.html +1 -1
  74. data/rdoc/RubyXL/CT_GlowEffect.html +1 -1
  75. data/rdoc/RubyXL/CT_GradientFillProperties.html +1 -1
  76. data/rdoc/RubyXL/CT_GradientStop.html +1 -1
  77. data/rdoc/RubyXL/CT_GradientStopList.html +1 -1
  78. data/rdoc/RubyXL/CT_HSLEffect.html +1 -1
  79. data/rdoc/RubyXL/CT_HslColor.html +1 -1
  80. data/rdoc/RubyXL/CT_Hyperlink.html +1 -1
  81. data/rdoc/RubyXL/CT_InnerShadowEffect.html +1 -1
  82. data/rdoc/RubyXL/CT_LightRig.html +1 -1
  83. data/rdoc/RubyXL/CT_LineEndProperties.html +1 -1
  84. data/rdoc/RubyXL/CT_LineJoinMiterProperties.html +1 -1
  85. data/rdoc/RubyXL/CT_LineProperties.html +1 -1
  86. data/rdoc/RubyXL/CT_LineStyleList.html +1 -1
  87. data/rdoc/RubyXL/CT_LinearShadeProperties.html +1 -1
  88. data/rdoc/RubyXL/CT_LuminanceEffect.html +1 -1
  89. data/rdoc/RubyXL/CT_ObjectStyleDefaults.html +1 -1
  90. data/rdoc/RubyXL/CT_OuterShadowEffect.html +1 -1
  91. data/rdoc/RubyXL/CT_Path2D.html +1 -1
  92. data/rdoc/RubyXL/CT_Path2DArcTo.html +1 -1
  93. data/rdoc/RubyXL/CT_Path2DCubicBezierTo.html +1 -1
  94. data/rdoc/RubyXL/CT_Path2DList.html +1 -1
  95. data/rdoc/RubyXL/CT_Path2DQuadBezierTo.html +1 -1
  96. data/rdoc/RubyXL/CT_Path2DTo.html +1 -1
  97. data/rdoc/RubyXL/CT_PathShadeProperties.html +1 -1
  98. data/rdoc/RubyXL/CT_PatternFillProperties.html +1 -1
  99. data/rdoc/RubyXL/CT_Point3D.html +1 -1
  100. data/rdoc/RubyXL/CT_PolarAdjustHandle.html +1 -1
  101. data/rdoc/RubyXL/CT_PresetColor.html +1 -1
  102. data/rdoc/RubyXL/CT_PresetLineDashProperties.html +1 -1
  103. data/rdoc/RubyXL/CT_PresetShadowEffect.html +1 -1
  104. data/rdoc/RubyXL/CT_PresetTextShape.html +1 -1
  105. data/rdoc/RubyXL/CT_ReflectionEffect.html +1 -1
  106. data/rdoc/RubyXL/CT_RelativeOffsetEffect.html +1 -1
  107. data/rdoc/RubyXL/CT_RelativeRect.html +1 -1
  108. data/rdoc/RubyXL/CT_SRgbColor.html +1 -1
  109. data/rdoc/RubyXL/CT_ScRgbColor.html +1 -1
  110. data/rdoc/RubyXL/CT_Scene3D.html +1 -1
  111. data/rdoc/RubyXL/CT_SchemeColor.html +1 -1
  112. data/rdoc/RubyXL/CT_Shape3D.html +1 -1
  113. data/rdoc/RubyXL/CT_ShapeStyle.html +1 -1
  114. data/rdoc/RubyXL/CT_SoftEdgesEffect.html +1 -1
  115. data/rdoc/RubyXL/CT_SphereCoords.html +1 -1
  116. data/rdoc/RubyXL/CT_StretchInfoProperties.html +1 -1
  117. data/rdoc/RubyXL/CT_StyleMatrix.html +1 -1
  118. data/rdoc/RubyXL/CT_StyleMatrixReference.html +1 -1
  119. data/rdoc/RubyXL/CT_SupplementalFont.html +1 -1
  120. data/rdoc/RubyXL/CT_SystemColor.html +1 -1
  121. data/rdoc/RubyXL/CT_TextAutonumberBullet.html +1 -1
  122. data/rdoc/RubyXL/CT_TextBlipBullet.html +1 -1
  123. data/rdoc/RubyXL/CT_TextCharBullet.html +1 -1
  124. data/rdoc/RubyXL/CT_TextCharacterProperties.html +1 -1
  125. data/rdoc/RubyXL/CT_TextFont.html +1 -1
  126. data/rdoc/RubyXL/CT_TextListStyle.html +1 -1
  127. data/rdoc/RubyXL/CT_TextNormalAutofit.html +1 -1
  128. data/rdoc/RubyXL/CT_TextParagraphProperties.html +1 -1
  129. data/rdoc/RubyXL/CT_TextSpacing.html +1 -1
  130. data/rdoc/RubyXL/CT_TextTabStop.html +1 -1
  131. data/rdoc/RubyXL/CT_TextTabStopList.html +1 -1
  132. data/rdoc/RubyXL/CT_TileInfoProperties.html +1 -1
  133. data/rdoc/RubyXL/CT_TintEffect.html +1 -1
  134. data/rdoc/RubyXL/CT_Transform2D.html +1 -1
  135. data/rdoc/RubyXL/CT_TransformEffect.html +1 -1
  136. data/rdoc/RubyXL/CT_Vector3D.html +1 -1
  137. data/rdoc/RubyXL/CT_XYAdjustHandle.html +1 -1
  138. data/rdoc/RubyXL/CalculationChain.html +2 -2
  139. data/rdoc/RubyXL/CalculationChainCell.html +1 -1
  140. data/rdoc/RubyXL/CalculationProperties.html +1 -1
  141. data/rdoc/RubyXL/Cell.html +11 -11
  142. data/rdoc/RubyXL/CellSmartTag.html +1 -1
  143. data/rdoc/RubyXL/CellSmartTagProperty.html +1 -1
  144. data/rdoc/RubyXL/CellSmartTags.html +1 -1
  145. data/rdoc/RubyXL/CellStyle.html +1 -1
  146. data/rdoc/RubyXL/CellStyleXFs.html +1 -1
  147. data/rdoc/RubyXL/CellStyles.html +1 -1
  148. data/rdoc/RubyXL/CellValue.html +3 -3
  149. data/rdoc/RubyXL/CellWatch.html +1 -1
  150. data/rdoc/RubyXL/CellWatches.html +1 -1
  151. data/rdoc/RubyXL/CellXFs.html +1 -1
  152. data/rdoc/RubyXL/ChartColorsFile.html +1 -1
  153. data/rdoc/RubyXL/ChartFile.html +1 -1
  154. data/rdoc/RubyXL/ChartRelationshipsFile.html +1 -1
  155. data/rdoc/RubyXL/ChartStyleFile.html +1 -1
  156. data/rdoc/RubyXL/ChartUserShapesFile.html +1 -1
  157. data/rdoc/RubyXL/Chartsheet.html +1 -1
  158. data/rdoc/RubyXL/ChartsheetPageSetup.html +1 -1
  159. data/rdoc/RubyXL/ChartsheetProperties.html +1 -1
  160. data/rdoc/RubyXL/ChartsheetProtection.html +1 -1
  161. data/rdoc/RubyXL/ChartsheetView.html +1 -1
  162. data/rdoc/RubyXL/ChartsheetViews.html +1 -1
  163. data/rdoc/RubyXL/Color.html +3 -3
  164. data/rdoc/RubyXL/ColorFilter.html +1 -1
  165. data/rdoc/RubyXL/ColorScale.html +1 -1
  166. data/rdoc/RubyXL/ColorSet.html +1 -1
  167. data/rdoc/RubyXL/Colors.html +1 -1
  168. data/rdoc/RubyXL/ColumnRange.html +1 -1
  169. data/rdoc/RubyXL/ColumnRanges.html +1 -1
  170. data/rdoc/RubyXL/Comment.html +1 -1
  171. data/rdoc/RubyXL/CommentList.html +1 -1
  172. data/rdoc/RubyXL/CommentsFile.html +1 -1
  173. data/rdoc/RubyXL/ConditionalFormatValue.html +1 -1
  174. data/rdoc/RubyXL/ConditionalFormatting.html +1 -1
  175. data/rdoc/RubyXL/ConditionalFormattingRule.html +1 -1
  176. data/rdoc/RubyXL/ContentTypeDefault.html +1 -1
  177. data/rdoc/RubyXL/ContentTypeOverride.html +1 -1
  178. data/rdoc/RubyXL/ContentTypes.html +30 -51
  179. data/rdoc/RubyXL/ControlPropertiesFile.html +1 -1
  180. data/rdoc/RubyXL/CorePropertiesFile.html +1 -1
  181. data/rdoc/RubyXL/CustomColor.html +1 -1
  182. data/rdoc/RubyXL/CustomColorList.html +1 -1
  183. data/rdoc/RubyXL/CustomFilter.html +1 -1
  184. data/rdoc/RubyXL/CustomFilters.html +1 -1
  185. data/rdoc/RubyXL/CustomGeometry.html +1 -1
  186. data/rdoc/RubyXL/CustomProperties.html +1 -1
  187. data/rdoc/RubyXL/CustomPropertiesFile.html +1 -1
  188. data/rdoc/RubyXL/CustomProperty.html +1 -1
  189. data/rdoc/RubyXL/CustomSheetView.html +1 -1
  190. data/rdoc/RubyXL/CustomSheetViews.html +1 -1
  191. data/rdoc/RubyXL/CustomWorkbookView.html +1 -1
  192. data/rdoc/RubyXL/CustomWorkbookViews.html +1 -1
  193. data/rdoc/RubyXL/CustomXMLFile.html +1 -1
  194. data/rdoc/RubyXL/DXF.html +1 -1
  195. data/rdoc/RubyXL/DXFs.html +1 -1
  196. data/rdoc/RubyXL/DataBar.html +1 -1
  197. data/rdoc/RubyXL/DataConsolidate.html +1 -1
  198. data/rdoc/RubyXL/DataConsolidationReference.html +1 -1
  199. data/rdoc/RubyXL/DataConsolidationReferences.html +1 -1
  200. data/rdoc/RubyXL/DataType.html +1 -1
  201. data/rdoc/RubyXL/DataValidation.html +1 -1
  202. data/rdoc/RubyXL/DataValidations.html +1 -1
  203. data/rdoc/RubyXL/DateGroupItem.html +1 -1
  204. data/rdoc/RubyXL/DefinedName.html +1 -1
  205. data/rdoc/RubyXL/DefinedNames.html +1 -1
  206. data/rdoc/RubyXL/DocumentPropertiesFile.html +9 -9
  207. data/rdoc/RubyXL/DrawingFile.html +2 -2
  208. data/rdoc/RubyXL/DrawingRelationshipsFile.html +1 -1
  209. data/rdoc/RubyXL/DynamicFilter.html +1 -1
  210. data/rdoc/RubyXL/EmbeddedControl.html +1 -1
  211. data/rdoc/RubyXL/EmbeddedControls.html +1 -1
  212. data/rdoc/RubyXL/Extension.html +1 -1
  213. data/rdoc/RubyXL/ExtensionStorageArea.html +1 -1
  214. data/rdoc/RubyXL/Extents.html +1 -1
  215. data/rdoc/RubyXL/ExternalLinksFile.html +1 -1
  216. data/rdoc/RubyXL/ExternalReference.html +1 -1
  217. data/rdoc/RubyXL/ExternalReferences.html +1 -1
  218. data/rdoc/RubyXL/ExtraColorSchemeList.html +1 -1
  219. data/rdoc/RubyXL/FieldItem.html +1 -1
  220. data/rdoc/RubyXL/FileRecoveryProperties.html +1 -1
  221. data/rdoc/RubyXL/FileSharing.html +1 -1
  222. data/rdoc/RubyXL/FileVersion.html +1 -1
  223. data/rdoc/RubyXL/Fill.html +1 -1
  224. data/rdoc/RubyXL/Fills.html +1 -1
  225. data/rdoc/RubyXL/FilterContainer.html +1 -1
  226. data/rdoc/RubyXL/FloatNode.html +1 -1
  227. data/rdoc/RubyXL/FloatValue.html +1 -1
  228. data/rdoc/RubyXL/Font.html +3 -3
  229. data/rdoc/RubyXL/FontScheme.html +1 -1
  230. data/rdoc/RubyXL/Fonts.html +1 -1
  231. data/rdoc/RubyXL/Formula.html +1 -1
  232. data/rdoc/RubyXL/FunctionGroup.html +1 -1
  233. data/rdoc/RubyXL/FunctionGroups.html +1 -1
  234. data/rdoc/RubyXL/GenericStorageObject.html +20 -41
  235. data/rdoc/RubyXL/GradientFill.html +1 -1
  236. data/rdoc/RubyXL/HeaderFooterSettings.html +1 -1
  237. data/rdoc/RubyXL/Hyperlink.html +1 -1
  238. data/rdoc/RubyXL/HyperlinkRelFile.html +1 -1
  239. data/rdoc/RubyXL/Hyperlinks.html +1 -1
  240. data/rdoc/RubyXL/IconFilter.html +1 -1
  241. data/rdoc/RubyXL/IconSet.html +1 -1
  242. data/rdoc/RubyXL/IgnoredError.html +1 -1
  243. data/rdoc/RubyXL/IgnoredErrors.html +1 -1
  244. data/rdoc/RubyXL/IndexedColors.html +1 -1
  245. data/rdoc/RubyXL/InputCells.html +1 -1
  246. data/rdoc/RubyXL/IntegerNode.html +1 -1
  247. data/rdoc/RubyXL/IntegerValue.html +1 -1
  248. data/rdoc/RubyXL/LegacyCell.html +96 -46
  249. data/rdoc/RubyXL/LegacyWorkbook.html +7 -7
  250. data/rdoc/RubyXL/LegacyWorksheet.html +198 -110
  251. data/rdoc/RubyXL/MRUColors.html +1 -1
  252. data/rdoc/RubyXL/MacrosFile.html +1 -1
  253. data/rdoc/RubyXL/MergedCell.html +1 -1
  254. data/rdoc/RubyXL/MergedCells.html +1 -1
  255. data/rdoc/RubyXL/NumFmt.html +1 -1
  256. data/rdoc/RubyXL/NumberFormat.html +2 -2
  257. data/rdoc/RubyXL/NumberFormats.html +1 -1
  258. data/rdoc/RubyXL/OLEObject.html +1 -1
  259. data/rdoc/RubyXL/OLEObjects.html +1 -1
  260. data/rdoc/RubyXL/OLESize.html +1 -1
  261. data/rdoc/RubyXL/OOXMLContainerObject.html +1 -1
  262. data/rdoc/RubyXL/OOXMLObject.html +1 -1
  263. data/rdoc/RubyXL/OOXMLObjectClassMethods.html +13 -13
  264. data/rdoc/RubyXL/OOXMLObjectInstanceMethods.html +1 -1
  265. data/rdoc/RubyXL/OOXMLRelationshipsFile.html +29 -50
  266. data/rdoc/RubyXL/OOXMLTopLevelObject.html +1 -1
  267. data/rdoc/RubyXL/Offset.html +1 -1
  268. data/rdoc/RubyXL/OutlineProperties.html +1 -1
  269. data/rdoc/RubyXL/PageMargins.html +1 -1
  270. data/rdoc/RubyXL/PageSetup.html +1 -1
  271. data/rdoc/RubyXL/PageSetupProperties.html +1 -1
  272. data/rdoc/RubyXL/Pane.html +1 -1
  273. data/rdoc/RubyXL/Parser.html +1 -1
  274. data/rdoc/RubyXL/PatternFill.html +1 -1
  275. data/rdoc/RubyXL/PhoneticProperties.html +1 -1
  276. data/rdoc/RubyXL/PhoneticRun.html +1 -1
  277. data/rdoc/RubyXL/PivotArea.html +1 -1
  278. data/rdoc/RubyXL/PivotCache.html +1 -1
  279. data/rdoc/RubyXL/PivotCacheDefinitionFile.html +1 -1
  280. data/rdoc/RubyXL/PivotCaches.html +1 -1
  281. data/rdoc/RubyXL/PivotReference.html +1 -1
  282. data/rdoc/RubyXL/PivotReferences.html +1 -1
  283. data/rdoc/RubyXL/PivotTableFile.html +1 -1
  284. data/rdoc/RubyXL/PivotTableSelection.html +1 -1
  285. data/rdoc/RubyXL/PresetGeometry.html +1 -1
  286. data/rdoc/RubyXL/PrintOptions.html +1 -1
  287. data/rdoc/RubyXL/PrinterSettingsFile.html +1 -1
  288. data/rdoc/RubyXL/ProtectedRange.html +1 -1
  289. data/rdoc/RubyXL/ProtectedRanges.html +1 -1
  290. data/rdoc/RubyXL/Protection.html +1 -1
  291. data/rdoc/RubyXL/REL_CLASS.html +1 -1
  292. data/rdoc/RubyXL/RID.html +1 -1
  293. data/rdoc/RubyXL/RawOOXML.html +1 -1
  294. data/rdoc/RubyXL/Reference.html +5 -5
  295. data/rdoc/RubyXL/Relationship.html +1 -1
  296. data/rdoc/RubyXL/RelationshipSupport.html +1 -1
  297. data/rdoc/RubyXL/RelationshipSupport/ClassMehods.html +98 -0
  298. data/rdoc/RubyXL/RichText.html +1 -1
  299. data/rdoc/RubyXL/RichTextRun.html +1 -1
  300. data/rdoc/RubyXL/RootRelationships.html +1 -1
  301. data/rdoc/RubyXL/Row.html +1 -1
  302. data/rdoc/RubyXL/RunProperties.html +1 -1
  303. data/rdoc/RubyXL/Scenario.html +1 -1
  304. data/rdoc/RubyXL/Scenarios.html +1 -1
  305. data/rdoc/RubyXL/Selection.html +1 -1
  306. data/rdoc/RubyXL/ShapeGuide.html +1 -1
  307. data/rdoc/RubyXL/ShapeTextRectangle.html +1 -1
  308. data/rdoc/RubyXL/SharedStringsTable.html +2 -2
  309. data/rdoc/RubyXL/Sheet.html +1 -1
  310. data/rdoc/RubyXL/SheetCalculationProperties.html +1 -1
  311. data/rdoc/RubyXL/SheetData.html +1 -1
  312. data/rdoc/RubyXL/SheetRelationshipsFile.html +1 -1
  313. data/rdoc/RubyXL/Sheets.html +1 -1
  314. data/rdoc/RubyXL/SlicerCacheFile.html +1 -1
  315. data/rdoc/RubyXL/SlicerFile.html +1 -1
  316. data/rdoc/RubyXL/SmartTagProperties.html +1 -1
  317. data/rdoc/RubyXL/SmartTagType.html +1 -1
  318. data/rdoc/RubyXL/SmartTagTypes.html +1 -1
  319. data/rdoc/RubyXL/SmartTags.html +1 -1
  320. data/rdoc/RubyXL/SortCondition.html +1 -1
  321. data/rdoc/RubyXL/SortState.html +1 -1
  322. data/rdoc/RubyXL/Sqref.html +2 -2
  323. data/rdoc/RubyXL/Stop.html +1 -1
  324. data/rdoc/RubyXL/StringNode.html +1 -1
  325. data/rdoc/RubyXL/StringNodeW3C.html +1 -1
  326. data/rdoc/RubyXL/StringValue.html +1 -1
  327. data/rdoc/RubyXL/Stylesheet.html +1 -1
  328. data/rdoc/RubyXL/TableFile.html +1 -1
  329. data/rdoc/RubyXL/TableParts.html +1 -1
  330. data/rdoc/RubyXL/TableStyle.html +1 -1
  331. data/rdoc/RubyXL/TableStyles.html +1 -1
  332. data/rdoc/RubyXL/Text.html +4 -4
  333. data/rdoc/RubyXL/Theme.html +1 -1
  334. data/rdoc/RubyXL/ThemeElements.html +1 -1
  335. data/rdoc/RubyXL/ThumbnailFile.html +1 -1
  336. data/rdoc/RubyXL/Top10.html +1 -1
  337. data/rdoc/RubyXL/VMLDrawingFile.html +1 -1
  338. data/rdoc/RubyXL/Variant.html +1 -1
  339. data/rdoc/RubyXL/Vector.html +1 -1
  340. data/rdoc/RubyXL/VectorValue.html +1 -1
  341. data/rdoc/RubyXL/VisualProperties.html +1 -1
  342. data/rdoc/RubyXL/WebPublishObject.html +1 -1
  343. data/rdoc/RubyXL/WebPublishObjects.html +1 -1
  344. data/rdoc/RubyXL/WebPublishingItem.html +1 -1
  345. data/rdoc/RubyXL/WebPublishingItems.html +1 -1
  346. data/rdoc/RubyXL/WebPublishingProperties.html +1 -1
  347. data/rdoc/RubyXL/Workbook.html +1 -1
  348. data/rdoc/RubyXL/WorkbookProperties.html +1 -1
  349. data/rdoc/RubyXL/WorkbookProtection.html +1 -1
  350. data/rdoc/RubyXL/WorkbookRelationships.html +1 -1
  351. data/rdoc/RubyXL/WorkbookRoot.html +6 -52
  352. data/rdoc/RubyXL/WorkbookView.html +1 -1
  353. data/rdoc/RubyXL/WorkbookViews.html +1 -1
  354. data/rdoc/RubyXL/Worksheet.html +1 -1
  355. data/rdoc/RubyXL/WorksheetDimensions.html +1 -1
  356. data/rdoc/RubyXL/WorksheetFormatProperties.html +1 -1
  357. data/rdoc/RubyXL/WorksheetProperties.html +1 -1
  358. data/rdoc/RubyXL/WorksheetProtection.html +1 -1
  359. data/rdoc/RubyXL/WorksheetView.html +1 -1
  360. data/rdoc/RubyXL/WorksheetViews.html +1 -1
  361. data/rdoc/RubyXL/XF.html +1 -1
  362. data/rdoc/created.rid +37 -37
  363. data/rdoc/index.html +2 -2
  364. data/rdoc/js/search_index.js +1 -1
  365. data/rdoc/table_of_contents.html +57 -62
  366. data/rubyXL.gemspec +9 -9
  367. data/spec/lib/cell_spec.rb +15 -23
  368. data/spec/lib/worksheet_spec.rb +40 -164
  369. metadata +82 -93
  370. checksums.yaml +0 -7
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source "http://rubygems.org"
2
2
 
3
3
  # Dependencies required to run this gem.
4
4
  gem "nokogiri", ">= 1.4.4"
5
- gem "rubyzip", ">= 1.0.0" , :require => 'zip'
5
+ gem "rubyzip", ">= 1.1.6" , :require => 'zip'
6
6
 
7
7
  # Development dependencies.
8
8
  group :development do
@@ -114,9 +114,9 @@ Please note: these methods are being phased out in favor of the OOXML object mod
114
114
  ==== Changing Borders
115
115
  # Possible weights: hairline, thin, medium, thick
116
116
  # Possible "directions": top, bottom, left, right, diagonal
117
- worksheet.sheet_data[0][0].change_border_top('thin') # Sets A1 to have a top, thin border
118
- worksheet.change_row_border_left(0, 'hairline') # Sets first row to have a left, hairline border
119
- worksheet.change_column_border_diagonal(0, 'medium') # Sets first column to have diagonal, medium border
117
+ worksheet.sheet_data[0][0].change_border(:top, 'thin') # Sets A1 to have a top, thin border
118
+ worksheet.change_row_border(0, :left, 'hairline') # Sets first row to have a left, hairline border
119
+ worksheet.change_column_border(0, :diagonal, 'medium') # Sets first column to have diagonal, medium border
120
120
 
121
121
  ==== Changing Alignment
122
122
  ===== Horizontal
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.0
1
+ 3.1.2
@@ -1,21 +1,5 @@
1
- require 'rubyXL/objects/relationships'
2
- require 'rubyXL/workbook'
3
- require 'rubyXL/worksheet'
4
- require 'rubyXL/cell'
5
- require 'rubyXL/objects/reference'
6
- require 'rubyXL/objects/column_range'
7
- require 'rubyXL/objects/stylesheet'
8
- require 'rubyXL/objects/shared_strings'
9
- require 'rubyXL/objects/worksheet'
10
- require 'rubyXL/objects/chartsheet'
11
- require 'rubyXL/objects/calculation_chain'
12
- require 'rubyXL/objects/content_types'
13
- require 'rubyXL/objects/theme'
14
- require 'rubyXL/objects/comments'
15
1
  require 'rubyXL/objects/root'
16
- require 'rubyXL/objects/workbook'
17
- require 'rubyXL/objects/document_properties'
18
- require 'rubyXL/objects/storage'
2
+ require 'rubyXL/objects/reference'
19
3
  require 'rubyXL/parser'
20
4
 
21
5
  module RubyXL
@@ -19,10 +19,10 @@ module RubyXL
19
19
  end
20
20
 
21
21
  # changes fill color of cell
22
- def change_fill(rgb='ffffff')
22
+ def change_fill(rgb = 'ffffff')
23
23
  validate_worksheet
24
24
  Color.validate_color(rgb)
25
- self.style_index = workbook.modify_fill(self.style_index,rgb)
25
+ self.style_index = workbook.modify_fill(self.style_index, rgb)
26
26
  end
27
27
 
28
28
  # Changes font name of cell
@@ -120,22 +120,27 @@ module RubyXL
120
120
  end
121
121
 
122
122
  def change_border_top(weight = 'thin')
123
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_border` instead."
123
124
  change_border(:top, weight)
124
125
  end
125
126
 
126
127
  def change_border_left(weight = 'thin')
128
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_border` instead."
127
129
  change_border(:left, weight)
128
130
  end
129
131
 
130
132
  def change_border_right(weight = 'thin')
133
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_border` instead."
131
134
  change_border(:right, weight)
132
135
  end
133
136
 
134
137
  def change_border_bottom(weight = 'thin')
138
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_border` instead."
135
139
  change_border(:bottom, weight)
136
140
  end
137
141
 
138
142
  def change_border_diagonal(weight = 'thin')
143
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_border` instead."
139
144
  change_border(:diagonal, weight)
140
145
  end
141
146
 
@@ -256,6 +261,20 @@ module RubyXL
256
261
  return str
257
262
  end
258
263
 
264
+ # Performs correct modification based on what type of change_type is specified
265
+ def font_switch(change_type, arg)
266
+ case change_type
267
+ when Worksheet::NAME then change_font_name(arg)
268
+ when Worksheet::SIZE then change_font_size(arg)
269
+ when Worksheet::COLOR then change_font_color(arg)
270
+ when Worksheet::ITALICS then change_font_italics(arg)
271
+ when Worksheet::BOLD then change_font_bold(arg)
272
+ when Worksheet::UNDERLINE then change_font_underline(arg)
273
+ when Worksheet::STRIKETHROUGH then change_font_strikethrough(arg)
274
+ else raise 'Invalid change_type'
275
+ end
276
+ end
277
+
259
278
  private
260
279
 
261
280
  def get_border(direction)
@@ -278,7 +297,7 @@ module RubyXL
278
297
 
279
298
  def validate_worksheet()
280
299
  return if @worksheet && @worksheet[row] && @worksheet[row][column] == self
281
- raise "This cell #{self} is not in worksheet #{worksheet}"
300
+ raise "Cell #{self} is not in worksheet #{worksheet}"
282
301
  end
283
302
 
284
303
  def get_cell_xf
@@ -15,6 +15,8 @@ module RubyXL
15
15
  end
16
16
 
17
17
  class ContentTypes < OOXMLTopLevelObject
18
+ SAVE_ORDER = 999 # Must be saved last, so it has time to accumulate overrides from all others.
19
+
18
20
  attr_accessor :owner
19
21
 
20
22
  define_child_node(RubyXL::ContentTypeDefault, :collection => true, :accessor => :defaults)
@@ -31,9 +33,6 @@ module RubyXL
31
33
  self.class.xlsx_path
32
34
  end
33
35
 
34
- def self.save_order
35
- 999 # Must be saved last, so it has time to accumulate overrides from all others.
36
- end
37
36
 
38
37
  def add_override(obj)
39
38
  return unless obj.class.const_defined?(:CONTENT_TYPE)
@@ -1,5 +1,6 @@
1
1
  require 'rubyXL/objects/ooxml_object'
2
2
  require 'rubyXL/objects/container_nodes'
3
+ require 'time'
3
4
 
4
5
  module RubyXL
5
6
 
@@ -394,16 +394,14 @@ module RubyXL
394
394
  # Extension class providing functionality for top-level OOXML objects that are represented by
395
395
  # their own <tt>.xml</tt> files in <tt>.xslx</tt> zip container.
396
396
  class OOXMLTopLevelObject < OOXMLObject
397
+ SAVE_ORDER = 500
398
+
397
399
  # Prototype method. For top-level OOXML object, returns the path at which the current object's XML file
398
400
  # is located within the <tt>.xslx</tt> zip container.
399
401
  def xlsx_path
400
402
  raise 'Subclass responsebility'
401
403
  end
402
404
 
403
- def self.save_order
404
- 500
405
- end
406
-
407
405
  # Sets the list of namespaces on this object to be added when writing out XML. Valid only on top-level objects.
408
406
  # === Parameters
409
407
  # * +namespace_hash+ - Hash of namespaces in the form of <tt>"prefix" => "url"</tt>
@@ -449,32 +447,6 @@ module RubyXL
449
447
  @workbook.root.rels_hash[self.class].index{ |f| f.equal?(self) }.to_i + 1
450
448
  end
451
449
 
452
- def self.define_relationship(klass, accessor = nil)
453
- relationships = obtain_class_variable(:@@ooxml_relationships)
454
- relationships[klass] = accessor
455
- end
456
-
457
- def attach_relationship(rid, rf)
458
- relationships = obtain_class_variable(:@@ooxml_relationships)
459
- klass = rf.class
460
- if relationships.has_key?(klass) then
461
- accessor = relationships[klass]
462
- case accessor
463
- when NilClass then
464
- # Relationship is known, but we don't have a special accessor for it, store as generic
465
- store_relationship(rf)
466
- when false then
467
- # Do nothing, the code will perform attaching on its own
468
- else
469
- container = self.send(accessor)
470
- if container.is_a?(Array) then container << rf
471
- else self.send("#{accessor}=", rf)
472
- end
473
- end
474
- else store_relationship(rf, :unknown)
475
- end
476
- end
477
-
478
450
  end
479
451
 
480
452
  end
@@ -15,6 +15,8 @@ module RubyXL
15
15
  end
16
16
 
17
17
  class OOXMLRelationshipsFile < OOXMLTopLevelObject
18
+ SAVE_ORDER = 0
19
+
18
20
  define_child_node(RubyXL::Relationship, :collection => true, :accessor => :relationships)
19
21
  define_element_name 'Relationships'
20
22
  set_namespaces('http://schemas.openxmlformats.org/package/2006/relationships' => '')
@@ -38,10 +40,6 @@ module RubyXL
38
40
  end
39
41
  protected :add_relationship
40
42
 
41
- def self.save_order
42
- 0
43
- end
44
-
45
43
  def find_by_rid(r_id)
46
44
  relationships.find { |r| r.id == r_id }
47
45
  end
@@ -176,7 +174,20 @@ module RubyXL
176
174
 
177
175
  module RelationshipSupport
178
176
 
177
+ module ClassMehods
178
+ def define_relationship(klass, accessor = nil)
179
+ class_variable_get(:@@ooxml_relationships)[klass] = accessor
180
+ attr_accessor(accessor) if accessor
181
+ end
182
+ end
183
+
184
+ def self.included(klass)
185
+ klass.class_variable_set(:@@ooxml_relationships, {})
186
+ klass.extend RelationshipSupport::ClassMehods
187
+ end
188
+
179
189
  attr_accessor :generic_storage, :relationship_container
190
+
180
191
  def related_objects # Override this method
181
192
  []
182
193
  end
@@ -196,12 +207,6 @@ module RubyXL
196
207
  res
197
208
  end
198
209
 
199
- def store_relationship(related_file, unknown = false)
200
- self.generic_storage ||= []
201
- puts "WARNING: #{self.class} is not aware what to do with #{related_file.class}" if unknown
202
- self.generic_storage << related_file
203
- end
204
-
205
210
  def load_relationships(dir_path, base_file_name = '')
206
211
  self.relationship_container = self.class.const_get(:REL_CLASS).load_relationship_file(dir_path, base_file_name)
207
212
  return if relationship_container.nil?
@@ -211,6 +216,33 @@ module RubyXL
211
216
  }
212
217
  end
213
218
 
219
+ def attach_relationship(rid, rf)
220
+ relationships = self.class.class_variable_get(:@@ooxml_relationships)
221
+ klass = rf.class
222
+ if relationships.has_key?(klass) then
223
+ accessor = relationships[klass]
224
+ case accessor
225
+ when NilClass then
226
+ # Relationship is known, but we don't have a special accessor for it, store as generic
227
+ store_relationship(rf)
228
+ when false then
229
+ # Do nothing, the code will perform attaching on its own
230
+ else
231
+ container = self.send(accessor)
232
+ if container.is_a?(Array) then container << rf
233
+ else self.send("#{accessor}=", rf)
234
+ end
235
+ end
236
+ else store_relationship(rf, :unknown)
237
+ end
238
+ end
239
+
240
+ def store_relationship(related_file, unknown = false)
241
+ self.generic_storage ||= []
242
+ puts "WARNING: #{self.class} is not aware what to do with #{related_file.class}" if unknown
243
+ self.generic_storage << related_file
244
+ end
245
+
214
246
  end
215
247
 
216
248
  end
@@ -1,5 +1,8 @@
1
1
  require 'zip'
2
2
  require 'rubyXL/objects/relationships'
3
+ require 'rubyXL/objects/document_properties'
4
+ require 'rubyXL/objects/content_types'
5
+ require 'rubyXL/objects/workbook'
3
6
 
4
7
  module RubyXL
5
8
 
@@ -14,27 +17,16 @@ module RubyXL
14
17
 
15
18
  include RubyXL::RelationshipSupport
16
19
 
20
+ define_relationship(RubyXL::ThumbnailFile, :thumbnail)
21
+ define_relationship(RubyXL::CorePropertiesFile, :core_properties)
22
+ define_relationship(RubyXL::DocumentPropertiesFile, :document_properties)
23
+ define_relationship(RubyXL::CustomPropertiesFile, :custom_properties)
24
+ define_relationship(RubyXL::Workbook, :workbook)
25
+
17
26
  def related_objects
18
27
  [ content_types, thumbnail, core_properties, document_properties, custom_properties, workbook ]
19
28
  end
20
29
 
21
- # define_relationship(RubyXL::ThumbnailFile, :thumbnail)
22
- # define_relationship(RubyXL::CorePropertiesFile, :core_properties)
23
- # define_relationship(RubyXL::DocumentPropertiesFile, :document_properties)
24
- # define_relationship(RubyXL::CustomPropertiesFile, :custom_properties)
25
- # define_relationship(RubyXL::Workbook, :workbook)
26
-
27
- def attach_relationship(rid, rf)
28
- case rf
29
- when RubyXL::ThumbnailFile then self.thumbnail = rf
30
- when RubyXL::CorePropertiesFile then self.core_properties = rf
31
- when RubyXL::DocumentPropertiesFile then self.document_properties = rf
32
- when RubyXL::CustomPropertiesFile then self.custom_properties = rf
33
- when RubyXL::Workbook then self.workbook = rf
34
- else store_relationship(rf, :unknown)
35
- end
36
- end
37
-
38
30
  def self.default
39
31
  obj = self.new
40
32
  obj.document_properties = RubyXL::DocumentPropertiesFile.new
@@ -56,7 +48,7 @@ module RubyXL
56
48
  self.rels_hash[obj.class] << obj
57
49
  }
58
50
 
59
- self.rels_hash.keys.sort_by{ |c| c.save_order }.each { |klass|
51
+ self.rels_hash.keys.sort_by{ |c| c::SAVE_ORDER }.each { |klass|
60
52
  puts "<-- DEBUG: saving related #{klass} files" if @@debug
61
53
  self.rels_hash[klass].each { |obj|
62
54
  obj.workbook = workbook if obj.respond_to?(:workbook=)
@@ -2,6 +2,7 @@ require 'rubyXL/objects/ooxml_object'
2
2
  require 'rubyXL/objects/simple_types'
3
3
  require 'rubyXL/objects/text'
4
4
  require 'rubyXL/objects/formula'
5
+ require 'rubyXL/cell'
5
6
 
6
7
  module RubyXL
7
8
 
@@ -1,6 +1,7 @@
1
1
  module RubyXL
2
2
 
3
3
  class GenericStorageObject
4
+ SAVE_ORDER = 0
4
5
 
5
6
  attr_accessor :xlsx_path, :data, :workbook, :generic_storage
6
7
 
@@ -11,10 +12,6 @@ module RubyXL
11
12
  @generic_storage = []
12
13
  end
13
14
 
14
- def self.save_order
15
- 0
16
- end
17
-
18
15
  def self.parse_file(dirpath, file_path = nil)
19
16
  file_path ||= self.xlsx_path
20
17
  obj = self.new
@@ -1,6 +1,7 @@
1
1
  require 'rubyXL/objects/ooxml_object'
2
2
  require 'rubyXL/objects/simple_types'
3
3
  require 'rubyXL/objects/container_nodes'
4
+ require 'rubyXL/objects/color'
4
5
 
5
6
  module RubyXL
6
7
 
@@ -1,6 +1,14 @@
1
1
  require 'rubyXL/objects/ooxml_object'
2
+ require 'rubyXL/objects/shared_strings'
3
+ require 'rubyXL/objects/stylesheet'
4
+ require 'rubyXL/objects/theme'
5
+ require 'rubyXL/objects/calculation_chain'
6
+ require 'rubyXL/objects/worksheet'
7
+ require 'rubyXL/objects/chartsheet'
8
+ require 'rubyXL/objects/relationships'
2
9
  require 'rubyXL/objects/simple_types'
3
10
  require 'rubyXL/objects/extensions'
11
+ require 'rubyXL/workbook'
4
12
 
5
13
  module RubyXL
6
14
 
@@ -6,9 +6,11 @@ require 'rubyXL/objects/sheet_common'
6
6
  require 'rubyXL/objects/text'
7
7
  require 'rubyXL/objects/formula'
8
8
  require 'rubyXL/objects/sheet_data'
9
+ require 'rubyXL/objects/column_range'
9
10
  require 'rubyXL/objects/filters'
10
11
  require 'rubyXL/objects/data_validation'
11
12
  require 'rubyXL/objects/comments'
13
+ require 'rubyXL/worksheet'
12
14
 
13
15
  module RubyXL
14
16
 
@@ -159,54 +159,63 @@ module LegacyWorksheet
159
159
  change_row_font(row, Worksheet::STRIKETHROUGH, struckthrough, font)
160
160
  end
161
161
 
162
- def change_row_height(row = 0, height=10)
162
+ def change_row_height(row = 0, height = 10)
163
163
  validate_workbook
164
164
  ensure_cell_exists(row)
165
165
 
166
- if height.to_i.to_s == height.to_s
167
- height = Integer(height)
168
- elsif height.to_f.to_s == height.to_s
169
- height = Float(height)
170
- else
171
- raise 'You must enter a number for the height'
172
- end
173
-
174
- sheet_data.rows[row].ht = height
175
- sheet_data.rows[row].custom_height = true
166
+ c = sheet_data.rows[row]
167
+ c.ht = height
168
+ c.custom_height = true
176
169
  end
177
170
 
178
- def change_row_horizontal_alignment(row = 0,alignment='center')
171
+ def change_row_horizontal_alignment(row = 0, alignment = 'center')
179
172
  validate_workbook
180
173
  validate_nonnegative(row)
181
- change_row_alignment(row,alignment,true)
174
+ change_row_alignment(row, alignment, true)
182
175
  end
183
176
 
184
- def change_row_vertical_alignment(row = 0,alignment='center')
177
+ def change_row_vertical_alignment(row = 0, alignment = 'center')
185
178
  validate_workbook
186
179
  validate_nonnegative(row)
187
- change_row_alignment(row,alignment,false)
180
+ change_row_alignment(row, alignment, false)
188
181
  end
189
182
 
190
183
  def change_row_border_top(row = 0, weight = 'thin')
184
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_row_border` instead."
191
185
  change_row_border(row, :top, weight)
192
186
  end
193
187
 
194
188
  def change_row_border_left(row = 0, weight = 'thin')
189
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_row_border` instead."
195
190
  change_row_border(row, :left, weight)
196
191
  end
197
192
 
198
193
  def change_row_border_right(row = 0, weight = 'thin')
194
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_row_border` instead."
199
195
  change_row_border(row, :right, weight)
200
196
  end
201
197
 
202
198
  def change_row_border_bottom(row = 0, weight = 'thin')
199
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_row_border` instead."
203
200
  change_row_border(row, :bottom, weight)
204
201
  end
205
202
 
206
203
  def change_row_border_diagonal(row = 0, weight = 'thin')
204
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_row_border` instead."
207
205
  change_row_border(row, :diagonal, weight)
208
206
  end
209
207
 
208
+ def change_row_border(row, direction, weight)
209
+ validate_workbook
210
+ ensure_cell_exists(row)
211
+
212
+ sheet_data.rows[row].style_index = @workbook.modify_border(get_row_style(row), direction, weight)
213
+
214
+ sheet_data[row].cells.each { |c|
215
+ c.change_border(direction, weight) unless c.nil?
216
+ }
217
+ end
218
+
210
219
  # Changes font name of column
211
220
  def change_column_font_name(column_index = 0, font_name = 'Verdana')
212
221
  xf = get_col_xf(column_index)
@@ -298,25 +307,42 @@ module LegacyWorksheet
298
307
  end
299
308
 
300
309
  def change_column_border_top(column_index, weight = 'thin')
310
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_column_border` instead."
301
311
  change_column_border(column_index, :top, weight)
302
312
  end
303
313
 
304
314
  def change_column_border_left(column_index, weight = 'thin')
315
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_column_border` instead."
305
316
  change_column_border(column_index, :left, weight)
306
317
  end
307
318
 
308
319
  def change_column_border_right(column_index, weight = 'thin')
320
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_column_border` instead."
309
321
  change_column_border(column_index, :right, weight)
310
322
  end
311
323
 
312
324
  def change_column_border_bottom(column_index, weight = 'thin')
325
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_column_border` instead."
313
326
  change_column_border(column_index, :bottom, weight)
314
327
  end
315
328
 
316
329
  def change_column_border_diagonal(column_index, weight = 'thin')
330
+ warn "[DEPRECATION] `#{__method__}` is deprecated. Please use `change_column_border` instead."
317
331
  change_column_border(column_index, :diagonal, weight)
318
332
  end
319
333
 
334
+ def change_column_border(column_index, direction, weight)
335
+ validate_workbook
336
+ ensure_cell_exists(0, column_index)
337
+
338
+ cols.get_range(column_index).style_index = @workbook.modify_border(get_col_style(column_index), direction, weight)
339
+
340
+ sheet_data.rows.each { |row|
341
+ c = row.cells[column_index]
342
+ c.change_border(direction, weight) unless c.nil?
343
+ }
344
+ end
345
+
320
346
  # merges cells within a rectangular range
321
347
  def merge_cells(row1 = 0, col1 = 0, row2 = 0, col2 = 0)
322
348
  validate_workbook
@@ -741,14 +767,14 @@ module LegacyWorksheet
741
767
  # Helper method to update the row styles array
742
768
  # change_type - NAME or SIZE or COLOR etc
743
769
  # main method to change font, called from each separate font mutator method
744
- def change_row_font(row, change_type, arg, font)
770
+ def change_row_font(row_index, change_type, arg, font)
745
771
  validate_workbook
746
- ensure_cell_exists(row)
747
-
748
- xf = workbook.register_new_font(font, get_row_xf(row))
749
- sheet_data.rows[row].style_index = workbook.register_new_xf(xf, get_row_style(row))
772
+ ensure_cell_exists(row_index)
750
773
 
751
- sheet_data[row].cells.each { |c| font_switch(c, change_type, arg) unless c.nil? }
774
+ xf = workbook.register_new_font(font, get_row_xf(row_index))
775
+ row = sheet_data[row_index]
776
+ row.style_index = workbook.register_new_xf(xf, get_row_style(row_index))
777
+ row.cells.each { |c| c.font_switch(change_type, arg) unless c.nil? }
752
778
  end
753
779
 
754
780
  # Helper method to update the fonts and cell styles array
@@ -758,56 +784,14 @@ module LegacyWorksheet
758
784
  ensure_cell_exists(0, column_index)
759
785
 
760
786
  xf = workbook.register_new_font(font, xf)
761
-
762
787
  cols.get_range(column_index).style_index = workbook.register_new_xf(xf, get_col_style(column_index))
763
788
 
764
789
  sheet_data.rows.each { |row|
765
- c = row[column_index]
766
- font_switch(c, change_type, arg) unless c.nil?
790
+ c = row && row[column_index]
791
+ c.font_switch(change_type, arg) unless c.nil?
767
792
  }
768
793
  end
769
794
 
770
- #performs correct modification based on what type of change_type is specified
771
- def font_switch(c,change_type,arg)
772
- case change_type
773
- when Worksheet::NAME
774
- unless arg.is_a?String
775
- raise 'Not a String'
776
- end
777
- c.change_font_name(arg)
778
- when Worksheet::SIZE
779
- unless arg.is_a?(Integer) || arg.is_a?(Float)
780
- raise 'Not a Number'
781
- end
782
- c.change_font_size(arg)
783
- when Worksheet::COLOR
784
- Color.validate_color(arg)
785
- c.change_font_color(arg)
786
- when Worksheet::ITALICS
787
- unless arg == !!arg
788
- raise 'Not a boolean'
789
- end
790
- c.change_font_italics(arg)
791
- when Worksheet::BOLD
792
- unless arg == !!arg
793
- raise 'Not a boolean'
794
- end
795
- c.change_font_bold(arg)
796
- when Worksheet::UNDERLINE
797
- unless arg == !!arg
798
- raise 'Not a boolean'
799
- end
800
- c.change_font_underline(arg)
801
- when Worksheet::STRIKETHROUGH
802
- unless arg == !!arg
803
- raise 'Not a boolean'
804
- end
805
- c.change_font_strikethrough(arg)
806
- else
807
- raise 'Invalid change_type'
808
- end
809
- end
810
-
811
795
  # Ensures that cell with +row_index+ and +column_index+ exists in
812
796
  # +sheet_data+ arrays, growing them up if necessary.
813
797
  def ensure_cell_exists(row_index, column_index = 0)
@@ -891,29 +875,6 @@ module LegacyWorksheet
891
875
  }
892
876
  end
893
877
 
894
- def change_row_border(row, direction, weight)
895
- validate_workbook
896
- ensure_cell_exists(row)
897
-
898
- sheet_data.rows[row].style_index = @workbook.modify_border(get_row_style(row), direction, weight)
899
-
900
- sheet_data[row].cells.each { |c|
901
- c.change_border(direction, weight) unless c.nil?
902
- }
903
- end
904
-
905
- def change_column_border(column_index, direction, weight)
906
- validate_workbook
907
- ensure_cell_exists(0, column_index)
908
-
909
- cols.get_range(column_index).style_index = @workbook.modify_border(get_col_style(column_index), direction, weight)
910
-
911
- sheet_data.rows.each { |row|
912
- c = row.cells[column_index]
913
- c.change_border(direction, weight) unless c.nil?
914
- }
915
- end
916
-
917
878
  def validate_nonnegative(row_or_col)
918
879
  raise 'Row and Column arguments must be nonnegative' if row_or_col < 0
919
880
  end