Class: Axlsx::Drawing

Inherits:
Object
  • Object
show all
Defined in:
lib/axlsx/drawing/drawing.rb

Overview

Note:

The recommended way to manage drawings is to use the Worksheet.add_chart method.

A Drawing is a canvas for charts. Each worksheet has a single drawing that manages anchors. The anchors reference the charts via graphical frames. This is not a trivial relationship so please do follow the advice in the note. see README for an example of how to create a chart.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(worksheet) ⇒ Drawing

Creates a new Drawing object

Parameters:

  • worksheet (Worksheet)

    The worksheet that owns this drawing



71
72
73
74
75
76
# File 'lib/axlsx/drawing/drawing.rb', line 71

def initialize(worksheet)
  DataTypeValidator.validate "Drawing.worksheet", Worksheet, worksheet
  @worksheet = worksheet
  @worksheet.workbook.drawings << self
  @anchors = SimpleTypedList.new TwoCellAnchor
end

Instance Attribute Details

#anchorsSimpleTypedList (readonly)

A collection of anchors for this drawing only TwoCellAnchors are supported in this version

Returns:



43
44
45
# File 'lib/axlsx/drawing/drawing.rb', line 43

def anchors
  @anchors
end

#chartsArray (readonly)

An array of charts that are associated with this drawing’s anchors

Returns:

  • (Array)


47
48
49
# File 'lib/axlsx/drawing/drawing.rb', line 47

def charts
  @charts
end

#indexInteger (readonly)

The index of this drawing in the owning workbooks’s drawings collection.

Returns:

  • (Integer)


51
52
53
# File 'lib/axlsx/drawing/drawing.rb', line 51

def index
  @index
end

#pnString (readonly)

The part name for this drawing

Returns:

  • (String)


59
60
61
# File 'lib/axlsx/drawing/drawing.rb', line 59

def pn
  @pn
end

#relationshipsRelationships (readonly)

The drawing’s relationships.

Returns:



67
68
69
# File 'lib/axlsx/drawing/drawing.rb', line 67

def relationships
  @relationships
end

#rels_pnString (readonly)

The relational part name for this drawing

Returns:

  • (String)


63
64
65
# File 'lib/axlsx/drawing/drawing.rb', line 63

def rels_pn
  @rels_pn
end

#rIdString (readonly)

The relation reference id for this drawing

Returns:

  • (String)


55
56
57
# File 'lib/axlsx/drawing/drawing.rb', line 55

def rId
  @rId
end

#worksheetWorksheet (readonly)

The worksheet that owns the drawing

Returns:



38
39
40
# File 'lib/axlsx/drawing/drawing.rb', line 38

def worksheet
  @worksheet
end

Instance Method Details

#add_chart(chart_type, options = {}) ⇒ Object

Note:

The recommended way to manage charts is to use Worksheet.add_chart. Please refer to that method for documentation.

Adds a chart to the drawing.



82
83
84
85
# File 'lib/axlsx/drawing/drawing.rb', line 82

def add_chart(chart_type, options={})
  TwoCellAnchor.new(self, chart_type, options)
  @anchors.last.graphic_frame.chart
end

#to_xmlString

Serializes the drawing

Returns:

  • (String)


118
119
120
121
122
123
124
125
# File 'lib/axlsx/drawing/drawing.rb', line 118

def to_xml
  builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
    xml.send('xdr:wsDr', :'xmlns:xdr'=>XML_NS_XDR, :'xmlns:a'=>XML_NS_A) {
      anchors.each {|anchor| anchor.to_xml(xml) }
    }        
  end
  builder.to_xml
end