xlsxwriter 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,67 +8,14 @@ struct worksheet {
8
8
  lxw_worksheet *worksheet;
9
9
  };
10
10
 
11
- VALUE worksheet_alloc(VALUE klass);
12
- VALUE worksheet_init(int argc, VALUE *argv, VALUE self);
13
- VALUE worksheet_release(VALUE self);
14
- void worksheet_free(void *);
15
-
16
- VALUE worksheet_write_string_(int argc, VALUE *argv, VALUE self);
17
- VALUE worksheet_write_number_(int argc, VALUE *argv, VALUE self);
18
- VALUE worksheet_write_formula_(int argc, VALUE *argv, VALUE self);
19
- VALUE worksheet_write_array_formula_(int argc, VALUE *argv, VALUE self);
20
- VALUE worksheet_write_datetime_(int argc, VALUE *argv, VALUE self);
21
- VALUE worksheet_write_url_(int argc, VALUE *argv, VALUE self);
22
- VALUE worksheet_write_boolean_(int argc, VALUE *argv, VALUE self);
23
- VALUE worksheet_write_blank_(int argc, VALUE *argv, VALUE self);
24
- VALUE worksheet_write_formula_num_(int argc, VALUE *argv, VALUE self);
25
- VALUE worksheet_set_row_(VALUE self, VALUE row, VALUE opts);
26
- VALUE worksheet_set_column_(VALUE self, VALUE col_from, VALUE col_to, VALUE opts);
27
- VALUE worksheet_insert_image_(int argc, VALUE *argv, VALUE self);
28
- VALUE worksheet_insert_chart_(int argc, VALUE *argv, VALUE self);
29
- VALUE worksheet_merge_range_(int argc, VALUE *argv, VALUE self);
30
- VALUE worksheet_autofilter_(int argc, VALUE *argv, VALUE self);
31
- VALUE worksheet_activate_(VALUE self);
32
- VALUE worksheet_select_(VALUE self);
33
- VALUE worksheet_hide_(VALUE self);
34
- VALUE worksheet_set_first_sheet_(VALUE self);
35
- VALUE worksheet_freeze_panes_(int argc, VALUE *argv, VALUE self);
36
- VALUE worksheet_split_panes_(VALUE self, VALUE vertical, VALUE horizontal);
37
- VALUE worksheet_set_selection_(int argc, VALUE *argv, VALUE self);
38
- VALUE worksheet_set_landscape_(VALUE self);
39
- VALUE worksheet_set_portrait_(VALUE self);
40
- VALUE worksheet_set_page_view_(VALUE self);
41
- VALUE worksheet_set_paper_(VALUE self, VALUE paper_type);
42
- VALUE worksheet_set_margins_(VALUE self, VALUE left, VALUE right, VALUE top, VALUE bottom);
43
- VALUE worksheet_set_header_(VALUE self, VALUE val, VALUE opts);
44
- VALUE worksheet_set_footer_(VALUE self, VALUE val, VALUE opts);
45
- VALUE worksheet_set_h_pagebreaks_(VALUE self, VALUE val);
46
- VALUE worksheet_set_v_pagebreaks_(VALUE self, VALUE val);
47
- VALUE worksheet_print_across_(VALUE self);
48
- VALUE worksheet_set_zoom_(VALUE self, VALUE val);
49
- VALUE worksheet_gridlines_(VALUE self, VALUE value);
50
- VALUE worksheet_center_horizontally_(VALUE self);
51
- VALUE worksheet_center_vertically_(VALUE self);
52
- VALUE worksheet_print_row_col_headers_(VALUE self);
53
- VALUE worksheet_repeat_rows_(VALUE self, VALUE row_from, VALUE row_to);
54
- VALUE worksheet_repeat_columns_(VALUE self, VALUE col_from, VALUE col_to);
55
- VALUE worksheet_print_area_(int argc, VALUE *argv, VALUE self);
56
- VALUE worksheet_fit_to_pages_(VALUE self, VALUE width, VALUE height);
57
- VALUE worksheet_set_start_page_(VALUE self, VALUE start_page);
58
- VALUE worksheet_set_print_scale_(VALUE self, VALUE scale);
59
- VALUE worksheet_right_to_left_(VALUE self);
60
- VALUE worksheet_hide_zero_(VALUE self);
61
- VALUE worksheet_set_tab_color_(VALUE self, VALUE color);
62
- VALUE worksheet_protect_(int argc, VALUE *argv, VALUE self);
63
- VALUE worksheet_set_default_row_(VALUE self, VALUE height, VALUE hide_unused_rows);
64
-
65
- VALUE worksheet_get_vertical_dpi_(VALUE self);
66
- VALUE worksheet_set_vertical_dpi_(VALUE self, VALUE val);
67
-
68
-
69
11
  lxw_col_t value_to_col(VALUE value);
70
12
  int extract_cell(int argc, VALUE *argv, lxw_row_t *row, lxw_col_t *col);
71
13
  int extract_range(int argc, VALUE *argv, lxw_row_t *row1, lxw_col_t *col1,
72
14
  lxw_row_t *row2, lxw_col_t *col2);
15
+ lxw_image_options val_to_lxw_image_options(VALUE opts, char *with_options);
16
+
17
+ void init_xlsxwriter_worksheet();
18
+
19
+ extern VALUE cWorksheet;
73
20
 
74
21
  #endif /// __WORKSHEET__
@@ -1,239 +1,38 @@
1
1
  #include <ruby.h>
2
2
  #include "xlsxwriter.h"
3
3
  #include "chart.h"
4
+ #include "format.h"
4
5
  #include "workbook.h"
5
6
  #include "workbook_properties.h"
6
7
  #include "worksheet.h"
7
8
 
8
9
  VALUE mXlsxWriter;
9
- VALUE cWorkbook;
10
- VALUE cWorksheet;
11
- VALUE mXlsxFormat;
12
- VALUE cWorkbookProperties;
13
- VALUE cChart;
14
- VALUE cChartSeries;
15
- VALUE cChartAxis;
16
10
 
11
+ /* Document-module: XlsxWriter
12
+ *
13
+ * XlsxWriter is a ruby interface to libxlsxwriter.
14
+ *
15
+ * It provides a couple of useful shorthands (like being able to pass cells and
16
+ * ranges as both numbers, cell strings and range strings.
17
+ *
18
+ * It also has column authowidth functionality partially taken from Axlsx gem
19
+ * enable by default.
20
+ *
21
+ * Simple example of using the XlsxWriter to generate an xlsx file containing
22
+ * 'Hello' string in the first rows of column 'A':
23
+ *
24
+ * XlsxWriter::Workbook.open('/tmp/text.xlsx') do |wb|
25
+ * ws.add_worksheet do |ws|
26
+ * 10.times { |i| ws.add_row ['Hello!'] }
27
+ * end
28
+ * end
29
+ */
17
30
  void Init_xlsxwriter() {
18
- mXlsxWriter = rb_define_module("XlsxWriter");
19
- mXlsxFormat = rb_define_module_under(mXlsxWriter, "Format");
20
- cWorkbook = rb_define_class_under(mXlsxWriter, "Workbook", rb_cObject);
21
- cWorksheet = rb_define_class_under(mXlsxWriter, "Worksheet", rb_cObject);
22
- cWorkbookProperties
23
- = rb_define_class_under(cWorkbook, "Properties", rb_cObject);
24
- cChart = rb_define_class_under(cWorkbook, "Chart", rb_cObject);
25
- cChartSeries = rb_define_class_under(cChart, "Series", rb_cObject);
26
- cChartAxis = rb_define_class_under(cChart, "Axis", rb_cObject);
31
+ mXlsxWriter = rb_define_module("XlsxWriter");
27
32
 
28
- rb_define_alloc_func(cWorkbook, workbook_alloc);
29
- rb_define_singleton_method(cWorkbook, "new", workbook_new_, -1);
30
- rb_define_alias(rb_singleton_class(cWorkbook), "open", "new");
31
- rb_define_method(cWorkbook, "initialize", workbook_init, -1);
32
- rb_define_method(cWorkbook, "close", workbook_release, 0);
33
- rb_define_method(cWorkbook, "add_worksheet", workbook_add_worksheet_, -1);
34
- rb_define_method(cWorkbook, "add_format", workbook_add_format_, 2);
35
- rb_define_method(cWorkbook, "add_chart", workbook_add_chart_, 1);
36
- rb_define_method(cWorkbook, "set_default_xf_indices", workbook_set_default_xf_indices_, 0);
37
- rb_define_method(cWorkbook, "properties", workbook_properties_, 0);
38
- rb_define_method(cWorkbook, "define_name", workbook_define_name_, 2);
39
- rb_define_method(cWorkbook, "validate_worksheet_name", workbook_validate_worksheet_name_, 1);
40
-
41
- rb_define_attr(cWorkbook, "font_sizes", 1, 0);
42
-
43
-
44
- rb_define_alloc_func(cWorksheet, worksheet_alloc);
45
- rb_define_method(cWorksheet, "initialize", worksheet_init, -1);
46
- rb_define_method(cWorksheet, "free", worksheet_release, 0);
47
- rb_define_method(cWorksheet, "write_string", worksheet_write_string_, -1);
48
- rb_define_method(cWorksheet, "write_number", worksheet_write_number_, -1);
49
- rb_define_method(cWorksheet, "write_formula", worksheet_write_formula_, -1);
50
- rb_define_method(cWorksheet, "write_array_formula", worksheet_write_array_formula_, -1);
51
- rb_define_method(cWorksheet, "write_datetime", worksheet_write_datetime_, -1);
52
- rb_define_method(cWorksheet, "write_url", worksheet_write_url_, -1);
53
- rb_define_method(cWorksheet, "write_boolean", worksheet_write_boolean_, -1);
54
- rb_define_method(cWorksheet, "write_blank", worksheet_write_blank_, -1);
55
- rb_define_method(cWorksheet, "write_formula_num", worksheet_write_formula_num_, -1);
56
- rb_define_method(cWorksheet, "set_row", worksheet_set_row_, 2);
57
- rb_define_method(cWorksheet, "set_column", worksheet_set_column_, 3);
58
- rb_define_method(cWorksheet, "insert_image", worksheet_insert_image_, -1);
59
- rb_define_method(cWorksheet, "insert_chart", worksheet_insert_chart_, -1);
60
- rb_define_method(cWorksheet, "merge_range", worksheet_merge_range_, -1);
61
- rb_define_method(cWorksheet, "autofilter", worksheet_autofilter_, -1);
62
- rb_define_method(cWorksheet, "activate", worksheet_activate_, 0);
63
- rb_define_method(cWorksheet, "select", worksheet_select_, 0);
64
- rb_define_method(cWorksheet, "hide", worksheet_hide_, 0);
65
- rb_define_method(cWorksheet, "set_first_sheet", worksheet_set_first_sheet_, 0);
66
- rb_define_method(cWorksheet, "freeze_panes", worksheet_freeze_panes_, -1);
67
- rb_define_method(cWorksheet, "split_panes", worksheet_split_panes_, 2);
68
- rb_define_method(cWorksheet, "set_selection", worksheet_set_selection_, -1);
69
- rb_define_method(cWorksheet, "set_landscape", worksheet_set_landscape_, 0);
70
- rb_define_method(cWorksheet, "set_portrait", worksheet_set_portrait_, 0);
71
- rb_define_method(cWorksheet, "set_page_view", worksheet_set_page_view_, 0);
72
- rb_define_method(cWorksheet, "paper=", worksheet_set_paper_, 1);
73
- rb_define_method(cWorksheet, "set_margins", worksheet_set_margins_, 4);
74
- rb_define_method(cWorksheet, "set_header", worksheet_set_header_, 1);
75
- rb_define_method(cWorksheet, "set_footer", worksheet_set_footer_, 1);
76
- rb_define_method(cWorksheet, "h_pagebreaks=", worksheet_set_h_pagebreaks_, 1);
77
- rb_define_method(cWorksheet, "v_pagebreaks=", worksheet_set_v_pagebreaks_, 1);
78
- rb_define_method(cWorksheet, "print_across", worksheet_print_across_, 0);
79
- rb_define_method(cWorksheet, "zoom=", worksheet_set_zoom_, 1);
80
- rb_define_method(cWorksheet, "gridlines=", worksheet_gridlines_, 1);
81
- rb_define_method(cWorksheet, "center_horizontally", worksheet_center_horizontally_, 0);
82
- rb_define_method(cWorksheet, "center_vertically", worksheet_center_vertically_, 0);
83
- rb_define_method(cWorksheet, "print_row_col_headers", worksheet_print_row_col_headers_, 0);
84
- rb_define_method(cWorksheet, "repeat_rows", worksheet_repeat_rows_, 2);
85
- rb_define_method(cWorksheet, "repeat_columns", worksheet_repeat_columns_, 2);
86
- rb_define_method(cWorksheet, "print_area", worksheet_print_area_, -1);
87
- rb_define_method(cWorksheet, "fit_to_pages", worksheet_fit_to_pages_, 2);
88
- rb_define_method(cWorksheet, "start_page=", worksheet_set_start_page_, 1);
89
- rb_define_method(cWorksheet, "print_scale=", worksheet_set_print_scale_, 1);
90
- rb_define_method(cWorksheet, "right_to_left", worksheet_right_to_left_, 0);
91
- rb_define_method(cWorksheet, "hide_zero", worksheet_hide_zero_, 0);
92
- rb_define_method(cWorksheet, "tab_color=", worksheet_set_tab_color_, 1);
93
- rb_define_method(cWorksheet, "protect", worksheet_protect_, -1);
94
- rb_define_method(cWorksheet, "set_default_row", worksheet_set_default_row_, 2);
95
-
96
- rb_define_method(cWorksheet, "vertical_dpi", worksheet_get_vertical_dpi_, 0);
97
- rb_define_method(cWorksheet, "vertical_dpi=", worksheet_set_vertical_dpi_, 1);
98
-
99
- rb_define_method(cWorkbookProperties, "initialize", workbook_properties_init_, 1);
100
- rb_define_method(cWorkbookProperties, "[]=", workbook_properties_set_, 2);
101
- #define DEF_PROP_HANDLER(prop) rb_define_method(cWorkbookProperties, #prop "=", workbook_properties_set_dir_, 1);
102
- DEF_PROP_HANDLER(title);
103
- DEF_PROP_HANDLER(subject);
104
- DEF_PROP_HANDLER(author);
105
- DEF_PROP_HANDLER(manager);
106
- DEF_PROP_HANDLER(company);
107
- DEF_PROP_HANDLER(category);
108
- DEF_PROP_HANDLER(keywords);
109
- DEF_PROP_HANDLER(comments);
110
- DEF_PROP_HANDLER(status);
111
- DEF_PROP_HANDLER(hyperlink_base);
112
- #undef DEF_PROP_HANDLER
113
-
114
-
115
- rb_define_alloc_func(cChart, chart_alloc);
116
- rb_define_method(cChart, "initialize", chart_init, 2);
117
- rb_define_method(cChart, "add_series", chart_add_series_, -1);
118
-
119
- rb_define_method(cChart, "axis_id_1", chart_get_axis_id_1_, 0);
120
- rb_define_method(cChart, "axis_id_1=", chart_set_axis_id_1_, 1);
121
- rb_define_method(cChart, "axis_id_2", chart_get_axis_id_2_, 0);
122
- rb_define_method(cChart, "axis_id_2=", chart_set_axis_id_2_, 1);
123
-
124
- rb_define_alloc_func(cChartSeries, chart_series_alloc);
125
- rb_define_method(cChartSeries, "initialize", chart_series_init, -1);
126
-
127
-
128
- #define MAP_LXW_FMT_CONST(name) rb_define_const(mXlsxFormat, #name, INT2NUM(LXW_##name))
129
- MAP_LXW_FMT_CONST(COLOR_BLACK);
130
- MAP_LXW_FMT_CONST(COLOR_BLUE);
131
- MAP_LXW_FMT_CONST(COLOR_BROWN);
132
- MAP_LXW_FMT_CONST(COLOR_CYAN);
133
- MAP_LXW_FMT_CONST(COLOR_GRAY);
134
- MAP_LXW_FMT_CONST(COLOR_GREEN);
135
- MAP_LXW_FMT_CONST(COLOR_LIME);
136
- MAP_LXW_FMT_CONST(COLOR_MAGENTA);
137
- MAP_LXW_FMT_CONST(COLOR_NAVY);
138
- MAP_LXW_FMT_CONST(COLOR_ORANGE);
139
- MAP_LXW_FMT_CONST(COLOR_PINK);
140
- MAP_LXW_FMT_CONST(COLOR_PURPLE);
141
- MAP_LXW_FMT_CONST(COLOR_RED);
142
- MAP_LXW_FMT_CONST(COLOR_SILVER);
143
- MAP_LXW_FMT_CONST(COLOR_WHITE);
144
- MAP_LXW_FMT_CONST(COLOR_YELLOW);
145
-
146
- MAP_LXW_FMT_CONST(UNDERLINE_SINGLE);
147
- MAP_LXW_FMT_CONST(UNDERLINE_DOUBLE);
148
- MAP_LXW_FMT_CONST(UNDERLINE_SINGLE_ACCOUNTING);
149
- MAP_LXW_FMT_CONST(UNDERLINE_DOUBLE_ACCOUNTING);
150
-
151
- MAP_LXW_FMT_CONST(FONT_SUPERSCRIPT);
152
- MAP_LXW_FMT_CONST(FONT_SUBSCRIPT);
153
-
154
- MAP_LXW_FMT_CONST(ALIGN_LEFT);
155
- MAP_LXW_FMT_CONST(ALIGN_CENTER);
156
- MAP_LXW_FMT_CONST(ALIGN_RIGHT);
157
- MAP_LXW_FMT_CONST(ALIGN_FILL);
158
- MAP_LXW_FMT_CONST(ALIGN_JUSTIFY);
159
- MAP_LXW_FMT_CONST(ALIGN_CENTER_ACROSS);
160
- MAP_LXW_FMT_CONST(ALIGN_DISTRIBUTED);
161
-
162
- MAP_LXW_FMT_CONST(ALIGN_VERTICAL_TOP);
163
- MAP_LXW_FMT_CONST(ALIGN_VERTICAL_BOTTOM);
164
- MAP_LXW_FMT_CONST(ALIGN_VERTICAL_CENTER);
165
- MAP_LXW_FMT_CONST(ALIGN_VERTICAL_JUSTIFY);
166
- MAP_LXW_FMT_CONST(ALIGN_VERTICAL_DISTRIBUTED);
167
-
168
- MAP_LXW_FMT_CONST(PATTERN_SOLID);
169
- MAP_LXW_FMT_CONST(PATTERN_MEDIUM_GRAY);
170
- MAP_LXW_FMT_CONST(PATTERN_DARK_GRAY);
171
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_GRAY);
172
- MAP_LXW_FMT_CONST(PATTERN_DARK_HORIZONTAL);
173
- MAP_LXW_FMT_CONST(PATTERN_DARK_VERTICAL);
174
- MAP_LXW_FMT_CONST(PATTERN_DARK_DOWN);
175
- MAP_LXW_FMT_CONST(PATTERN_DARK_UP);
176
- MAP_LXW_FMT_CONST(PATTERN_DARK_GRID);
177
- MAP_LXW_FMT_CONST(PATTERN_DARK_TRELLIS);
178
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_HORIZONTAL);
179
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_VERTICAL);
180
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_DOWN);
181
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_UP);
182
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_GRID);
183
- MAP_LXW_FMT_CONST(PATTERN_LIGHT_TRELLIS);
184
- MAP_LXW_FMT_CONST(PATTERN_GRAY_125);
185
- MAP_LXW_FMT_CONST(PATTERN_GRAY_0625);
186
-
187
- MAP_LXW_FMT_CONST(BORDER_THIN);
188
- MAP_LXW_FMT_CONST(BORDER_MEDIUM);
189
- MAP_LXW_FMT_CONST(BORDER_DASHED);
190
- MAP_LXW_FMT_CONST(BORDER_DOTTED);
191
- MAP_LXW_FMT_CONST(BORDER_THICK);
192
- MAP_LXW_FMT_CONST(BORDER_DOUBLE);
193
- MAP_LXW_FMT_CONST(BORDER_HAIR);
194
- MAP_LXW_FMT_CONST(BORDER_MEDIUM_DASHED);
195
- MAP_LXW_FMT_CONST(BORDER_DASH_DOT);
196
- MAP_LXW_FMT_CONST(BORDER_MEDIUM_DASH_DOT);
197
- MAP_LXW_FMT_CONST(BORDER_DASH_DOT_DOT);
198
- MAP_LXW_FMT_CONST(BORDER_MEDIUM_DASH_DOT_DOT);
199
- MAP_LXW_FMT_CONST(BORDER_SLANT_DASH_DOT);
200
-
201
- MAP_LXW_FMT_CONST(DIAGONAL_BORDER_UP);
202
- MAP_LXW_FMT_CONST(DIAGONAL_BORDER_DOWN);
203
- MAP_LXW_FMT_CONST(DIAGONAL_BORDER_UP_DOWN);
204
- #undef MAP_LXW_FMT_CONST
205
-
206
- #define MAP_LXW_WH_CONST(name, val_name) rb_define_const(cWorksheet, #name, INT2NUM(LXW_##val_name))
207
- MAP_LXW_WH_CONST(DEF_COL_WIDTH, DEF_COL_WIDTH);
208
- MAP_LXW_WH_CONST(DEF_ROW_HEIGHT, DEF_ROW_HEIGHT);
209
-
210
- MAP_LXW_WH_CONST(GRIDLINES_HIDE_ALL, HIDE_ALL_GRIDLINES);
211
- MAP_LXW_WH_CONST(GRIDLINES_SHOW_SCREEN, SHOW_SCREEN_GRIDLINES);
212
- MAP_LXW_WH_CONST(GRIDLINES_SHOW_PRINT, SHOW_PRINT_GRIDLINES);
213
- MAP_LXW_WH_CONST(GRIDLINES_SHOW_ALL, SHOW_ALL_GRIDLINES);
214
- #undef MAP_LXW_WH_CONST
215
-
216
- #define MAP_CHART_CONST(name) rb_define_const(cChart, #name, INT2NUM(LXW_CHART_##name))
217
- MAP_CHART_CONST(NONE);
218
- MAP_CHART_CONST(AREA);
219
- MAP_CHART_CONST(AREA_STACKED);
220
- MAP_CHART_CONST(AREA_STACKED_PERCENT);
221
- MAP_CHART_CONST(BAR);
222
- MAP_CHART_CONST(BAR_STACKED);
223
- MAP_CHART_CONST(BAR_STACKED_PERCENT);
224
- MAP_CHART_CONST(COLUMN);
225
- MAP_CHART_CONST(COLUMN_STACKED);
226
- MAP_CHART_CONST(COLUMN_STACKED_PERCENT);
227
- MAP_CHART_CONST(DOUGHNUT);
228
- MAP_CHART_CONST(LINE);
229
- MAP_CHART_CONST(PIE);
230
- MAP_CHART_CONST(SCATTER);
231
- MAP_CHART_CONST(SCATTER_STRAIGHT);
232
- MAP_CHART_CONST(SCATTER_STRAIGHT_WITH_MARKERS);
233
- MAP_CHART_CONST(SCATTER_SMOOTH);
234
- MAP_CHART_CONST(SCATTER_SMOOTH_WITH_MARKERS);
235
- MAP_CHART_CONST(RADAR);
236
- MAP_CHART_CONST(RADAR_WITH_MARKERS);
237
- MAP_CHART_CONST(RADAR_FILLED);
238
- #undef MAP_CHART_CONST
33
+ init_xlsxwriter_workbook();
34
+ init_xlsxwriter_workbook_properties();
35
+ init_xlsxwriter_format();
36
+ init_xlsxwriter_worksheet();
37
+ init_xlsxwriter_chart();
239
38
  }
@@ -1,3 +1,4 @@
1
1
  module XlsxWriter
2
- VERSION='0.0.2'.freeze
2
+ # :nodoc:
3
+ VERSION='0.0.3'.freeze
3
4
  end
@@ -1,8 +1,16 @@
1
1
  class XlsxWriter::Worksheet
2
+ # Last row number written with #add_row
2
3
  attr_reader :current_row
3
4
 
5
+ # Thiner characters list used for column width logic mimicing axlsx behaviour
4
6
  THIN_CHARS = '^.acfijklrstxzFIJL()-'.freeze
5
7
 
8
+ # Write a +row+. If no +types+ passed XlsxWriter tries to deduce them automatically.
9
+ #
10
+ # Both +types+ and +style+ may be an array as well as a symbol.
11
+ # In the latter case they are applied to all cells in the +row+.
12
+ #
13
+ # +height+ is a Numeric that specifies the row height.
6
14
  def add_row(row, style: nil, height: nil, types: nil)
7
15
  row_idx = @current_row ||= 0
8
16
  @current_row += 1
@@ -58,15 +66,19 @@ class XlsxWriter::Worksheet
58
66
  end
59
67
  end
60
68
 
61
- def update_col_auto_width(idx, val, format)
62
- font_scale = (@workbook.font_sizes[format] || 11) / 10.0
63
- width = (val.count(THIN_CHARS) + 3) * font_scale
64
- @col_auto_widths[idx] = [@col_auto_widths[idx], width].compact.max
65
- end
66
-
69
+ # Apply cols automatic widths calculated by #add_row.
67
70
  def apply_auto_widths
68
71
  @col_auto_widths.each_with_index do |width, idx|
69
72
  set_column(idx, idx, width: width) if width
70
73
  end
71
74
  end
75
+
76
+ private
77
+
78
+ # Updates the col auto width value to fit the string.
79
+ def update_col_auto_width(idx, val, format)
80
+ font_scale = (@workbook.font_sizes[format] || 11) / 10.0
81
+ width = (val.count(THIN_CHARS) + 3) * font_scale
82
+ @col_auto_widths[idx] = [@col_auto_widths[idx], width].compact.max
83
+ end
72
84
  end
@@ -0,0 +1,102 @@
1
+ require_relative './xlsx-func-testcase'
2
+
3
+ class TestChartAxis < XlsxWriterTestCase
4
+ DATA = [
5
+ [1, 2, 3],
6
+ [2, 4, 6],
7
+ [3, 6, 9],
8
+ [4, 8, 12],
9
+ [5, 10, 15]
10
+ ]
11
+
12
+ test 'chart_axis01' do |wb|
13
+ wb.add_worksheet do |ws|
14
+ DATA.each { |row| ws.add_row row }
15
+
16
+ wb.add_chart(XlsxWriter::Workbook::Chart::BAR) do |chart|
17
+ chart.axis_id_1 = 58_955_648
18
+ chart.axis_id_2 = 68_446_848
19
+
20
+ chart.add_series '=Sheet1!$A$1:$A$5'
21
+ chart.add_series '=Sheet1!$B$1:$B$5'
22
+ chart.add_series '=Sheet1!$C$1:$C$5'
23
+
24
+ chart.x_axis.name = 'XXX'
25
+ chart.y_axis.name = 'YYY'
26
+
27
+ ws.insert_chart 'E9', chart
28
+ end
29
+ end
30
+ end
31
+
32
+ test 'chart_axis06' do |wb|
33
+ wb.add_worksheet do |ws|
34
+ [ [2, 60], [4, 30], [6, 10] ].each { |row| ws.add_row row }
35
+ wb.add_chart(XlsxWriter::Workbook::Chart::PIE) do |chart|
36
+ chart.add_series '=Sheet1!$A$1:$A$3', '=Sheet1!$B$1:$B$3'
37
+ chart.title = 'Title'
38
+ chart.x_axis.name = 'XXX'
39
+ chart.y_axis.name = 'YYY'
40
+ ws.insert_chart('E9', chart)
41
+ end
42
+ end
43
+ end
44
+
45
+ test 'chart_axis26' do |wb|
46
+ wb.add_worksheet do |ws|
47
+ DATA.each { |row| ws.add_row row }
48
+
49
+ wb.add_chart(XlsxWriter::Workbook::Chart::LINE) do |chart|
50
+ chart.axis_id_1 = 73_048_448
51
+ chart.axis_id_2 = 73_049_984
52
+
53
+ chart.add_series '=Sheet1!$A$1:$A$5'
54
+ chart.add_series '=Sheet1!$B$1:$B$5'
55
+ chart.add_series '=Sheet1!$C$1:$C$5'
56
+
57
+ chart.x_axis.set_num_font rotation: 45, baseline: -1
58
+
59
+ ws.insert_chart('E9', chart)
60
+ end
61
+ end
62
+ end
63
+
64
+ test 'chart_axis35' do |wb|
65
+ wb.add_worksheet do |ws|
66
+ DATA.each { |row| ws.add_row row }
67
+
68
+ wb.add_chart(XlsxWriter::Workbook::Chart::COLUMN) do |chart|
69
+ chart.axis_id_1 = 63_008_128
70
+ chart.axis_id_2 = 62_522_496
71
+
72
+ chart.add_series '=Sheet1!$A$1:$A$5'
73
+ chart.add_series '=Sheet1!$B$1:$B$5'
74
+ chart.add_series '=Sheet1!$C$1:$C$5'
75
+
76
+ chart.y_axis.set_line none: true
77
+
78
+ ws.insert_chart('E9', chart)
79
+ end
80
+ end
81
+ end
82
+
83
+ test 'chart_axis38' do |wb|
84
+ wb.add_worksheet do |ws|
85
+ DATA.each { |row| ws.add_row row }
86
+
87
+ wb.add_chart(XlsxWriter::Workbook::Chart::COLUMN) do |chart|
88
+ chart.axis_id_1 = 45_642_496
89
+ chart.axis_id_2 = 45_644_416
90
+
91
+ chart.add_series '=Sheet1!$A$1:$A$5'
92
+ chart.add_series '=Sheet1!$B$1:$B$5'
93
+ chart.add_series '=Sheet1!$C$1:$C$5'
94
+
95
+ chart.y_axis.set_line color: XlsxWriter::Format::COLOR_YELLOW
96
+ chart.y_axis.set_fill color: XlsxWriter::Format::COLOR_RED
97
+
98
+ ws.insert_chart 'E9', chart
99
+ end
100
+ end
101
+ end
102
+ end