rubyXL 3.1.0 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
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