xlsxwriter 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +4 -16
- data/ext/xlsxwriter/chart.c +499 -4
- data/ext/xlsxwriter/chart.h +11 -9
- data/ext/xlsxwriter/format.c +89 -1
- data/ext/xlsxwriter/format.h +4 -0
- data/ext/xlsxwriter/workbook.c +145 -6
- data/ext/xlsxwriter/workbook.h +2 -22
- data/ext/xlsxwriter/workbook_properties.c +61 -14
- data/ext/xlsxwriter/workbook_properties.h +4 -3
- data/ext/xlsxwriter/worksheet.c +406 -55
- data/ext/xlsxwriter/worksheet.h +5 -58
- data/ext/xlsxwriter/xlsxwriter.c +26 -227
- data/lib/xlsxwriter/version.rb +2 -1
- data/lib/xlsxwriter/worksheet.rb +18 -6
- data/test/test-chart-axis.rb +102 -0
- data/test/test-chart-bar.rb +34 -0
- data/test/test-chart-column.rb +30 -0
- data/test/test-chart-doughnut.rb +31 -0
- data/test/test-chart-pie.rb +44 -0
- data/test/test-chart-scatter.rb +29 -0
- data/test/test-chart-size.rb +45 -0
- data/test/test-chart-title.rb +44 -0
- data/test/test-panes.rb +18 -18
- metadata +18 -2
@@ -3,8 +3,9 @@
|
|
3
3
|
#ifndef __WORKBOOK_PROPERTIES__
|
4
4
|
#define __WORKBOOK_PROPIRTIES__
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
void
|
7
|
+
init_xlsxwriter_workbook_properties();
|
8
|
+
|
9
|
+
extern VALUE cWorkbookProperties;
|
9
10
|
|
10
11
|
#endif // __WORKBOOK_PROPIRTIES__
|
data/ext/xlsxwriter/worksheet.c
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
#include "worksheet.h"
|
3
3
|
#include "workbook.h"
|
4
4
|
|
5
|
+
VALUE cWorksheet;
|
6
|
+
|
7
|
+
void worksheet_free(void *p);
|
8
|
+
|
9
|
+
|
5
10
|
VALUE
|
6
11
|
worksheet_alloc(VALUE klass)
|
7
12
|
{
|
@@ -15,6 +20,7 @@ worksheet_alloc(VALUE klass)
|
|
15
20
|
return obj;
|
16
21
|
}
|
17
22
|
|
23
|
+
/* :nodoc: */
|
18
24
|
VALUE
|
19
25
|
worksheet_init(int argc, VALUE *argv, VALUE self) {
|
20
26
|
char *name = NULL;
|
@@ -64,6 +70,7 @@ worksheet_init(int argc, VALUE *argv, VALUE self) {
|
|
64
70
|
return self;
|
65
71
|
}
|
66
72
|
|
73
|
+
/* :nodoc: */
|
67
74
|
VALUE
|
68
75
|
worksheet_release(VALUE self) {
|
69
76
|
struct worksheet *ptr;
|
@@ -82,6 +89,12 @@ worksheet_free(void *p) {
|
|
82
89
|
}
|
83
90
|
}
|
84
91
|
|
92
|
+
/* call-seq:
|
93
|
+
* ws.write_string(cell, value, format = nil) -> self
|
94
|
+
* ws.write_string(row, col, value, format = nil) -> self
|
95
|
+
*
|
96
|
+
* Writes a string +value+ into a +cell+ with +format+.
|
97
|
+
*/
|
85
98
|
VALUE
|
86
99
|
worksheet_write_string_(int argc, VALUE *argv, VALUE self) {
|
87
100
|
lxw_row_t row;
|
@@ -111,6 +124,12 @@ worksheet_write_string_(int argc, VALUE *argv, VALUE self) {
|
|
111
124
|
return self;
|
112
125
|
}
|
113
126
|
|
127
|
+
/* call-seq:
|
128
|
+
* ws.number_string(cell, value, format = nil) -> self
|
129
|
+
* ws.number_string(row, col, value, format = nil) -> self
|
130
|
+
*
|
131
|
+
* Writes a number +value+ into a +cell+ with +format+.
|
132
|
+
*/
|
114
133
|
VALUE
|
115
134
|
worksheet_write_number_(int argc, VALUE *argv, VALUE self) {
|
116
135
|
lxw_row_t row;
|
@@ -140,6 +159,12 @@ worksheet_write_number_(int argc, VALUE *argv, VALUE self) {
|
|
140
159
|
return self;
|
141
160
|
}
|
142
161
|
|
162
|
+
/* call-seq:
|
163
|
+
* ws.write_formula(cell, formula, format = nil) -> self
|
164
|
+
* ws.write_formula(row, col, formula, format = nil) -> self
|
165
|
+
*
|
166
|
+
* Writes a +formula+ into a +cell+ with +format+.
|
167
|
+
*/
|
143
168
|
VALUE
|
144
169
|
worksheet_write_formula_(int argc, VALUE *argv, VALUE self) {
|
145
170
|
lxw_row_t row;
|
@@ -169,6 +194,13 @@ worksheet_write_formula_(int argc, VALUE *argv, VALUE self) {
|
|
169
194
|
return self;
|
170
195
|
}
|
171
196
|
|
197
|
+
/* call-seq:
|
198
|
+
* ws.write_array_formula(range, formula, format = nil) -> self
|
199
|
+
* ws.write_array_formula(cell_from, cell_to, formula, format = nil) -> self
|
200
|
+
* ws.write_array_formula(row_from, col_from, row_to, col_to, formula, format = nil) -> self
|
201
|
+
*
|
202
|
+
* Writes an array +formula+ into a cell +range+ with +format+.
|
203
|
+
*/
|
172
204
|
VALUE worksheet_write_array_formula_(int argc, VALUE *argv, VALUE self) {
|
173
205
|
lxw_row_t row_from, row_to;
|
174
206
|
lxw_col_t col_from, col_to;
|
@@ -196,6 +228,12 @@ VALUE worksheet_write_array_formula_(int argc, VALUE *argv, VALUE self) {
|
|
196
228
|
return self;
|
197
229
|
}
|
198
230
|
|
231
|
+
/* call-seq:
|
232
|
+
* ws.write_datetime(cell, value, format = nil) -> self
|
233
|
+
* ws.write_datetime(row, col, value, format = nil) -> self
|
234
|
+
*
|
235
|
+
* Writes a datetime +value+ into a +cell+ with +format+.
|
236
|
+
*/
|
199
237
|
VALUE
|
200
238
|
worksheet_write_datetime_(int argc, VALUE *argv, VALUE self) {
|
201
239
|
lxw_row_t row;
|
@@ -225,6 +263,12 @@ worksheet_write_datetime_(int argc, VALUE *argv, VALUE self) {
|
|
225
263
|
return self;
|
226
264
|
}
|
227
265
|
|
266
|
+
/* call-seq:
|
267
|
+
* ws.write_url(cell, url, format = nil, string: nil, tooltip: nil, format: nil) -> self
|
268
|
+
* ws.write_url(row, col, url, format = nil, string: nil, tooltip: nil, format: nil) -> self
|
269
|
+
*
|
270
|
+
* Writes a +url+ into a +cell+ with +format+.
|
271
|
+
*/
|
228
272
|
VALUE
|
229
273
|
worksheet_write_url_(int argc, VALUE *argv, VALUE self) {
|
230
274
|
lxw_row_t row;
|
@@ -284,6 +328,12 @@ worksheet_write_url_(int argc, VALUE *argv, VALUE self) {
|
|
284
328
|
return self;
|
285
329
|
}
|
286
330
|
|
331
|
+
/* call-seq:
|
332
|
+
* ws.write_boolean(cell, value, format = nil) -> self
|
333
|
+
* ws.write_boolean(row, col, value, format = nil) -> self
|
334
|
+
*
|
335
|
+
* Writes a boolean +value+ into a +cell+ with +format+.
|
336
|
+
*/
|
287
337
|
VALUE
|
288
338
|
worksheet_write_boolean_(int argc, VALUE *argv, VALUE self) {
|
289
339
|
lxw_row_t row;
|
@@ -312,6 +362,12 @@ worksheet_write_boolean_(int argc, VALUE *argv, VALUE self) {
|
|
312
362
|
return self;
|
313
363
|
}
|
314
364
|
|
365
|
+
/* call-seq:
|
366
|
+
* ws.write_datetime(cell, format = nil) -> self
|
367
|
+
* ws.write_datetime(row, col, format = nil) -> self
|
368
|
+
*
|
369
|
+
* Make a +cell+ blank with +format+.
|
370
|
+
*/
|
315
371
|
VALUE
|
316
372
|
worksheet_write_blank_(int argc, VALUE *argv, VALUE self) {
|
317
373
|
lxw_row_t row;
|
@@ -334,6 +390,12 @@ worksheet_write_blank_(int argc, VALUE *argv, VALUE self) {
|
|
334
390
|
return self;
|
335
391
|
}
|
336
392
|
|
393
|
+
/* call-seq:
|
394
|
+
* ws.write_formula_num(cell, formula, value, format = nil) -> self
|
395
|
+
* ws.write_formula_num(row, col, formula, value, format = nil) -> self
|
396
|
+
*
|
397
|
+
* Writes a +formula+ with +value+ into a +cell+ with +format+.
|
398
|
+
*/
|
337
399
|
VALUE worksheet_write_formula_num_(int argc, VALUE *argv, VALUE self) {
|
338
400
|
lxw_row_t row;
|
339
401
|
lxw_col_t col;
|
@@ -349,13 +411,13 @@ VALUE worksheet_write_formula_num_(int argc, VALUE *argv, VALUE self) {
|
|
349
411
|
++larg;
|
350
412
|
}
|
351
413
|
|
352
|
-
if (larg
|
353
|
-
|
414
|
+
if (larg < argc) {
|
415
|
+
value = argv[larg];
|
354
416
|
++larg;
|
355
417
|
}
|
356
418
|
|
357
419
|
if (larg < argc) {
|
358
|
-
|
420
|
+
format_key = argv[larg];
|
359
421
|
++larg;
|
360
422
|
}
|
361
423
|
|
@@ -368,6 +430,10 @@ VALUE worksheet_write_formula_num_(int argc, VALUE *argv, VALUE self) {
|
|
368
430
|
return self;
|
369
431
|
}
|
370
432
|
|
433
|
+
/* call-seq: ws.set_row(row, height: nil, format: nil, hide: false) -> self
|
434
|
+
*
|
435
|
+
* Set properties of the row.
|
436
|
+
*/
|
371
437
|
VALUE
|
372
438
|
worksheet_set_row_(VALUE self, VALUE row, VALUE opts) {
|
373
439
|
double height = LXW_DEF_ROW_HEIGHT;
|
@@ -401,6 +467,10 @@ worksheet_set_row_(VALUE self, VALUE row, VALUE opts) {
|
|
401
467
|
return self;
|
402
468
|
}
|
403
469
|
|
470
|
+
/* call-seq: ws.set_column(col_from, col_to, width: nil, format: nil, hide: nil) -> self
|
471
|
+
*
|
472
|
+
* Set properties of the cols range.
|
473
|
+
*/
|
404
474
|
VALUE
|
405
475
|
worksheet_set_column_(VALUE self, VALUE col_from, VALUE col_to, VALUE opts) {
|
406
476
|
double width = LXW_DEF_COL_WIDTH;
|
@@ -436,27 +506,23 @@ worksheet_set_column_(VALUE self, VALUE col_from, VALUE col_to, VALUE opts) {
|
|
436
506
|
return self;
|
437
507
|
}
|
438
508
|
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
509
|
+
/* call-seq:
|
510
|
+
* ws.insert_image(cell, fname, opts = {}) -> self
|
511
|
+
* ws.insert_image(row, col, fname, opts = {}) -> self
|
512
|
+
*
|
513
|
+
* Inserts image from +fname+ into the worksheet (at +cell+).
|
514
|
+
*
|
515
|
+
* Available +opts+
|
516
|
+
* :offset, :x_offset, :y_offset:: Image offset (+:offset+ for both; Integer).
|
517
|
+
* :scale, :x_scale, :y_scale:: Image scale (+:scale+ for both; Numeric).
|
518
|
+
*/
|
447
519
|
VALUE
|
448
520
|
worksheet_insert_image_(int argc, VALUE *argv, VALUE self) {
|
449
521
|
lxw_row_t row;
|
450
522
|
lxw_col_t col;
|
451
523
|
VALUE fname = Qnil;
|
452
524
|
VALUE opts = Qnil;
|
453
|
-
|
454
|
-
lxw_image_options options = {
|
455
|
-
.x_offset = 0,
|
456
|
-
.y_offset = 0,
|
457
|
-
.x_scale = 1.0,
|
458
|
-
.y_scale = 1.0
|
459
|
-
};
|
525
|
+
lxw_image_options options;
|
460
526
|
char with_options = '\0';
|
461
527
|
|
462
528
|
rb_check_arity(argc, 2, 4);
|
@@ -476,12 +542,7 @@ worksheet_insert_image_(int argc, VALUE *argv, VALUE self) {
|
|
476
542
|
Data_Get_Struct(self, struct worksheet, ptr);
|
477
543
|
|
478
544
|
if (!NIL_P(opts)) {
|
479
|
-
|
480
|
-
SET_IMG_OPT("x_offset", options.x_offset = NUM2INT(val));
|
481
|
-
SET_IMG_OPT("y_offset", options.y_offset = NUM2INT(val));
|
482
|
-
SET_IMG_OPT("scale", options.x_scale = options.y_scale = NUM2DBL(val));
|
483
|
-
SET_IMG_OPT("x_scale", options.x_scale = NUM2DBL(val));
|
484
|
-
SET_IMG_OPT("y_scale", options.y_scale = NUM2DBL(val));
|
545
|
+
options = val_to_lxw_image_options(opts, &with_options);
|
485
546
|
}
|
486
547
|
|
487
548
|
if (with_options) {
|
@@ -493,15 +554,23 @@ worksheet_insert_image_(int argc, VALUE *argv, VALUE self) {
|
|
493
554
|
return self;
|
494
555
|
}
|
495
556
|
|
496
|
-
|
497
|
-
|
557
|
+
/* call-seq:
|
558
|
+
* ws.insert_chart(cell, chart, opts = {}) -> self
|
559
|
+
* ws.insert_chart(row, col, chart, opts = {}) -> self
|
560
|
+
*
|
561
|
+
* Inserts chart from +fname+ into the worksheet (at +cell+).
|
562
|
+
*
|
563
|
+
* For available +opts+ see #insert_image.
|
564
|
+
*/
|
498
565
|
VALUE
|
499
566
|
worksheet_insert_chart_(int argc, VALUE *argv, VALUE self) {
|
500
567
|
lxw_row_t row;
|
501
568
|
lxw_col_t col;
|
502
|
-
VALUE chart;
|
569
|
+
VALUE chart, opts = Qnil;
|
570
|
+
lxw_image_options options;
|
571
|
+
char with_options = '\0';
|
503
572
|
|
504
|
-
rb_check_arity(argc, 2,
|
573
|
+
rb_check_arity(argc, 2, 4);
|
505
574
|
int larg = extract_cell(argc, argv, &row, &col);
|
506
575
|
|
507
576
|
if (larg < argc) {
|
@@ -511,27 +580,49 @@ worksheet_insert_chart_(int argc, VALUE *argv, VALUE self) {
|
|
511
580
|
rb_raise(rb_eArgError, "No chart specified");
|
512
581
|
}
|
513
582
|
|
583
|
+
if (larg < argc) {
|
584
|
+
opts = argv[larg];
|
585
|
+
++larg;
|
586
|
+
}
|
587
|
+
|
588
|
+
if (!NIL_P(opts)) {
|
589
|
+
options = val_to_lxw_image_options(opts, &with_options);
|
590
|
+
}
|
591
|
+
|
514
592
|
struct worksheet *ptr;
|
515
593
|
struct chart *chart_ptr;
|
516
594
|
Data_Get_Struct(self, struct worksheet, ptr);
|
517
595
|
Data_Get_Struct(chart, struct chart, chart_ptr);
|
518
596
|
|
519
|
-
|
597
|
+
if (with_options) {
|
598
|
+
worksheet_insert_chart_opt(ptr->worksheet, row, col, chart_ptr->chart, &options);
|
599
|
+
} else {
|
600
|
+
worksheet_insert_chart(ptr->worksheet, row, col, chart_ptr->chart);
|
601
|
+
}
|
520
602
|
|
521
603
|
return self;
|
522
604
|
}
|
523
605
|
|
524
|
-
|
525
|
-
|
606
|
+
/* call-seq:
|
607
|
+
* ws.merge_range(range, value = "", format = nil) -> self
|
608
|
+
* ws.merge_range(cell_from, cell_to, value = "", format = nil) -> self
|
609
|
+
* ws.merge_range(row_from, col_from, row_to, col_to, value = "", format = nil) -> self
|
610
|
+
*
|
611
|
+
* Merges +range+, setting string +value+ with +format+.
|
612
|
+
*
|
613
|
+
* ws.merge_range('A1:D5')
|
614
|
+
* ws.merge_range('A1', 'D5', 'Merged cells')
|
615
|
+
* ws.merge_range(0, 0, 4, 3)
|
616
|
+
*/
|
526
617
|
VALUE
|
527
618
|
worksheet_merge_range_(int argc, VALUE *argv, VALUE self) {
|
528
|
-
char *str;
|
619
|
+
char *str = "";
|
529
620
|
lxw_format *format = NULL;
|
530
621
|
lxw_col_t col1, col2;
|
531
622
|
lxw_row_t row1, row2;
|
532
623
|
VALUE workbook = rb_iv_get(self, "@workbook");
|
533
624
|
|
534
|
-
rb_check_arity(argc,
|
625
|
+
rb_check_arity(argc, 1, 6);
|
535
626
|
int larg = extract_range(argc, argv, &row1, &col1, &row2, &col2);
|
536
627
|
|
537
628
|
if (larg < argc) {
|
@@ -551,6 +642,17 @@ worksheet_merge_range_(int argc, VALUE *argv, VALUE self) {
|
|
551
642
|
return self;
|
552
643
|
}
|
553
644
|
|
645
|
+
/* call-seq:
|
646
|
+
* ws.autofilter(range) -> self
|
647
|
+
* ws.autofilter(cell_from, cell_to) -> self
|
648
|
+
* ws.autofilter(row_from, col_from, row_to, col_to) -> self
|
649
|
+
*
|
650
|
+
* Applies autofilter to the +range+.
|
651
|
+
*
|
652
|
+
* ws.autofilter('A1:D5')
|
653
|
+
* ws.autofilter('A1', 'D5')
|
654
|
+
* ws.autofilter(0, 0, 4, 3)
|
655
|
+
*/
|
554
656
|
VALUE
|
555
657
|
worksheet_autofilter_(int argc, VALUE *argv, VALUE self) {
|
556
658
|
lxw_row_t row_from, row_to;
|
@@ -565,12 +667,22 @@ worksheet_autofilter_(int argc, VALUE *argv, VALUE self) {
|
|
565
667
|
worksheet_autofilter(ptr->worksheet, row_from, col_from, row_to, col_to);
|
566
668
|
return self;
|
567
669
|
}
|
670
|
+
|
671
|
+
/* call-seq: ws.activate -> self
|
672
|
+
*
|
673
|
+
* Set the worksheet to be active on opening the workbook.
|
674
|
+
*/
|
568
675
|
VALUE worksheet_activate_(VALUE self) {
|
569
676
|
struct worksheet *ptr;
|
570
677
|
Data_Get_Struct(self, struct worksheet, ptr);
|
571
678
|
worksheet_activate(ptr->worksheet);
|
572
679
|
return self;
|
573
680
|
}
|
681
|
+
|
682
|
+
/* call-seq: ws.select -> self
|
683
|
+
*
|
684
|
+
* Set the worksheet to be selected on openong the workbook.
|
685
|
+
*/
|
574
686
|
VALUE worksheet_select_(VALUE self) {
|
575
687
|
struct worksheet *ptr;
|
576
688
|
Data_Get_Struct(self, struct worksheet, ptr);
|
@@ -578,6 +690,10 @@ VALUE worksheet_select_(VALUE self) {
|
|
578
690
|
return self;
|
579
691
|
}
|
580
692
|
|
693
|
+
/* call-seq: ws.hide -> self
|
694
|
+
*
|
695
|
+
* Hide the worksheet.
|
696
|
+
*/
|
581
697
|
VALUE
|
582
698
|
worksheet_hide_(VALUE self) {
|
583
699
|
struct worksheet *ptr;
|
@@ -586,6 +702,11 @@ worksheet_hide_(VALUE self) {
|
|
586
702
|
return self;
|
587
703
|
}
|
588
704
|
|
705
|
+
/* call-seq: ws.set_fitst_sheet -> self
|
706
|
+
*
|
707
|
+
* Set the sheet to be the first visible in the sheets list (which is placed
|
708
|
+
* under the work area in Excel).
|
709
|
+
*/
|
589
710
|
VALUE
|
590
711
|
worksheet_set_first_sheet_(VALUE self) {
|
591
712
|
struct worksheet *ptr;
|
@@ -593,31 +714,47 @@ worksheet_set_first_sheet_(VALUE self) {
|
|
593
714
|
worksheet_set_first_sheet(ptr->worksheet);
|
594
715
|
return self;
|
595
716
|
}
|
717
|
+
|
718
|
+
/* call-seq:
|
719
|
+
* ws.freeze_panes(cell) -> self
|
720
|
+
* ws.freeze_panes(row, col) -> self
|
721
|
+
*
|
722
|
+
* Divides the worksheet into horizontal or vertical panes and freezes them.
|
723
|
+
*
|
724
|
+
* The specified +cell+ is the top left in the right bottom pane.
|
725
|
+
*
|
726
|
+
* In order to freeze only rows/cols pass 0 as +row+ or +col+.
|
727
|
+
*
|
728
|
+
* Advanced usage (with 2nd cell and type) is not documented yet.
|
729
|
+
*/
|
596
730
|
VALUE
|
597
731
|
worksheet_freeze_panes_(int argc, VALUE *argv, VALUE self) {
|
598
|
-
|
599
|
-
|
600
|
-
|
732
|
+
lxw_row_t row, row2;
|
733
|
+
lxw_col_t col, col2;
|
734
|
+
uint8_t type = 0;
|
735
|
+
rb_check_arity(argc, 1, 5);
|
736
|
+
int larg = extract_cell(argc, argv, &row, &col);
|
601
737
|
struct worksheet *ptr;
|
602
738
|
Data_Get_Struct(self, struct worksheet, ptr);
|
603
|
-
if (
|
604
|
-
worksheet_freeze_panes(ptr->worksheet,
|
739
|
+
if (larg >= argc) {
|
740
|
+
worksheet_freeze_panes(ptr->worksheet, row, col);
|
605
741
|
} else {
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
if (argc > 3)
|
612
|
-
col2 = argv[3];
|
613
|
-
if (argc > 4)
|
614
|
-
type = NUM2INT(argv[4]);
|
615
|
-
worksheet_freeze_panes_opt(ptr->worksheet, NUM2INT(row), value_to_col(col),
|
616
|
-
NUM2INT(row2), value_to_col(col2), type);
|
742
|
+
larg += extract_cell(argc - larg, argv + larg, &row2, &col2);
|
743
|
+
if (larg < argc) {
|
744
|
+
type = NUM2INT(argv[larg]);
|
745
|
+
}
|
746
|
+
worksheet_freeze_panes_opt(ptr->worksheet, row, col, row2, col2, type);
|
617
747
|
}
|
618
748
|
return self;
|
619
749
|
}
|
620
750
|
|
751
|
+
/* call-seq: ws.split_panes(vertical, horizontal) -> self
|
752
|
+
*
|
753
|
+
* Divides the worksheet int vertical and horizontal panes with respective
|
754
|
+
* positions from parameters (Numeric).
|
755
|
+
*
|
756
|
+
* If only one split is desired pass 0 for other.
|
757
|
+
*/
|
621
758
|
VALUE
|
622
759
|
worksheet_split_panes_(VALUE self, VALUE vertical, VALUE horizontal) {
|
623
760
|
struct worksheet *ptr;
|
@@ -626,6 +763,17 @@ worksheet_split_panes_(VALUE self, VALUE vertical, VALUE horizontal) {
|
|
626
763
|
return self;
|
627
764
|
}
|
628
765
|
|
766
|
+
/* call-seq:
|
767
|
+
* ws.set_selection(range) -> self
|
768
|
+
* ws.set_selection(cell_from, cell_to) -> self
|
769
|
+
* ws.set_selection(row_from, col_from, row_to, col_to) -> self
|
770
|
+
*
|
771
|
+
* Selects the specified +range+ on the worksheet.
|
772
|
+
*
|
773
|
+
* ws.set_selection('A1:G5')
|
774
|
+
* ws.set_selection('A1', 'G5')
|
775
|
+
* ws.set_selection(0, 0, 4, 6)
|
776
|
+
*/
|
629
777
|
VALUE
|
630
778
|
worksheet_set_selection_(int argc, VALUE *argv, VALUE self) {
|
631
779
|
lxw_row_t row_from, row_to;
|
@@ -641,6 +789,10 @@ worksheet_set_selection_(int argc, VALUE *argv, VALUE self) {
|
|
641
789
|
return self;
|
642
790
|
}
|
643
791
|
|
792
|
+
/* call-seq: ws.set_landscape -> self
|
793
|
+
*
|
794
|
+
* Sets print orientation of the worksheet to landscape.
|
795
|
+
*/
|
644
796
|
VALUE
|
645
797
|
worksheet_set_landscape_(VALUE self) {
|
646
798
|
struct worksheet *ptr;
|
@@ -649,6 +801,10 @@ worksheet_set_landscape_(VALUE self) {
|
|
649
801
|
return self;
|
650
802
|
}
|
651
803
|
|
804
|
+
/* call-seq: ws.set_portrait -> self
|
805
|
+
*
|
806
|
+
* Sets print orientation of the worksheet to portrait.
|
807
|
+
*/
|
652
808
|
VALUE
|
653
809
|
worksheet_set_portrait_(VALUE self) {
|
654
810
|
struct worksheet *ptr;
|
@@ -657,6 +813,10 @@ worksheet_set_portrait_(VALUE self) {
|
|
657
813
|
return self;
|
658
814
|
}
|
659
815
|
|
816
|
+
/* call-seq: ws.set_page_view -> self
|
817
|
+
*
|
818
|
+
* Sets worksheet displa mode to "Page View/Layout".
|
819
|
+
*/
|
660
820
|
VALUE
|
661
821
|
worksheet_set_page_view_(VALUE self) {
|
662
822
|
struct worksheet *ptr;
|
@@ -665,6 +825,10 @@ worksheet_set_page_view_(VALUE self) {
|
|
665
825
|
return self;
|
666
826
|
}
|
667
827
|
|
828
|
+
/* call-seq: ws.paper=(type) -> type
|
829
|
+
*
|
830
|
+
* Sets the paper +type+ for printing. See {libxlsxwriter doc}[https://libxlsxwriter.github.io/worksheet_8h.html#a9f8af12017797b10c5ee68e04149032f] for options.
|
831
|
+
*/
|
668
832
|
VALUE
|
669
833
|
worksheet_set_paper_(VALUE self, VALUE paper_type) {
|
670
834
|
struct worksheet *ptr;
|
@@ -673,6 +837,7 @@ worksheet_set_paper_(VALUE self, VALUE paper_type) {
|
|
673
837
|
return self;
|
674
838
|
}
|
675
839
|
|
840
|
+
/* Sets the worksheet margins (Numeric) for the printed page. */
|
676
841
|
VALUE
|
677
842
|
worksheet_set_margins_(VALUE self, VALUE left, VALUE right, VALUE top, VALUE bottom) {
|
678
843
|
struct worksheet *ptr;
|
@@ -681,6 +846,13 @@ worksheet_set_margins_(VALUE self, VALUE left, VALUE right, VALUE top, VALUE bot
|
|
681
846
|
return self;
|
682
847
|
}
|
683
848
|
|
849
|
+
/* call-seq: ws.set_header(text, opts) -> self
|
850
|
+
*
|
851
|
+
* See {libxlsxwriter doc}[https://libxlsxwriter.github.io/worksheet_8h.html#a4070c24ed5107f33e94f30a1bf865ba9]
|
852
|
+
* for the +text+ control characters.
|
853
|
+
*
|
854
|
+
* Currently the only supported option is +:margin+ (Numeric).
|
855
|
+
*/
|
684
856
|
VALUE
|
685
857
|
worksheet_set_header_(VALUE self, VALUE val, VALUE opts) {
|
686
858
|
const char *str = StringValueCStr(val);
|
@@ -703,6 +875,10 @@ worksheet_set_header_(VALUE self, VALUE val, VALUE opts) {
|
|
703
875
|
return self;
|
704
876
|
}
|
705
877
|
|
878
|
+
/* call-seq: ws.set_footer(text, opts)
|
879
|
+
*
|
880
|
+
* See #set_header for params description.
|
881
|
+
*/
|
706
882
|
VALUE
|
707
883
|
worksheet_set_footer_(VALUE self, VALUE val, VALUE opts) {
|
708
884
|
const char *str = StringValueCStr(val);
|
@@ -725,6 +901,12 @@ worksheet_set_footer_(VALUE self, VALUE val, VALUE opts) {
|
|
725
901
|
return self;
|
726
902
|
}
|
727
903
|
|
904
|
+
/* call-seq: wb.h_pagebreaks=(breaks) -> breaks
|
905
|
+
*
|
906
|
+
* Adds horizontal page +breaks+ to the worksheet.
|
907
|
+
*
|
908
|
+
* wb.h_pagebreaks = [20, 40, 80]
|
909
|
+
*/
|
728
910
|
VALUE
|
729
911
|
worksheet_set_h_pagebreaks_(VALUE self, VALUE val) {
|
730
912
|
const size_t len = RARRAY_LEN(val);
|
@@ -739,6 +921,12 @@ worksheet_set_h_pagebreaks_(VALUE self, VALUE val) {
|
|
739
921
|
return val;
|
740
922
|
}
|
741
923
|
|
924
|
+
/* call-seq: wb.h_pagebreaks=(breaks) -> breaks
|
925
|
+
*
|
926
|
+
* Adds vertical page +breaks+ to the worksheet.
|
927
|
+
*
|
928
|
+
* wb.v_pagebreaks = [20, 40, 80]
|
929
|
+
*/
|
742
930
|
VALUE
|
743
931
|
worksheet_set_v_pagebreaks_(VALUE self, VALUE val) {
|
744
932
|
const size_t len = RARRAY_LEN(val);
|
@@ -753,6 +941,7 @@ worksheet_set_v_pagebreaks_(VALUE self, VALUE val) {
|
|
753
941
|
return val;
|
754
942
|
}
|
755
943
|
|
944
|
+
/* Changes the default print direction */
|
756
945
|
VALUE
|
757
946
|
worksheet_print_across_(VALUE self) {
|
758
947
|
struct worksheet *ptr;
|
@@ -761,6 +950,10 @@ worksheet_print_across_(VALUE self) {
|
|
761
950
|
return self;
|
762
951
|
}
|
763
952
|
|
953
|
+
/* call-seq: ws.zoom=(zoom) -> zoom
|
954
|
+
*
|
955
|
+
* Sets the worksheet zoom factor in the range 10 <= +zoom+ <= 400.
|
956
|
+
*/
|
764
957
|
VALUE
|
765
958
|
worksheet_set_zoom_(VALUE self, VALUE val) {
|
766
959
|
struct worksheet *ptr;
|
@@ -769,6 +962,12 @@ worksheet_set_zoom_(VALUE self, VALUE val) {
|
|
769
962
|
return self;
|
770
963
|
}
|
771
964
|
|
965
|
+
/* call-seq: ws.gridlines=(option) -> option
|
966
|
+
*
|
967
|
+
* Display or hide screen and print gridlines using one of the values
|
968
|
+
* XlsxWriter::Worksheet::{GRIDLINES_HIDE_ALL, GRIDLINES_SHOW_SCREEN,
|
969
|
+
* GRIDLINES_SHOW_PRINT, GRIDLINES_SHOW_ALL}.
|
970
|
+
*/
|
772
971
|
VALUE
|
773
972
|
worksheet_gridlines_(VALUE self, VALUE value) {
|
774
973
|
struct worksheet *ptr;
|
@@ -779,6 +978,7 @@ worksheet_gridlines_(VALUE self, VALUE value) {
|
|
779
978
|
return value;
|
780
979
|
}
|
781
980
|
|
981
|
+
/* Center the worksheet data horizontally between the margins on the printed page */
|
782
982
|
VALUE
|
783
983
|
worksheet_center_horizontally_(VALUE self){
|
784
984
|
struct worksheet *ptr;
|
@@ -787,6 +987,7 @@ worksheet_center_horizontally_(VALUE self){
|
|
787
987
|
return self;
|
788
988
|
}
|
789
989
|
|
990
|
+
/* Center the worksheet data vertically between the margins on the printed page */
|
790
991
|
VALUE
|
791
992
|
worksheet_center_vertically_(VALUE self) {
|
792
993
|
struct worksheet *ptr;
|
@@ -795,6 +996,7 @@ worksheet_center_vertically_(VALUE self) {
|
|
795
996
|
return self;
|
796
997
|
}
|
797
998
|
|
999
|
+
/* Print rows and column header (wich is disabled by default). */
|
798
1000
|
VALUE
|
799
1001
|
worksheet_print_row_col_headers_(VALUE self) {
|
800
1002
|
struct worksheet *ptr;
|
@@ -803,6 +1005,10 @@ worksheet_print_row_col_headers_(VALUE self) {
|
|
803
1005
|
return self;
|
804
1006
|
}
|
805
1007
|
|
1008
|
+
/* call-seq: ws.repeat_rows(row_from, row_to)
|
1009
|
+
*
|
1010
|
+
* Sets rows to be repeatedly printed out on all pages.
|
1011
|
+
*/
|
806
1012
|
VALUE
|
807
1013
|
worksheet_repeat_rows_(VALUE self, VALUE row_from, VALUE row_to) {
|
808
1014
|
struct worksheet *ptr;
|
@@ -811,6 +1017,10 @@ worksheet_repeat_rows_(VALUE self, VALUE row_from, VALUE row_to) {
|
|
811
1017
|
return self;
|
812
1018
|
}
|
813
1019
|
|
1020
|
+
/* call-seq: ws.repeat_columns(col_from, col_to)
|
1021
|
+
*
|
1022
|
+
* Sets columns to be repeatedly printed out on all pages.
|
1023
|
+
*/
|
814
1024
|
VALUE
|
815
1025
|
worksheet_repeat_columns_(VALUE self, VALUE col_from, VALUE col_to) {
|
816
1026
|
struct worksheet *ptr;
|
@@ -819,6 +1029,13 @@ worksheet_repeat_columns_(VALUE self, VALUE col_from, VALUE col_to) {
|
|
819
1029
|
return self;
|
820
1030
|
}
|
821
1031
|
|
1032
|
+
/* call-seq:
|
1033
|
+
* ws.print_area(range)
|
1034
|
+
* ws.print_area(cell_from, cell_to)
|
1035
|
+
* ws.print_area(row_from, col_from, row_to, col_to)
|
1036
|
+
*
|
1037
|
+
* Specifies area of the worksheet to be printed.
|
1038
|
+
*/
|
822
1039
|
VALUE
|
823
1040
|
worksheet_print_area_(int argc, VALUE *argv, VALUE self) {
|
824
1041
|
lxw_row_t row_from, row_to;
|
@@ -834,6 +1051,11 @@ worksheet_print_area_(int argc, VALUE *argv, VALUE self) {
|
|
834
1051
|
return self;
|
835
1052
|
}
|
836
1053
|
|
1054
|
+
/* call-seq: ws.fit_to_pages(width, height) -> self
|
1055
|
+
*
|
1056
|
+
* Fits the printed area to a specific number of pages both vertically and
|
1057
|
+
* horizontally.
|
1058
|
+
*/
|
837
1059
|
VALUE
|
838
1060
|
worksheet_fit_to_pages_(VALUE self, VALUE width, VALUE height) {
|
839
1061
|
struct worksheet *ptr;
|
@@ -842,6 +1064,10 @@ worksheet_fit_to_pages_(VALUE self, VALUE width, VALUE height) {
|
|
842
1064
|
return self;
|
843
1065
|
}
|
844
1066
|
|
1067
|
+
/* call-seq: ws.start_page=(page) -> page
|
1068
|
+
*
|
1069
|
+
* Set the number of the first printed page.
|
1070
|
+
*/
|
845
1071
|
VALUE
|
846
1072
|
worksheet_set_start_page_(VALUE self, VALUE start_page) {
|
847
1073
|
struct worksheet *ptr;
|
@@ -850,6 +1076,10 @@ worksheet_set_start_page_(VALUE self, VALUE start_page) {
|
|
850
1076
|
return start_page;
|
851
1077
|
}
|
852
1078
|
|
1079
|
+
/* call-seq: ws.print_scale=(scale) -> scale
|
1080
|
+
*
|
1081
|
+
* Sets the +scale+ factor of the printed page (10 <= +scale+ <= 400).
|
1082
|
+
*/
|
853
1083
|
VALUE
|
854
1084
|
worksheet_set_print_scale_(VALUE self, VALUE scale) {
|
855
1085
|
struct worksheet *ptr;
|
@@ -858,6 +1088,7 @@ worksheet_set_print_scale_(VALUE self, VALUE scale) {
|
|
858
1088
|
return scale;
|
859
1089
|
}
|
860
1090
|
|
1091
|
+
/* Sets text direction to rtl (e.g. for worksheets on Hebrew or Arabic). */
|
861
1092
|
VALUE
|
862
1093
|
worksheet_right_to_left_(VALUE self) {
|
863
1094
|
struct worksheet *ptr;
|
@@ -866,6 +1097,7 @@ worksheet_right_to_left_(VALUE self) {
|
|
866
1097
|
return self;
|
867
1098
|
}
|
868
1099
|
|
1100
|
+
/* Hides all zero values. */
|
869
1101
|
VALUE
|
870
1102
|
worksheet_hide_zero_(VALUE self) {
|
871
1103
|
struct worksheet *ptr;
|
@@ -874,6 +1106,12 @@ worksheet_hide_zero_(VALUE self) {
|
|
874
1106
|
return self;
|
875
1107
|
}
|
876
1108
|
|
1109
|
+
/* call-seq: ws.tab_color=(color) -> color
|
1110
|
+
*
|
1111
|
+
* Set the tab color (from RGB integer).
|
1112
|
+
*
|
1113
|
+
* ws.tab_color = 0xF0F0F0
|
1114
|
+
*/
|
877
1115
|
VALUE
|
878
1116
|
worksheet_set_tab_color_(VALUE self, VALUE color) {
|
879
1117
|
struct worksheet *ptr;
|
@@ -882,13 +1120,20 @@ worksheet_set_tab_color_(VALUE self, VALUE color) {
|
|
882
1120
|
return color;
|
883
1121
|
}
|
884
1122
|
|
1123
|
+
/* call-seq: ws.protect(password[, opts]) -> self
|
1124
|
+
*
|
1125
|
+
* Protects the worksheet elements from modification.
|
1126
|
+
* See {libxlsxwriter doc}[https://libxlsxwriter.github.io/worksheet_8h.html#a1b49e135d4debcdb25941f2f40f04cb0]
|
1127
|
+
* for options.
|
1128
|
+
*/
|
885
1129
|
VALUE
|
886
1130
|
worksheet_protect_(int argc, VALUE *argv, VALUE self) {
|
887
1131
|
rb_check_arity(argc, 0, 2);
|
888
1132
|
uint8_t with_options = '\0';
|
889
1133
|
VALUE val;
|
890
1134
|
VALUE opts = Qnil;
|
891
|
-
|
1135
|
+
// All options are off by default
|
1136
|
+
lxw_protection options = {};
|
892
1137
|
const char *password = NULL;
|
893
1138
|
if (argc > 0 && !NIL_P(argv[0])) {
|
894
1139
|
switch (TYPE(argv[0])) {
|
@@ -911,9 +1156,6 @@ worksheet_protect_(int argc, VALUE *argv, VALUE self) {
|
|
911
1156
|
}
|
912
1157
|
}
|
913
1158
|
|
914
|
-
// All options are off by default
|
915
|
-
memset(&options, 0, sizeof options);
|
916
|
-
|
917
1159
|
if (!NIL_P(opts)) {
|
918
1160
|
#define PR_OPT(field) { \
|
919
1161
|
val = rb_hash_aref(opts, ID2SYM(rb_intern(#field))); \
|
@@ -949,6 +1191,10 @@ worksheet_protect_(int argc, VALUE *argv, VALUE self) {
|
|
949
1191
|
return self;
|
950
1192
|
}
|
951
1193
|
|
1194
|
+
/* call-seq: ws.set_default_row(height, hide_unuser_rows) -> self
|
1195
|
+
*
|
1196
|
+
* Sets the default row properties for the worksheet.
|
1197
|
+
*/
|
952
1198
|
VALUE
|
953
1199
|
worksheet_set_default_row_(VALUE self, VALUE height, VALUE hide_unused_rows) {
|
954
1200
|
struct worksheet *ptr;
|
@@ -958,14 +1204,21 @@ worksheet_set_default_row_(VALUE self, VALUE height, VALUE hide_unused_rows) {
|
|
958
1204
|
return self;
|
959
1205
|
}
|
960
1206
|
|
961
|
-
|
1207
|
+
/* call-seq: ws.vertical_dpi -> int
|
1208
|
+
*
|
1209
|
+
* Returns the vertical dpi.
|
1210
|
+
*/
|
962
1211
|
VALUE
|
963
1212
|
worksheet_get_vertical_dpi_(VALUE self) {
|
964
1213
|
struct worksheet *ptr;
|
965
1214
|
Data_Get_Struct(self, struct worksheet, ptr);
|
966
|
-
return ptr->worksheet->vertical_dpi;
|
1215
|
+
return INT2NUM(ptr->worksheet->vertical_dpi);
|
967
1216
|
}
|
968
1217
|
|
1218
|
+
/* call-seq: ws.vertical_dpi=(dpi) -> dpi
|
1219
|
+
*
|
1220
|
+
* Sets the vertical dpi.
|
1221
|
+
*/
|
969
1222
|
VALUE
|
970
1223
|
worksheet_set_vertical_dpi_(VALUE self, VALUE val) {
|
971
1224
|
struct worksheet *ptr;
|
@@ -1062,3 +1315,101 @@ int extract_range(int argc, VALUE *argv, lxw_row_t *row_from, lxw_col_t *col_fro
|
|
1062
1315
|
larg += extract_cell(argc - larg, argv + larg, row_to, col_to);
|
1063
1316
|
return larg;
|
1064
1317
|
}
|
1318
|
+
|
1319
|
+
#define SET_IMG_OPT(key, setter) { \
|
1320
|
+
val = rb_hash_aref(opts, ID2SYM(rb_intern(key))); \
|
1321
|
+
if (!NIL_P(val)) { \
|
1322
|
+
(*with_options) = '\1'; \
|
1323
|
+
setter; \
|
1324
|
+
} \
|
1325
|
+
}
|
1326
|
+
lxw_image_options
|
1327
|
+
val_to_lxw_image_options(VALUE opts, char *with_options) {
|
1328
|
+
VALUE val;
|
1329
|
+
lxw_image_options options = {
|
1330
|
+
.x_offset = 0,
|
1331
|
+
.y_offset = 0,
|
1332
|
+
.x_scale = 1.0,
|
1333
|
+
.y_scale = 1.0
|
1334
|
+
};
|
1335
|
+
SET_IMG_OPT("offset", options.x_offset = options.y_offset = NUM2INT(val));
|
1336
|
+
SET_IMG_OPT("x_offset", options.x_offset = NUM2INT(val));
|
1337
|
+
SET_IMG_OPT("y_offset", options.y_offset = NUM2INT(val));
|
1338
|
+
SET_IMG_OPT("scale", options.x_scale = options.y_scale = NUM2DBL(val));
|
1339
|
+
SET_IMG_OPT("x_scale", options.x_scale = NUM2DBL(val));
|
1340
|
+
SET_IMG_OPT("y_scale", options.y_scale = NUM2DBL(val));
|
1341
|
+
return options;
|
1342
|
+
}
|
1343
|
+
#undef SET_IMG_OPT
|
1344
|
+
|
1345
|
+
|
1346
|
+
void
|
1347
|
+
init_xlsxwriter_worksheet() {
|
1348
|
+
/* Xlsx worksheet */
|
1349
|
+
cWorksheet = rb_define_class_under(mXlsxWriter, "Worksheet", rb_cObject);
|
1350
|
+
|
1351
|
+
rb_define_alloc_func(cWorksheet, worksheet_alloc);
|
1352
|
+
rb_define_method(cWorksheet, "initialize", worksheet_init, -1);
|
1353
|
+
rb_define_method(cWorksheet, "free", worksheet_release, 0);
|
1354
|
+
rb_define_method(cWorksheet, "write_string", worksheet_write_string_, -1);
|
1355
|
+
rb_define_method(cWorksheet, "write_number", worksheet_write_number_, -1);
|
1356
|
+
rb_define_method(cWorksheet, "write_formula", worksheet_write_formula_, -1);
|
1357
|
+
rb_define_method(cWorksheet, "write_array_formula", worksheet_write_array_formula_, -1);
|
1358
|
+
rb_define_method(cWorksheet, "write_datetime", worksheet_write_datetime_, -1);
|
1359
|
+
rb_define_method(cWorksheet, "write_url", worksheet_write_url_, -1);
|
1360
|
+
rb_define_method(cWorksheet, "write_boolean", worksheet_write_boolean_, -1);
|
1361
|
+
rb_define_method(cWorksheet, "write_blank", worksheet_write_blank_, -1);
|
1362
|
+
rb_define_method(cWorksheet, "write_formula_num", worksheet_write_formula_num_, -1);
|
1363
|
+
rb_define_method(cWorksheet, "set_row", worksheet_set_row_, 2);
|
1364
|
+
rb_define_method(cWorksheet, "set_column", worksheet_set_column_, 3);
|
1365
|
+
rb_define_method(cWorksheet, "insert_image", worksheet_insert_image_, -1);
|
1366
|
+
rb_define_method(cWorksheet, "insert_chart", worksheet_insert_chart_, -1);
|
1367
|
+
rb_define_method(cWorksheet, "merge_range", worksheet_merge_range_, -1);
|
1368
|
+
rb_define_method(cWorksheet, "autofilter", worksheet_autofilter_, -1);
|
1369
|
+
rb_define_method(cWorksheet, "activate", worksheet_activate_, 0);
|
1370
|
+
rb_define_method(cWorksheet, "select", worksheet_select_, 0);
|
1371
|
+
rb_define_method(cWorksheet, "hide", worksheet_hide_, 0);
|
1372
|
+
rb_define_method(cWorksheet, "set_first_sheet", worksheet_set_first_sheet_, 0);
|
1373
|
+
rb_define_method(cWorksheet, "freeze_panes", worksheet_freeze_panes_, -1);
|
1374
|
+
rb_define_method(cWorksheet, "split_panes", worksheet_split_panes_, 2);
|
1375
|
+
rb_define_method(cWorksheet, "set_selection", worksheet_set_selection_, -1);
|
1376
|
+
rb_define_method(cWorksheet, "set_landscape", worksheet_set_landscape_, 0);
|
1377
|
+
rb_define_method(cWorksheet, "set_portrait", worksheet_set_portrait_, 0);
|
1378
|
+
rb_define_method(cWorksheet, "set_page_view", worksheet_set_page_view_, 0);
|
1379
|
+
rb_define_method(cWorksheet, "paper=", worksheet_set_paper_, 1);
|
1380
|
+
rb_define_method(cWorksheet, "set_margins", worksheet_set_margins_, 4);
|
1381
|
+
rb_define_method(cWorksheet, "set_header", worksheet_set_header_, 1);
|
1382
|
+
rb_define_method(cWorksheet, "set_footer", worksheet_set_footer_, 1);
|
1383
|
+
rb_define_method(cWorksheet, "h_pagebreaks=", worksheet_set_h_pagebreaks_, 1);
|
1384
|
+
rb_define_method(cWorksheet, "v_pagebreaks=", worksheet_set_v_pagebreaks_, 1);
|
1385
|
+
rb_define_method(cWorksheet, "print_across", worksheet_print_across_, 0);
|
1386
|
+
rb_define_method(cWorksheet, "zoom=", worksheet_set_zoom_, 1);
|
1387
|
+
rb_define_method(cWorksheet, "gridlines=", worksheet_gridlines_, 1);
|
1388
|
+
rb_define_method(cWorksheet, "center_horizontally", worksheet_center_horizontally_, 0);
|
1389
|
+
rb_define_method(cWorksheet, "center_vertically", worksheet_center_vertically_, 0);
|
1390
|
+
rb_define_method(cWorksheet, "print_row_col_headers", worksheet_print_row_col_headers_, 0);
|
1391
|
+
rb_define_method(cWorksheet, "repeat_rows", worksheet_repeat_rows_, 2);
|
1392
|
+
rb_define_method(cWorksheet, "repeat_columns", worksheet_repeat_columns_, 2);
|
1393
|
+
rb_define_method(cWorksheet, "print_area", worksheet_print_area_, -1);
|
1394
|
+
rb_define_method(cWorksheet, "fit_to_pages", worksheet_fit_to_pages_, 2);
|
1395
|
+
rb_define_method(cWorksheet, "start_page=", worksheet_set_start_page_, 1);
|
1396
|
+
rb_define_method(cWorksheet, "print_scale=", worksheet_set_print_scale_, 1);
|
1397
|
+
rb_define_method(cWorksheet, "right_to_left", worksheet_right_to_left_, 0);
|
1398
|
+
rb_define_method(cWorksheet, "hide_zero", worksheet_hide_zero_, 0);
|
1399
|
+
rb_define_method(cWorksheet, "tab_color=", worksheet_set_tab_color_, 1);
|
1400
|
+
rb_define_method(cWorksheet, "protect", worksheet_protect_, -1);
|
1401
|
+
rb_define_method(cWorksheet, "set_default_row", worksheet_set_default_row_, 2);
|
1402
|
+
|
1403
|
+
rb_define_method(cWorksheet, "vertical_dpi", worksheet_get_vertical_dpi_, 0);
|
1404
|
+
rb_define_method(cWorksheet, "vertical_dpi=", worksheet_set_vertical_dpi_, 1);
|
1405
|
+
|
1406
|
+
#define MAP_LXW_WH_CONST(name, val_name) rb_define_const(cWorksheet, #name, INT2NUM(LXW_##val_name))
|
1407
|
+
MAP_LXW_WH_CONST(DEF_COL_WIDTH, DEF_COL_WIDTH);
|
1408
|
+
MAP_LXW_WH_CONST(DEF_ROW_HEIGHT, DEF_ROW_HEIGHT);
|
1409
|
+
|
1410
|
+
MAP_LXW_WH_CONST(GRIDLINES_HIDE_ALL, HIDE_ALL_GRIDLINES);
|
1411
|
+
MAP_LXW_WH_CONST(GRIDLINES_SHOW_SCREEN, SHOW_SCREEN_GRIDLINES);
|
1412
|
+
MAP_LXW_WH_CONST(GRIDLINES_SHOW_PRINT, SHOW_PRINT_GRIDLINES);
|
1413
|
+
MAP_LXW_WH_CONST(GRIDLINES_SHOW_ALL, SHOW_ALL_GRIDLINES);
|
1414
|
+
#undef MAP_LXW_WH_CONST
|
1415
|
+
}
|