axlsx 1.0.13 → 1.0.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/README.md +161 -134
  2. data/examples/example.rb +133 -153
  3. data/lib/axlsx.rb +3 -1
  4. data/lib/axlsx/#cfb.xlsx# +0 -0
  5. data/lib/axlsx/drawing/axis.rb +13 -10
  6. data/lib/axlsx/drawing/bar_3D_chart.rb +19 -11
  7. data/lib/axlsx/drawing/bar_series.rb +1 -1
  8. data/lib/axlsx/drawing/cat_axis.rb +5 -5
  9. data/lib/axlsx/drawing/cat_axis_data.rb +7 -7
  10. data/lib/axlsx/drawing/chart.rb +29 -15
  11. data/lib/axlsx/drawing/drawing.rb +1 -1
  12. data/lib/axlsx/drawing/graphic_frame.rb +10 -10
  13. data/lib/axlsx/drawing/line_3D_chart.rb +15 -7
  14. data/lib/axlsx/drawing/marker.rb +1 -1
  15. data/lib/axlsx/drawing/one_cell_anchor.rb +4 -4
  16. data/lib/axlsx/drawing/pic.rb +14 -14
  17. data/lib/axlsx/drawing/pie_3D_chart.rb +2 -2
  18. data/lib/axlsx/drawing/pie_series.rb +1 -1
  19. data/lib/axlsx/drawing/scaling.rb +5 -5
  20. data/lib/axlsx/drawing/ser_axis.rb +3 -3
  21. data/lib/axlsx/drawing/series.rb +3 -3
  22. data/lib/axlsx/drawing/series_title.rb +7 -7
  23. data/lib/axlsx/drawing/title.rb +13 -9
  24. data/lib/axlsx/drawing/two_cell_anchor.rb +4 -4
  25. data/lib/axlsx/drawing/val_axis.rb +2 -2
  26. data/lib/axlsx/drawing/val_axis_data.rb +7 -9
  27. data/lib/axlsx/drawing/view_3D.rb +7 -7
  28. data/lib/axlsx/package.rb +8 -0
  29. data/lib/axlsx/util/constants.rb +0 -4
  30. data/lib/axlsx/util/ms_off_crypto.rb +88 -0
  31. data/lib/axlsx/util/ms_off_crypto.rb~ +3 -0
  32. data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
  33. data/lib/axlsx/version.rb +1 -1
  34. data/lib/axlsx/workbook/workbook.rb +1 -0
  35. data/lib/axlsx/workbook/worksheet/cell.rb +21 -8
  36. data/lib/axlsx/workbook/worksheet/worksheet.rb +74 -18
  37. data/test/content_type/tc_content_type.rb +81 -0
  38. data/test/content_type/tc_default.rb +40 -0
  39. data/test/content_type/tc_override.rb +40 -0
  40. data/test/doc_props/tc_app.rb +19 -0
  41. data/test/doc_props/tc_core.rb +34 -0
  42. data/test/drawing/tc_axis.rb +40 -0
  43. data/test/drawing/tc_bar_3D_chart.rb +66 -0
  44. data/test/drawing/tc_bar_series.rb +34 -0
  45. data/test/drawing/tc_cat_axis.rb +32 -0
  46. data/test/drawing/tc_cat_axis_data.rb +18 -0
  47. data/test/drawing/tc_chart.rb +73 -0
  48. data/test/drawing/tc_drawing.rb +80 -0
  49. data/test/drawing/tc_graphic_frame.rb +26 -0
  50. data/test/drawing/tc_line_3d_chart.rb +48 -0
  51. data/test/drawing/tc_line_series.rb +27 -0
  52. data/test/drawing/tc_line_series.tc~ +34 -0
  53. data/test/drawing/tc_marker.rb +45 -0
  54. data/test/drawing/tc_one_cell_anchor.rb +67 -0
  55. data/test/drawing/tc_pic.rb +71 -0
  56. data/test/drawing/tc_picture_locking.rb +73 -0
  57. data/test/drawing/tc_picture_locking.rb~ +77 -0
  58. data/test/drawing/tc_pie_3D_chart.rb +33 -0
  59. data/test/drawing/tc_pie_series.rb +35 -0
  60. data/test/drawing/tc_scaling.rb +37 -0
  61. data/test/drawing/tc_ser_axis.rb +31 -0
  62. data/test/drawing/tc_series.rb +24 -0
  63. data/test/drawing/tc_series_title.rb +34 -0
  64. data/test/drawing/tc_title.rb +34 -0
  65. data/test/drawing/tc_two_cell_anchor.rb +38 -0
  66. data/test/drawing/tc_val_axis.rb +25 -0
  67. data/test/drawing/tc_val_axis_data.rb +18 -0
  68. data/test/drawing/tc_view_3D.rb +55 -0
  69. data/test/rels/tc_relationship.rb +16 -0
  70. data/test/rels/tc_relationships.rb +27 -0
  71. data/test/stylesheet/tc_border.rb +38 -0
  72. data/test/stylesheet/tc_border_pr.rb +33 -0
  73. data/test/stylesheet/tc_cell_alignment.rb +77 -0
  74. data/test/stylesheet/tc_cell_protection.rb +30 -0
  75. data/test/stylesheet/tc_cell_style.rb +58 -0
  76. data/test/stylesheet/tc_color.rb +38 -0
  77. data/test/stylesheet/tc_fill.rb +19 -0
  78. data/test/stylesheet/tc_font.rb +114 -0
  79. data/test/stylesheet/tc_gradient_fill.rb +65 -0
  80. data/test/stylesheet/tc_gradient_stop.rb +32 -0
  81. data/test/stylesheet/tc_num_fmt.rb +31 -0
  82. data/test/stylesheet/tc_pattern_fill.rb +38 -0
  83. data/test/stylesheet/tc_styles.rb +52 -0
  84. data/test/stylesheet/tc_table_style.rb +37 -0
  85. data/test/stylesheet/tc_table_style_element.rb +37 -0
  86. data/test/stylesheet/tc_table_styles.rb +30 -0
  87. data/test/stylesheet/tc_xf.rb +121 -0
  88. data/test/tc_package.rb +78 -0
  89. data/test/util/tc_simple_typed_list.rb +66 -0
  90. data/test/util/tc_validators.rb +76 -0
  91. data/test/workbook/tc_workbook.rb +60 -0
  92. data/test/workbook/worksheet/tc_cell.rb +194 -0
  93. data/test/workbook/worksheet/tc_row.rb +36 -0
  94. data/test/workbook/worksheet/tc_worksheet.rb +159 -0
  95. metadata +191 -31
  96. data/lib/axlsx/workbook/#workbook.rb# +0 -165
@@ -1,165 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- module Axlsx
3
-
4
- require 'axlsx/workbook/worksheet/cell.rb'
5
- require 'axlsx/workbook/worksheet/row.rb'
6
- require 'axlsx/workbook/worksheet/worksheet.rb'
7
-
8
- # The Workbook class is an xlsx workbook that manages worksheets, charts, drawings and styles.
9
- # The following parts of the Office Open XML spreadsheet specification are not implimented in this version.
10
- #
11
- # bookViews
12
- # calcPr
13
- # customWorkbookViews
14
- # definedNames
15
- # externalReferences
16
- # extLst
17
- # fileRecoveryPr
18
- # fileSharing
19
- # fileVersion
20
- # functionGroups
21
- # oleSize
22
- # pivotCaches
23
- # smartTagPr
24
- # smartTagTypes
25
- # webPublishing
26
- # webPublishObjects
27
- # workbookProtection
28
- # workbookPr*
29
- #
30
- # *workbookPr is only supported to the extend of date1904
31
- class Workbook
32
-
33
- # A collection of worksheets associated with this workbook.
34
- # @note The recommended way to manage worksheets is add_worksheet
35
- # @see Workbook#add_worksheet
36
- # @see Worksheet
37
- # @return [SimpleTypedList]
38
- attr_reader :worksheets
39
-
40
- # A colllection of charts associated with this workbook
41
- # @note The recommended way to manage charts is Worksheet#add_chart
42
- # @see Worksheet#add_chart
43
- # @see Chart
44
- # @return [SimpleTypedList]
45
- attr_reader :charts
46
-
47
- # A colllection of images associated with this workbook
48
- # @note The recommended way to manage images is Worksheet#add_image
49
- # @see Worksheet#add_image
50
- # @see Pic
51
- # @return [SimpleTypedList]
52
- attr_reader :images
53
-
54
- # A colllection of drawings associated with this workbook
55
- # @note The recommended way to manage drawings is Worksheet#add_chart
56
- # @see Worksheet#add_chart
57
- # @see Drawing
58
- # @return [SimpleTypedList]
59
- attr_reader :drawings
60
-
61
- # The styles associated with this workbook
62
- # @note The recommended way to manage styles is Styles#add_style
63
- # @see Style#add_style
64
- # @see Style
65
- # @return [Styles]
66
- def styles
67
- yield @styles if block_given?
68
- @styles
69
- end
70
-
71
-
72
- # Indicates if the epoc date for serialization should be 1904. If false, 1900 is used.
73
- @@date1904 = false
74
-
75
- # lets come back to this later when we are ready for parsing.
76
- #def self.parse entry
77
- # io = entry.get_input_stream
78
- # w = self.new
79
- # w.parser_xml = Nokogiri::XML(io.read)
80
- # w.parse_string :date1904, "//xmlns:workbookPr/@date1904"
81
- # w
82
- #end
83
-
84
- # Creates a new Workbook
85
- # @option options [Boolean] date1904
86
- def initialize(options={})
87
- @styles = Styles.new
88
- @worksheets = SimpleTypedList.new Worksheet
89
- @drawings = SimpleTypedList.new Drawing
90
- @charts = SimpleTypedList.new Chart
91
- @images = SimpleTypedList.new Pic
92
- self.date1904= options[:date1904] unless options[:date1904].nil?
93
- yield self if block_given?
94
- end
95
-
96
- # Instance level access to the class variable 1904
97
- # @return [Boolean]
98
- def date1904() @@date1904; end
99
-
100
- # see @date1904
101
- def date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
102
-
103
- # Sets the date1904 attribute to the provided boolean
104
- # @return [Boolean]
105
- def self.date1904=(v) Axlsx::validate_boolean v; @@date1904 = v; end
106
-
107
- # retrieves the date1904 attribute
108
- # @return [Boolean]
109
- def self.date1904() @@date1904; end
110
-
111
- # Adds a worksheet to this workbook
112
- # @return [Worksheet]
113
- # @option options [String] name The name of the worksheet.
114
- # @see Worksheet#initialize
115
- def add_worksheet(options={})
116
- worksheet = Worksheet.new(self, options)
117
- yield worksheet if block_given?
118
- worksheet
119
- end
120
-
121
- # The workbook relationships. This is managed automatically by the workbook
122
- # @return [Relationships]
123
- def relationships
124
- r = Relationships.new
125
- @worksheets.each do |sheet|
126
- r << Relationship.new(WORKSHEET_R, WORKSHEET_PN % (r.size+1))
127
- end
128
- r << Relationship.new(STYLES_R, STYLES_PN)
129
- r
130
- end
131
-
132
- # returns a range of cells in a worksheet
133
- # @param [String] cell_def The excel style reference defining the worksheet and cells. The range must specify the sheet to
134
- # retrieve the cells from. e.g. range('Sheet1!A1:B2') will return an array of four cells [A1, A2, B1, B2] while range('Sheet1!A1') will return a single Cell.
135
- # @return [Cell, Array]
136
- def [](cell_def)
137
- sheet_name = cell_def.split('!')[0] if cell_def.match('!')
138
- worksheet = self.worksheets.select { |s| s.name == sheet_name }.first
139
- raise ArgumentError, 'Unknown Sheet' unless sheet_name && worksheet.is_a?(Worksheet)
140
- worksheet[cell_def.gsub(/.+!/,"")]
141
- end
142
-
143
- # Serializes the workbook document
144
- # @return [String]
145
- def to_xml()
146
- add_worksheet unless worksheets.size > 0
147
- builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
148
- xml.workbook(:xmlns => XML_NS, :'xmlns:r' => XML_NS_R) {
149
- xml.workbookPr(:date1904=>@@date1904, :defaultThemeVersion=>"124226")
150
- xml.bookViews {
151
- xml.workbookView(:xWindow=>"420", :yWindow=>"405", :windowWidth=>"24480", :windowHeight=>"9885")
152
- }
153
- xml.sheets {
154
- @worksheets.each_with_index do |sheet, index|
155
- xml.sheet(:name=>sheet.name, :sheetId=>index+1, :"r:id"=>sheet.rId)
156
- end
157
- }
158
- xml.calcPr(:calcId=>"124519")
159
- xml.fileRecoveryPr(:repairLoad=>"1")
160
- }
161
- end
162
- builder.to_xml
163
- end
164
- end
165
- end