caxlsx 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (305) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +239 -0
  5. data/LICENSE +22 -0
  6. data/README.md +256 -0
  7. data/Rakefile +31 -0
  8. data/examples/2010_comments.rb +17 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +16 -0
  11. data/examples/basic_charts.rb +58 -0
  12. data/examples/chart_colors.rb +88 -0
  13. data/examples/colored_links.rb +59 -0
  14. data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
  15. data/examples/conditional_formatting/getting_barred.rb +37 -0
  16. data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
  17. data/examples/conditional_formatting/scaled_colors.rb +39 -0
  18. data/examples/conditional_formatting/stop_and_go.rb +37 -0
  19. data/examples/data_validation.rb +50 -0
  20. data/examples/example.rb +777 -0
  21. data/examples/extractive.rb +45 -0
  22. data/examples/image1.jpeg +0 -0
  23. data/examples/ios_preview.rb +14 -0
  24. data/examples/page_setup.rb +11 -0
  25. data/examples/pivot_table.rb +39 -0
  26. data/examples/sheet_protection.rb +10 -0
  27. data/examples/skydrive/real_example.rb +63 -0
  28. data/examples/styles.rb +66 -0
  29. data/examples/underline.rb +13 -0
  30. data/examples/wrap_text.rb +21 -0
  31. data/lib/axlsx.rb +152 -0
  32. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  33. data/lib/axlsx/content_type/content_type.rb +26 -0
  34. data/lib/axlsx/content_type/default.rb +25 -0
  35. data/lib/axlsx/content_type/override.rb +25 -0
  36. data/lib/axlsx/doc_props/app.rb +235 -0
  37. data/lib/axlsx/doc_props/core.rb +39 -0
  38. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  39. data/lib/axlsx/drawing/axes.rb +61 -0
  40. data/lib/axlsx/drawing/axis.rb +187 -0
  41. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  42. data/lib/axlsx/drawing/bar_series.rb +82 -0
  43. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  44. data/lib/axlsx/drawing/chart.rb +232 -0
  45. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  46. data/lib/axlsx/drawing/drawing.rb +162 -0
  47. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  48. data/lib/axlsx/drawing/hyperlink.rb +102 -0
  49. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  50. data/lib/axlsx/drawing/line_chart.rb +99 -0
  51. data/lib/axlsx/drawing/line_series.rb +81 -0
  52. data/lib/axlsx/drawing/marker.rb +84 -0
  53. data/lib/axlsx/drawing/num_data.rb +52 -0
  54. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  55. data/lib/axlsx/drawing/num_val.rb +32 -0
  56. data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
  57. data/lib/axlsx/drawing/pic.rb +205 -0
  58. data/lib/axlsx/drawing/picture_locking.rb +44 -0
  59. data/lib/axlsx/drawing/pie_3D_chart.rb +48 -0
  60. data/lib/axlsx/drawing/pie_series.rb +74 -0
  61. data/lib/axlsx/drawing/scaling.rb +60 -0
  62. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  63. data/lib/axlsx/drawing/scatter_series.rb +65 -0
  64. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  65. data/lib/axlsx/drawing/series.rb +69 -0
  66. data/lib/axlsx/drawing/series_title.rb +23 -0
  67. data/lib/axlsx/drawing/str_data.rb +42 -0
  68. data/lib/axlsx/drawing/str_val.rb +32 -0
  69. data/lib/axlsx/drawing/title.rb +78 -0
  70. data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
  71. data/lib/axlsx/drawing/val_axis.rb +37 -0
  72. data/lib/axlsx/drawing/view_3D.rb +115 -0
  73. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  74. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  75. data/lib/axlsx/package.rb +352 -0
  76. data/lib/axlsx/rels/relationship.rb +129 -0
  77. data/lib/axlsx/rels/relationships.rb +29 -0
  78. data/lib/axlsx/stylesheet/border.rb +71 -0
  79. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  80. data/lib/axlsx/stylesheet/cell_alignment.rb +134 -0
  81. data/lib/axlsx/stylesheet/cell_protection.rb +43 -0
  82. data/lib/axlsx/stylesheet/cell_style.rb +74 -0
  83. data/lib/axlsx/stylesheet/color.rb +78 -0
  84. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  85. data/lib/axlsx/stylesheet/fill.rb +35 -0
  86. data/lib/axlsx/stylesheet/font.rb +148 -0
  87. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  88. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  89. data/lib/axlsx/stylesheet/num_fmt.rb +79 -0
  90. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  91. data/lib/axlsx/stylesheet/styles.rb +420 -0
  92. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  93. data/lib/axlsx/stylesheet/table_style_element.rb +79 -0
  94. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  95. data/lib/axlsx/stylesheet/xf.rb +147 -0
  96. data/lib/axlsx/util/accessors.rb +64 -0
  97. data/lib/axlsx/util/constants.rb +392 -0
  98. data/lib/axlsx/util/options_parser.rb +15 -0
  99. data/lib/axlsx/util/parser.rb +44 -0
  100. data/lib/axlsx/util/serialized_attributes.rb +79 -0
  101. data/lib/axlsx/util/simple_typed_list.rb +203 -0
  102. data/lib/axlsx/util/storage.rb +146 -0
  103. data/lib/axlsx/util/validators.rb +300 -0
  104. data/lib/axlsx/version.rb +5 -0
  105. data/lib/axlsx/workbook/defined_name.rb +129 -0
  106. data/lib/axlsx/workbook/defined_names.rb +21 -0
  107. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  108. data/lib/axlsx/workbook/workbook.rb +354 -0
  109. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  110. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  111. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +246 -0
  112. data/lib/axlsx/workbook/worksheet/break.rb +37 -0
  113. data/lib/axlsx/workbook/worksheet/cell.rb +416 -0
  114. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +144 -0
  115. data/lib/axlsx/workbook/worksheet/cfvo.rb +62 -0
  116. data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
  117. data/lib/axlsx/workbook/worksheet/col.rb +144 -0
  118. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  119. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  120. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  121. data/lib/axlsx/workbook/worksheet/comment.rb +92 -0
  122. data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
  123. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  124. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  125. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  126. data/lib/axlsx/workbook/worksheet/data_bar.rb +131 -0
  127. data/lib/axlsx/workbook/worksheet/data_validation.rb +244 -0
  128. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  129. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  130. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  131. data/lib/axlsx/workbook/worksheet/header_footer.rb +54 -0
  132. data/lib/axlsx/workbook/worksheet/icon_set.rb +83 -0
  133. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  134. data/lib/axlsx/workbook/worksheet/page_margins.rb +99 -0
  135. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  136. data/lib/axlsx/workbook/worksheet/page_setup.rb +242 -0
  137. data/lib/axlsx/workbook/worksheet/pane.rb +141 -0
  138. data/lib/axlsx/workbook/worksheet/pivot_table.rb +273 -0
  139. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  140. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  141. data/lib/axlsx/workbook/worksheet/print_options.rb +41 -0
  142. data/lib/axlsx/workbook/worksheet/protected_range.rb +49 -0
  143. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  144. data/lib/axlsx/workbook/worksheet/row.rb +172 -0
  145. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  146. data/lib/axlsx/workbook/worksheet/selection.rb +103 -0
  147. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  148. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
  149. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  150. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
  151. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +120 -0
  152. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  153. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  154. data/lib/axlsx/workbook/worksheet/table_style_info.rb +51 -0
  155. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  156. data/lib/axlsx/workbook/worksheet/worksheet.rb +769 -0
  157. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  158. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  159. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  160. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  161. data/lib/schema/dc.xsd +118 -0
  162. data/lib/schema/dcmitype.xsd +52 -0
  163. data/lib/schema/dcterms.xsd +331 -0
  164. data/lib/schema/dml-chart.xsd +1499 -0
  165. data/lib/schema/dml-chartDrawing.xsd +146 -0
  166. data/lib/schema/dml-compatibility.xsd +14 -0
  167. data/lib/schema/dml-diagram.xsd +1091 -0
  168. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  169. data/lib/schema/dml-main.xsd +3048 -0
  170. data/lib/schema/dml-picture.xsd +23 -0
  171. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  172. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  173. data/lib/schema/opc-contentTypes.xsd +42 -0
  174. data/lib/schema/opc-coreProperties.xsd +54 -0
  175. data/lib/schema/opc-digSig.xsd +49 -0
  176. data/lib/schema/opc-relationships.xsd +33 -0
  177. data/lib/schema/pml.xsd +1676 -0
  178. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  179. data/lib/schema/shared-bibliography.xsd +144 -0
  180. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  181. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  182. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  183. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  184. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  185. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  186. data/lib/schema/shared-math.xsd +582 -0
  187. data/lib/schema/shared-relationshipReference.xsd +25 -0
  188. data/lib/schema/sml.xsd +4434 -0
  189. data/lib/schema/vml-main.xsd +569 -0
  190. data/lib/schema/vml-officeDrawing.xsd +509 -0
  191. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  192. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  193. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  194. data/lib/schema/wml.xsd +3644 -0
  195. data/lib/schema/xml.xsd +116 -0
  196. data/test/benchmark.rb +72 -0
  197. data/test/content_type/tc_content_type.rb +76 -0
  198. data/test/content_type/tc_default.rb +16 -0
  199. data/test/content_type/tc_override.rb +14 -0
  200. data/test/doc_props/tc_app.rb +43 -0
  201. data/test/doc_props/tc_core.rb +42 -0
  202. data/test/drawing/tc_axes.rb +8 -0
  203. data/test/drawing/tc_axis.rb +85 -0
  204. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  205. data/test/drawing/tc_bar_series.rb +37 -0
  206. data/test/drawing/tc_cat_axis.rb +31 -0
  207. data/test/drawing/tc_cat_axis_data.rb +27 -0
  208. data/test/drawing/tc_chart.rb +110 -0
  209. data/test/drawing/tc_d_lbls.rb +57 -0
  210. data/test/drawing/tc_data_source.rb +17 -0
  211. data/test/drawing/tc_drawing.rb +80 -0
  212. data/test/drawing/tc_graphic_frame.rb +27 -0
  213. data/test/drawing/tc_hyperlink.rb +64 -0
  214. data/test/drawing/tc_line_3d_chart.rb +47 -0
  215. data/test/drawing/tc_line_chart.rb +39 -0
  216. data/test/drawing/tc_line_series.rb +30 -0
  217. data/test/drawing/tc_marker.rb +44 -0
  218. data/test/drawing/tc_named_axis_data.rb +27 -0
  219. data/test/drawing/tc_num_data.rb +31 -0
  220. data/test/drawing/tc_num_val.rb +29 -0
  221. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  222. data/test/drawing/tc_pic.rb +107 -0
  223. data/test/drawing/tc_picture_locking.rb +72 -0
  224. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  225. data/test/drawing/tc_pie_series.rb +32 -0
  226. data/test/drawing/tc_scaling.rb +36 -0
  227. data/test/drawing/tc_scatter_chart.rb +48 -0
  228. data/test/drawing/tc_scatter_series.rb +21 -0
  229. data/test/drawing/tc_ser_axis.rb +31 -0
  230. data/test/drawing/tc_series.rb +23 -0
  231. data/test/drawing/tc_series_title.rb +33 -0
  232. data/test/drawing/tc_str_data.rb +18 -0
  233. data/test/drawing/tc_str_val.rb +21 -0
  234. data/test/drawing/tc_title.rb +49 -0
  235. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  236. data/test/drawing/tc_val_axis.rb +24 -0
  237. data/test/drawing/tc_view_3D.rb +54 -0
  238. data/test/drawing/tc_vml_drawing.rb +25 -0
  239. data/test/drawing/tc_vml_shape.rb +106 -0
  240. data/test/profile.rb +24 -0
  241. data/test/rels/tc_relationship.rb +44 -0
  242. data/test/rels/tc_relationships.rb +37 -0
  243. data/test/stylesheet/tc_border.rb +37 -0
  244. data/test/stylesheet/tc_border_pr.rb +32 -0
  245. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  246. data/test/stylesheet/tc_cell_protection.rb +29 -0
  247. data/test/stylesheet/tc_cell_style.rb +57 -0
  248. data/test/stylesheet/tc_color.rb +43 -0
  249. data/test/stylesheet/tc_dxf.rb +81 -0
  250. data/test/stylesheet/tc_fill.rb +18 -0
  251. data/test/stylesheet/tc_font.rb +121 -0
  252. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  253. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  254. data/test/stylesheet/tc_num_fmt.rb +30 -0
  255. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  256. data/test/stylesheet/tc_styles.rb +235 -0
  257. data/test/stylesheet/tc_table_style.rb +44 -0
  258. data/test/stylesheet/tc_table_style_element.rb +45 -0
  259. data/test/stylesheet/tc_table_styles.rb +29 -0
  260. data/test/stylesheet/tc_xf.rb +120 -0
  261. data/test/tc_axlsx.rb +72 -0
  262. data/test/tc_helper.rb +10 -0
  263. data/test/tc_package.rb +227 -0
  264. data/test/util/tc_serialized_attributes.rb +19 -0
  265. data/test/util/tc_simple_typed_list.rb +78 -0
  266. data/test/util/tc_validators.rb +186 -0
  267. data/test/workbook/tc_defined_name.rb +41 -0
  268. data/test/workbook/tc_shared_strings_table.rb +44 -0
  269. data/test/workbook/tc_workbook.rb +125 -0
  270. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  271. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  272. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  273. data/test/workbook/worksheet/tc_break.rb +49 -0
  274. data/test/workbook/worksheet/tc_cell.rb +319 -0
  275. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  276. data/test/workbook/worksheet/tc_col.rb +78 -0
  277. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  278. data/test/workbook/worksheet/tc_comment.rb +72 -0
  279. data/test/workbook/worksheet/tc_comments.rb +57 -0
  280. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  281. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  282. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  283. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  284. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  285. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  286. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  287. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  288. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  289. data/test/workbook/worksheet/tc_pane.rb +54 -0
  290. data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
  291. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  292. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  293. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  294. data/test/workbook/worksheet/tc_row.rb +117 -0
  295. data/test/workbook/worksheet/tc_selection.rb +55 -0
  296. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  297. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  298. data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
  299. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  300. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  301. data/test/workbook/worksheet/tc_table.rb +68 -0
  302. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  303. data/test/workbook/worksheet/tc_worksheet.rb +538 -0
  304. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  305. metadata +546 -0
@@ -0,0 +1,54 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # A single table style definition and is a collection for tableStyleElements
4
+ # @note Table are not supported in this version and only the defaults required for a valid workbook are created.
5
+ class TableStyle < SimpleTypedList
6
+
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+
10
+ # creates a new TableStyle object
11
+ # @raise [ArgumentError] if name option is not provided.
12
+ # @param [String] name
13
+ # @option options [Boolean] pivot
14
+ # @option options [Boolean] table
15
+ def initialize(name, options={})
16
+ self.name = name
17
+ parse_options options
18
+ super TableStyleElement
19
+ end
20
+
21
+ serializable_attributes :name, :pivot, :table
22
+
23
+ # The name of this table style
24
+ # @return [string]
25
+ attr_reader :name
26
+
27
+ # indicates if this style should be applied to pivot tables
28
+ # @return [Boolean]
29
+ attr_reader :pivot
30
+
31
+ # indicates if this style should be applied to tables
32
+ # @return [Boolean]
33
+ attr_reader :table
34
+
35
+ # @see name
36
+ def name=(v) Axlsx::validate_string v; @name=v end
37
+ # @see pivot
38
+ def pivot=(v) Axlsx::validate_boolean v; @pivot=v end
39
+ # @see table
40
+ def table=(v) Axlsx::validate_boolean v; @table=v end
41
+
42
+ # Serializes the object
43
+ # @param [String] str
44
+ # @return [String]
45
+ def to_xml_string(str = '')
46
+ str << '<tableStyle '
47
+ serialized_attributes str, {:count => self.size}
48
+ str << '>'
49
+ each { |table_style_el| table_style_el.to_xml_string(str) }
50
+ str << '</tableStyle>'
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,79 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # an element of style that belongs to a table style.
4
+ # @note tables and table styles are not supported in this version. This class exists in preparation for that support.
5
+ class TableStyleElement
6
+
7
+ include Axlsx::OptionsParser
8
+ include Axlsx::SerializedAttributes
9
+
10
+ # creates a new TableStyleElement object
11
+ # @option options [Symbol] type
12
+ # @option options [Integer] size
13
+ # @option options [Integer] dxfId
14
+ def initialize(options={})
15
+ parse_options options
16
+ end
17
+
18
+ serializable_attributes :type, :size, :dxfId
19
+
20
+ # The type of style element. The following type are allowed
21
+ # :wholeTable
22
+ # :headerRow
23
+ # :totalRow
24
+ # :firstColumn
25
+ # :lastColumn
26
+ # :firstRowStripe
27
+ # :secondRowStripe
28
+ # :firstColumnStripe
29
+ # :secondColumnStripe
30
+ # :firstHeaderCell
31
+ # :lastHeaderCell
32
+ # :firstTotalCell
33
+ # :lastTotalCell
34
+ # :firstSubtotalColumn
35
+ # :secondSubtotalColumn
36
+ # :thirdSubtotalColumn
37
+ # :firstSubtotalRow
38
+ # :secondSubtotalRow
39
+ # :thirdSubtotalRow
40
+ # :blankRow
41
+ # :firstColumnSubheading
42
+ # :secondColumnSubheading
43
+ # :thirdColumnSubheading
44
+ # :firstRowSubheading
45
+ # :secondRowSubheading
46
+ # :thirdRowSubheading
47
+ # :pageFieldLabels
48
+ # :pageFieldValues
49
+ # @return [Symbol]
50
+ attr_reader :type
51
+
52
+ # Number of rows or columns used in striping when the type is firstRowStripe, secondRowStripe, firstColumnStripe, or secondColumnStripe.
53
+ # @return [Integer]
54
+ attr_reader :size
55
+
56
+ # The dxfId this style element points to
57
+ # @return [Integer]
58
+ attr_reader :dxfId
59
+
60
+ # @see type
61
+ def type=(v) Axlsx::validate_table_element_type v; @type = v end
62
+
63
+ # @see size
64
+ def size=(v) Axlsx::validate_unsigned_int v; @size = v end
65
+
66
+ # @see dxfId
67
+ def dxfId=(v) Axlsx::validate_unsigned_int v; @dxfId = v end
68
+
69
+ # Serializes the object
70
+ # @param [String] str
71
+ # @return [String]
72
+ def to_xml_string(str = '')
73
+ str << '<tableStyleElement '
74
+ serialized_attributes str
75
+ str << '/>'
76
+ end
77
+
78
+ end
79
+ end
@@ -0,0 +1,46 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # TableStyles represents a collection of style definitions for table styles and pivot table styles.
4
+ # @note Support for custom table styles does not exist in this version. Many of the classes required are defined in preparation for future release. Please do not attempt to add custom table styles.
5
+ class TableStyles < SimpleTypedList
6
+
7
+ include Axlsx::SerializedAttributes
8
+
9
+ # Creates a new TableStyles object that is a container for TableStyle objects
10
+ # @option options [String] defaultTableStyle
11
+ # @option options [String] defaultPivotStyle
12
+ def initialize(options={})
13
+ @defaultTableStyle = options[:defaultTableStyle] || "TableStyleMedium9"
14
+ @defaultPivotStyle = options[:defaultPivotStyle] || "PivotStyleLight16"
15
+ super TableStyle
16
+ end
17
+
18
+ serializable_attributes :defaultTableStyle, :defaultPivotStyle
19
+
20
+ # The default table style. The default value is 'TableStyleMedium9'
21
+ # @return [String]
22
+ attr_reader :defaultTableStyle
23
+
24
+ # The default pivot table style. The default value is 'PivotStyleLight6'
25
+ # @return [String]
26
+ attr_reader :defaultPivotStyle
27
+
28
+ # @see defaultTableStyle
29
+ def defaultTableStyle=(v) Axlsx::validate_string(v); @defaultTableStyle = v; end
30
+ # @see defaultPivotStyle
31
+ def defaultPivotStyle=(v) Axlsx::validate_string(v); @defaultPivotStyle = v; end
32
+
33
+ # Serializes the object
34
+ # @param [String] str
35
+ # @return [String]
36
+ def to_xml_string(str = '')
37
+ str << '<tableStyles '
38
+ serialized_attributes str, {:count => self.size }
39
+ str << '>'
40
+ each { |table_style| table_style.to_xml_string(str) }
41
+ str << '</tableStyles>'
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,147 @@
1
+ # encoding: UTF-8
2
+ module Axlsx
3
+ # The Xf class defines a formatting record for use in Styles. The recommended way to manage styles for your workbook is with Styles#add_style
4
+ # @see Styles#add_style
5
+ class Xf
6
+ #does not support extList (ExtensionList)
7
+
8
+ include Axlsx::SerializedAttributes
9
+ include Axlsx::OptionsParser
10
+ # Creates a new Xf object
11
+ # @option options [Integer] numFmtId
12
+ # @option options [Integer] fontId
13
+ # @option options [Integer] fillId
14
+ # @option options [Integer] borderId
15
+ # @option options [Integer] xfId
16
+ # @option options [Boolean] quotePrefix
17
+ # @option options [Boolean] pivotButton
18
+ # @option options [Boolean] applyNumberFormat
19
+ # @option options [Boolean] applyFont
20
+ # @option options [Boolean] applyFill
21
+ # @option options [Boolean] applyBorder
22
+ # @option options [Boolean] applyAlignment
23
+ # @option options [Boolean] applyProtection
24
+ # @option options [CellAlignment] alignment
25
+ # @option options [CellProtection] protection
26
+ def initialize(options={})
27
+ parse_options options
28
+ end
29
+
30
+ serializable_attributes :numFmtId, :fontId, :fillId, :borderId, :xfId, :quotePrefix,
31
+ :pivotButton, :applyNumberFormat, :applyFont, :applyFill, :applyBorder, :applyAlignment,
32
+ :applyProtection
33
+
34
+ # The cell alignment for this style
35
+ # @return [CellAlignment]
36
+ # @see CellAlignment
37
+ attr_reader :alignment
38
+
39
+ # The cell protection for this style
40
+ # @return [CellProtection]
41
+ # @see CellProtection
42
+ attr_reader :protection
43
+
44
+ # id of the numFmt to apply to this style
45
+ # @return [Integer]
46
+ attr_reader :numFmtId
47
+
48
+ # index (0 based) of the font to be used in this style
49
+ # @return [Integer]
50
+ attr_reader :fontId
51
+
52
+ # index (0 based) of the fill to be used in this style
53
+ # @return [Integer]
54
+ attr_reader :fillId
55
+
56
+ # index (0 based) of the border to be used in this style
57
+ # @return [Integer]
58
+ attr_reader :borderId
59
+
60
+ # index (0 based) of cellStylesXfs item to be used in this style. Only applies to cellXfs items
61
+ # @return [Integer]
62
+ attr_reader :xfId
63
+
64
+ # indecates if text should be prefixed by a single quote in the cell
65
+ # @return [Boolean]
66
+ attr_reader :quotePrefix
67
+
68
+ # indicates if the cell has a pivot table drop down button
69
+ # @return [Boolean]
70
+ attr_reader :pivotButton
71
+
72
+ # indicates if the numFmtId should be applied
73
+ # @return [Boolean]
74
+ attr_reader :applyNumberFormat
75
+
76
+ # indicates if the fontId should be applied
77
+ # @return [Boolean]
78
+ attr_reader :applyFont
79
+
80
+ # indicates if the fillId should be applied
81
+ # @return [Boolean]
82
+ attr_reader :applyFill
83
+
84
+ # indicates if the borderId should be applied
85
+ # @return [Boolean]
86
+ attr_reader :applyBorder
87
+
88
+ # Indicates if the alignment options should be applied
89
+ # @return [Boolean]
90
+ attr_reader :applyAlignment
91
+
92
+ # Indicates if the protection options should be applied
93
+ # @return [Boolean]
94
+ attr_reader :applyProtection
95
+
96
+ # @see Xf#alignment
97
+ def alignment=(v) DataTypeValidator.validate "Xf.alignment", CellAlignment, v; @alignment = v end
98
+
99
+ # @see protection
100
+ def protection=(v) DataTypeValidator.validate "Xf.protection", CellProtection, v; @protection = v end
101
+
102
+ # @see numFmtId
103
+ def numFmtId=(v) Axlsx::validate_unsigned_int v; @numFmtId = v end
104
+
105
+ # @see fontId
106
+ def fontId=(v) Axlsx::validate_unsigned_int v; @fontId = v end
107
+ # @see fillId
108
+ def fillId=(v) Axlsx::validate_unsigned_int v; @fillId = v end
109
+ # @see borderId
110
+ def borderId=(v) Axlsx::validate_unsigned_int v; @borderId = v end
111
+ # @see xfId
112
+ def xfId=(v) Axlsx::validate_unsigned_int v; @xfId = v end
113
+ # @see quotePrefix
114
+ def quotePrefix=(v) Axlsx::validate_boolean v; @quotePrefix = v end
115
+ # @see pivotButton
116
+ def pivotButton=(v) Axlsx::validate_boolean v; @pivotButton = v end
117
+ # @see applyNumberFormat
118
+ def applyNumberFormat=(v) Axlsx::validate_boolean v; @applyNumberFormat = v end
119
+ # @see applyFont
120
+ def applyFont=(v) Axlsx::validate_boolean v; @applyFont = v end
121
+ # @see applyFill
122
+ def applyFill=(v) Axlsx::validate_boolean v; @applyFill = v end
123
+
124
+ # @see applyBorder
125
+ def applyBorder=(v) Axlsx::validate_boolean v; @applyBorder = v end
126
+
127
+ # @see applyAlignment
128
+ def applyAlignment=(v) Axlsx::validate_boolean v; @applyAlignment = v end
129
+
130
+ # @see applyProtection
131
+ def applyProtection=(v) Axlsx::validate_boolean v; @applyProtection = v end
132
+
133
+ # Serializes the object
134
+ # @param [String] str
135
+ # @return [String]
136
+ def to_xml_string(str = '')
137
+ str << '<xf '
138
+ serialized_attributes str
139
+ str << '>'
140
+ alignment.to_xml_string(str) if self.alignment
141
+ protection.to_xml_string(str) if self.protection
142
+ str << '</xf>'
143
+ end
144
+
145
+
146
+ end
147
+ end
@@ -0,0 +1,64 @@
1
+ module Axlsx
2
+ # This module defines some of the more common validating attribute
3
+ # accessors that we use in Axlsx
4
+ #
5
+ # When this module is included in your class you can simply call
6
+ #
7
+ # string_attr_access :foo
8
+ #
9
+ # To generate a new, validating set of accessors for foo.
10
+ module Accessors
11
+ def self.included(base)
12
+ base.send :extend, ClassMethods
13
+ end
14
+
15
+ # Defines the class level xxx_attr_accessor methods
16
+ module ClassMethods
17
+
18
+ # Creates one or more string validated attr_accessors
19
+ # @param [Array] symbols An array of symbols representing the
20
+ # names of the attributes you will add to your class.
21
+ def string_attr_accessor(*symbols)
22
+ validated_attr_accessor(symbols, 'validate_string')
23
+ end
24
+
25
+
26
+ # Creates one or more usigned integer attr_accessors
27
+ # @param [Array] symbols An array of symbols representing the
28
+ # names of the attributes you will add to your class
29
+ def unsigned_int_attr_accessor(*symbols)
30
+ validated_attr_accessor(symbols, 'validate_unsigned_int')
31
+ end
32
+
33
+ # Creates one or more float (double?) attr_accessors
34
+ # @param [Array] symbols An array of symbols representing the
35
+ # names of the attributes you will add to your class
36
+ def float_attr_accessor(*symbols)
37
+ validated_attr_accessor(symbols, 'validate_float')
38
+ end
39
+
40
+ # Creates on or more boolean validated attr_accessors
41
+ # @param [Array] symbols An array of symbols representing the
42
+ # names of the attributes you will add to your class.
43
+ def boolean_attr_accessor(*symbols)
44
+ validated_attr_accessor(symbols, 'validate_boolean')
45
+ end
46
+
47
+ # Template for defining validated write accessors
48
+ SETTER = "def %s=(value) Axlsx::%s(value); @%s = value; end"
49
+
50
+ # Creates the reader and writer access methods
51
+ # @param [Array] symbols The names of the attributes to create
52
+ # @param [String] validator The axlsx validation method to use when
53
+ # validating assignation.
54
+ # @see lib/axlsx/util/validators.rb
55
+ def validated_attr_accessor(symbols, validator)
56
+ symbols.each do |symbol|
57
+ attr_reader symbol
58
+ module_eval(SETTER % [symbol.to_s, validator, symbol.to_s], __FILE__, __LINE__)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+
@@ -0,0 +1,392 @@
1
+ module Axlsx
2
+
3
+ # XML Encoding
4
+ ENCODING = "UTF-8"
5
+
6
+ # spreadsheetML namespace
7
+ XML_NS = "http://schemas.openxmlformats.org/spreadsheetml/2006/main"
8
+
9
+ # content-types namespace
10
+ XML_NS_T = "http://schemas.openxmlformats.org/package/2006/content-types"
11
+
12
+ # extended-properties namespace
13
+ APP_NS = "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
14
+
15
+ # doc props namespace
16
+ APP_NS_VT = "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"
17
+
18
+ # core properties namespace
19
+ CORE_NS = "http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
20
+
21
+ # dc elements (core) namespace
22
+ CORE_NS_DC = "http://purl.org/dc/elements/1.1/"
23
+
24
+ # dcmit (core) namespcace
25
+ CORE_NS_DCMIT = "http://purl.org/dc/dcmitype/"
26
+
27
+ # dc terms namespace
28
+ CORE_NS_DCT = "http://purl.org/dc/terms/"
29
+
30
+ # xml schema namespace
31
+ CORE_NS_XSI = "http://www.w3.org/2001/XMLSchema-instance"
32
+
33
+ # Digital signature namespace
34
+ DIGITAL_SIGNATURE_NS = "http://schemas.openxmlformats.org/package/2006/digital-signature"
35
+
36
+ # spreadsheet drawing namespace
37
+ XML_NS_XDR = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
38
+
39
+ # drawing namespace
40
+ XML_NS_A = "http://schemas.openxmlformats.org/drawingml/2006/main"
41
+
42
+ # chart namespace
43
+ XML_NS_C = "http://schemas.openxmlformats.org/drawingml/2006/chart"
44
+
45
+ # relationships namespace
46
+ XML_NS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships"
47
+
48
+ # relationships name space
49
+ RELS_R = "http://schemas.openxmlformats.org/package/2006/relationships"
50
+
51
+ # table rels namespace
52
+ TABLE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/table"
53
+
54
+ # pivot table rels namespace
55
+ PIVOT_TABLE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotTable"
56
+
57
+ # pivot table cache definition namespace
58
+ PIVOT_TABLE_CACHE_DEFINITION_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/pivotCacheDefinition"
59
+
60
+ # workbook rels namespace
61
+ WORKBOOK_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"
62
+
63
+ # worksheet rels namespace
64
+ WORKSHEET_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"
65
+
66
+ # app rels namespace
67
+ APP_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"
68
+
69
+ # core rels namespace
70
+ CORE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/metadata/core-properties"
71
+
72
+ # digital signature rels namespace
73
+ DIGITAL_SIGNATURE_R = "http://schemas.openxmlformats.org/package/2006/relationships/digital- signature/signature"
74
+
75
+ # styles rels namespace
76
+ STYLES_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"
77
+
78
+ # shared strings namespace
79
+ SHARED_STRINGS_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"
80
+
81
+ # drawing rels namespace
82
+ DRAWING_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"
83
+
84
+ # chart rels namespace
85
+ CHART_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"
86
+
87
+ # image rels namespace
88
+ IMAGE_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
89
+
90
+ # hyperlink rels namespace
91
+ HYPERLINK_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
92
+
93
+ # comment rels namespace
94
+ COMMENT_R = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"
95
+
96
+ # comment relation for nil target
97
+ COMMENT_R_NULL = "http://purl.oclc.org/ooxml/officeDocument/relationships/comments"
98
+
99
+ #vml drawing relation namespace
100
+ VML_DRAWING_R = 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing'
101
+
102
+ # VML Drawing content type
103
+ VML_DRAWING_CT = "application/vnd.openxmlformats-officedocument.vmlDrawing"
104
+
105
+ # table content type
106
+ TABLE_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml"
107
+
108
+ # pivot table content type
109
+ PIVOT_TABLE_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml"
110
+
111
+ # pivot table cache definition content type
112
+ PIVOT_TABLE_CACHE_DEFINITION_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml"
113
+
114
+ # workbook content type
115
+ WORKBOOK_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
116
+
117
+ # app content type
118
+ APP_CT = "application/vnd.openxmlformats-officedocument.extended-properties+xml"
119
+
120
+ # rels content type
121
+ RELS_CT = "application/vnd.openxmlformats-package.relationships+xml"
122
+
123
+ # styles content type
124
+ STYLES_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"
125
+
126
+ # xml content type
127
+ XML_CT = "application/xml"
128
+
129
+ # worksheet content type
130
+ WORKSHEET_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
131
+
132
+ # shared strings content type
133
+ SHARED_STRINGS_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"
134
+
135
+ # core content type
136
+ CORE_CT = "application/vnd.openxmlformats-package.core-properties+xml"
137
+
138
+ # digital signature xml content type
139
+ DIGITAL_SIGNATURE_XML_CT = "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml"
140
+
141
+ # digital signature origin content type
142
+ DIGITAL_SIGNATURE_ORIGIN_CT = "application/vnd.openxmlformats-package.digital-signature-origin"
143
+
144
+ # digital signature certificate content type
145
+ DIGITAL_SIGNATURE_CERTIFICATE_CT = "application/vnd.openxmlformats-package.digital-signature-certificate"
146
+
147
+ # chart content type
148
+ CHART_CT = "application/vnd.openxmlformats-officedocument.drawingml.chart+xml"
149
+
150
+ # comments content type
151
+ COMMENT_CT = "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml"
152
+
153
+ # jpeg content type
154
+ JPEG_CT = "image/jpeg"
155
+
156
+ # gif content type
157
+ GIF_CT = "image/gif"
158
+
159
+ # png content type
160
+ PNG_CT = "image/png"
161
+
162
+ #drawing content type
163
+ DRAWING_CT = "application/vnd.openxmlformats-officedocument.drawing+xml"
164
+
165
+
166
+ # xml content type extensions
167
+ XML_EX = "xml"
168
+
169
+ # jpeg extension
170
+ JPEG_EX = "jpeg"
171
+
172
+ # gif extension
173
+ GIF_EX = "gif"
174
+
175
+ # png extension
176
+ PNG_EX = "png"
177
+
178
+ # rels content type extension
179
+ RELS_EX = "rels"
180
+
181
+ # workbook part
182
+ WORKBOOK_PN = "xl/workbook.xml"
183
+
184
+ # styles part
185
+ STYLES_PN = "styles.xml"
186
+
187
+ # shared_strings part
188
+ SHARED_STRINGS_PN = "sharedStrings.xml"
189
+
190
+ # app part
191
+ APP_PN = "docProps/app.xml"
192
+
193
+ # core part
194
+ CORE_PN = "docProps/core.xml"
195
+
196
+ # content types part
197
+ CONTENT_TYPES_PN = "[Content_Types].xml"
198
+
199
+ # rels part
200
+ RELS_PN = "_rels/.rels"
201
+
202
+ # workbook rels part
203
+ WORKBOOK_RELS_PN = "xl/_rels/workbook.xml.rels"
204
+
205
+ # worksheet part
206
+ WORKSHEET_PN = "worksheets/sheet%d.xml"
207
+
208
+ # worksheet rels part
209
+ WORKSHEET_RELS_PN = "worksheets/_rels/sheet%d.xml.rels"
210
+
211
+ # drawing part
212
+ DRAWING_PN = "drawings/drawing%d.xml"
213
+
214
+ # drawing rels part
215
+ DRAWING_RELS_PN = "drawings/_rels/drawing%d.xml.rels"
216
+
217
+ # vml drawing part
218
+ VML_DRAWING_PN = "drawings/vmlDrawing%d.vml"
219
+
220
+ # drawing part
221
+ TABLE_PN = "tables/table%d.xml"
222
+
223
+ # pivot table parts
224
+ PIVOT_TABLE_PN = "pivotTables/pivotTable%d.xml"
225
+
226
+ # pivot table cache definition part name
227
+ PIVOT_TABLE_CACHE_DEFINITION_PN = "pivotCache/pivotCacheDefinition%d.xml"
228
+
229
+ # pivot table rels parts
230
+ PIVOT_TABLE_RELS_PN = "pivotTables/_rels/pivotTable%d.xml.rels"
231
+
232
+ # chart part
233
+ CHART_PN = "charts/chart%d.xml"
234
+
235
+ # chart part
236
+ IMAGE_PN = "media/image%d.%s"
237
+
238
+ # comment part
239
+ COMMENT_PN = "comments%d.xml"
240
+
241
+ # location of schema files for validation
242
+ SCHEMA_BASE = File.dirname(__FILE__)+'/../../schema/'
243
+
244
+ # App validation schema
245
+ APP_XSD = SCHEMA_BASE + "shared-documentPropertiesExtended.xsd"
246
+
247
+ # core validation schema
248
+ CORE_XSD = SCHEMA_BASE + "opc-coreProperties.xsd"
249
+
250
+ # content types validation schema
251
+ CONTENT_TYPES_XSD = SCHEMA_BASE + "opc-contentTypes.xsd"
252
+
253
+ # rels validation schema
254
+ RELS_XSD = SCHEMA_BASE + "opc-relationships.xsd"
255
+
256
+ # spreadsheetML validation schema
257
+ SML_XSD = SCHEMA_BASE + "sml.xsd"
258
+
259
+ # drawing validation schema
260
+ DRAWING_XSD = SCHEMA_BASE + "dml-spreadsheetDrawing.xsd"
261
+
262
+ # number format id for pecentage formatting using the default formatting id.
263
+ NUM_FMT_PERCENT = 9
264
+
265
+ # number format id for date format like 2011/11/13
266
+ NUM_FMT_YYYYMMDD = 100
267
+
268
+ # number format id for time format the creates 2011/11/13 12:23:10
269
+ NUM_FMT_YYYYMMDDHHMMSS = 101
270
+
271
+ # cellXfs id for thin borders around the cell
272
+ STYLE_THIN_BORDER = 1
273
+
274
+ # cellXfs id for default date styling
275
+ STYLE_DATE = 2
276
+
277
+ # error messages RestrictionValidor
278
+ ERR_RESTRICTION = "Invalid Data: %s. %s must be one of %s."
279
+
280
+ # error message DataTypeValidator
281
+ ERR_TYPE = "Invalid Data %s for %s. must be %s."
282
+
283
+ # error message for RegexValidator
284
+ ERR_REGEX = "Invalid Data. %s does not match %s."
285
+
286
+ # error message for RangeValidator
287
+ ERR_RANGE = "Invalid Data. %s must be between %s and %s, (inclusive:%s) you gave: %s"
288
+
289
+ # error message for sheets that use a name which is longer than 31 bytes
290
+ ERR_SHEET_NAME_TOO_LONG = "Your worksheet name '%s' is too long. Worksheet names must be 31 characters (bytes) or less"
291
+
292
+ # error message for sheets that use a name which include invalid characters
293
+ ERR_SHEET_NAME_CHARACTER_FORBIDDEN = "Your worksheet name '%s' contains a character which is not allowed by MS Excel and will cause repair warnings. Please change the name of your sheet."
294
+
295
+ # error message for duplicate sheet names
296
+ ERR_DUPLICATE_SHEET_NAME = "There is already a worksheet in this workbook named '%s'. Please use a unique name"
297
+
298
+ # error message when user does not provide color and or style options for border in Style#add_sytle
299
+ ERR_INVALID_BORDER_OPTIONS = "border hash must include both style and color. e.g. :border => { :color => 'FF000000', :style => :thin }. You provided: %s"
300
+
301
+ # error message for invalid border id reference
302
+ ERR_INVALID_BORDER_ID = "The border id you specified (%s) does not exist. Please add a border with Style#add_style before referencing its index."
303
+
304
+ # error message for invalid angles
305
+ ERR_ANGLE = "Angles must be a value between -90 and 90. You provided: %s"
306
+
307
+ # error message for non 'integerish' value
308
+ ERR_INTEGERISH = "You value must be, or be castable via to_i, an Integer. You provided %s"
309
+
310
+ # Regex to match forbidden control characters
311
+ # The following will be automatically stripped from worksheets.
312
+ #
313
+ # x00 Null
314
+ # x01 Start Of Heading
315
+ # x02 Start Of Text
316
+ # x03End Of Text
317
+ # x04 End Of Transmission
318
+ # x05 Enquiry
319
+ # x06 Acknowledge
320
+ # x07 Bell
321
+ # x08 Backspace
322
+ # x0B Line Tabulation
323
+ # x0C Form Feed
324
+ # x0E Shift Out
325
+ # x0F Shift In
326
+ # x10 Data Link Escape
327
+ # x11 Device Control One
328
+ # x12 Device Control Two
329
+ # x13 Device Control Three
330
+ # x14 Device Control Four
331
+ # x15 Negative Acknowledge
332
+ # x16 Synchronous Idle
333
+ # x17 End Of Transmission Block
334
+ # x18 Cancel
335
+ # x19 End Of Medium
336
+ # x1A Substitute
337
+ # x1B Escape
338
+ # x1C Information Separator Four
339
+ # x1D Information Separator Three
340
+ # x1E Information Separator Two
341
+ # x1F Information Separator One
342
+ #
343
+ # The following are not dealt with.
344
+ # If you have this in your data, expect excel to blow up!
345
+ #
346
+ # x7F Delete
347
+ # x80 Control 0080
348
+ # x81 Control 0081
349
+ # x82 Break Permitted Here
350
+ # x83 No Break Here
351
+ # x84 Control 0084
352
+ # x85 Next Line (Nel)
353
+ # x86 Start Of Selected Area
354
+ # x87 End Of Selected Area
355
+ # x88 Character Tabulation Set
356
+ # x89 Character Tabulation With Justification
357
+ # x8A Line Tabulation Set
358
+ # x8B Partial Line Forward
359
+ # x8C Partial Line Backward
360
+ # x8D Reverse Line Feed
361
+ # x8E Single Shift Two
362
+ # x8F Single Shift Three
363
+ # x90 Device Control String
364
+ # x91 Private Use One
365
+ # x92 Private Use Two
366
+ # x93 Set Transmit State
367
+ # x94 Cancel Character
368
+ # x95 Message Waiting
369
+ # x96 Start Of Guarded Area
370
+ # x97 End Of Guarded Area
371
+ # x98 Start Of String
372
+ # x99 Control 0099
373
+ # x9A Single Character Introducer
374
+ # x9B Control Sequence Introducer
375
+ # x9C String Terminator
376
+ # x9D Operating System Command
377
+ # x9E Privacy Message
378
+ # x9F Application Program Command
379
+ #
380
+ # The following are allowed:
381
+ #
382
+ # x0A Line Feed (Lf)
383
+ # x0D Carriage Return (Cr)
384
+ # x09 Character Tabulation
385
+ # @see http://www.codetable.net/asciikeycodes
386
+ pattern = "[\x0-\x08\x0B\x0C\x0E-\x1F]"
387
+ pattern= pattern.respond_to?(:encode) ? pattern.encode('UTF-8') : pattern
388
+
389
+ # The regular expression used to remove control characters from worksheets
390
+ CONTROL_CHAR_REGEX = Regexp.new(pattern, 'n')
391
+
392
+ end