fast_excel 0.2.6 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.dockerignore +2 -0
- data/.gitignore +3 -0
- data/.travis.yml +18 -6
- data/CHANGELOG.md +14 -1
- data/Dockerfile.test +16 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +21 -21
- data/Makefile +13 -2
- data/README.md +148 -38
- data/Rakefile +2 -0
- data/examples/example.rb +3 -3
- data/examples/example_filters.rb +36 -0
- data/examples/example_formula.rb +1 -3
- data/examples/example_hyperlink.rb +20 -0
- data/fast_excel.gemspec +1 -1
- data/lib/fast_excel.rb +36 -12
- data/lib/fast_excel/binding.rb +31 -21
- data/lib/fast_excel/binding/chart.rb +20 -1
- data/lib/fast_excel/binding/workbook.rb +10 -2
- data/lib/fast_excel/binding/worksheet.rb +44 -27
- data/libxlsxwriter/.gitignore +1 -0
- data/libxlsxwriter/.indent.pro +5 -0
- data/libxlsxwriter/CMakeLists.txt +1 -11
- data/libxlsxwriter/CONTRIBUTING.md +1 -1
- data/libxlsxwriter/Changes.txt +84 -0
- data/libxlsxwriter/LICENSE.txt +1 -1
- data/libxlsxwriter/Makefile +7 -5
- data/libxlsxwriter/Readme.md +1 -1
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +1 -0
- data/libxlsxwriter/include/xlsxwriter.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/chart.h +56 -6
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +544 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +27 -6
- data/libxlsxwriter/include/xlsxwriter/content_types.h +5 -2
- data/libxlsxwriter/include/xlsxwriter/core.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/custom.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/drawing.h +3 -2
- data/libxlsxwriter/include/xlsxwriter/format.h +3 -3
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/packager.h +13 -8
- data/libxlsxwriter/include/xlsxwriter/relationships.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +5 -3
- data/libxlsxwriter/include/xlsxwriter/styles.h +9 -4
- data/libxlsxwriter/include/xlsxwriter/theme.h +2 -2
- data/libxlsxwriter/include/xlsxwriter/utility.h +26 -2
- data/libxlsxwriter/include/xlsxwriter/workbook.h +232 -55
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +264 -53
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +3 -1
- data/libxlsxwriter/libxlsxwriter.podspec +1 -1
- data/libxlsxwriter/src/Makefile +3 -3
- data/libxlsxwriter/src/app.c +2 -2
- data/libxlsxwriter/src/chart.c +41 -5
- data/libxlsxwriter/src/chartsheet.c +508 -0
- data/libxlsxwriter/src/content_types.c +12 -4
- data/libxlsxwriter/src/core.c +2 -2
- data/libxlsxwriter/src/custom.c +2 -2
- data/libxlsxwriter/src/drawing.c +114 -17
- data/libxlsxwriter/src/format.c +3 -3
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/packager.c +369 -65
- data/libxlsxwriter/src/relationships.c +2 -2
- data/libxlsxwriter/src/shared_strings.c +18 -4
- data/libxlsxwriter/src/styles.c +56 -9
- data/libxlsxwriter/src/theme.c +2 -2
- data/libxlsxwriter/src/utility.c +53 -6
- data/libxlsxwriter/src/workbook.c +372 -56
- data/libxlsxwriter/src/worksheet.c +425 -76
- data/libxlsxwriter/src/xmlwriter.c +17 -8
- data/libxlsxwriter/third_party/minizip/ioapi.c +10 -0
- data/libxlsxwriter/third_party/minizip/zip.c +2 -0
- data/libxlsxwriter/third_party/tmpfileplus/tmpfileplus.c +2 -2
- data/libxlsxwriter/version.txt +1 -1
- data/test/tmpfile_test.rb +1 -0
- data/test/validations_test.rb +26 -6
- data/test/worksheet_test.rb +43 -0
- metadata +9 -6
- data/libxlsxwriter/.drone.yml +0 -27
- data/libxlsxwriter/appveyor.yml +0 -65
- data/libxlsxwriter/cmake/FindZLIB.cmake +0 -123
data/Rakefile
CHANGED
@@ -17,12 +17,14 @@ end
|
|
17
17
|
|
18
18
|
#task :default => :test
|
19
19
|
|
20
|
+
desc "Run all examples"
|
20
21
|
task :examples do
|
21
22
|
Dir.glob('examples/**/*.rb').each do |file|
|
22
23
|
require './' + file.sub(/\.rb$/, '')
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
27
|
+
desc "Compile libxlsxwriter shared library"
|
26
28
|
task :compile do
|
27
29
|
%x{
|
28
30
|
cd ext/fast_excel
|
data/examples/example.rb
CHANGED
@@ -11,7 +11,7 @@ workbook.default_format.set(
|
|
11
11
|
|
12
12
|
worksheet = workbook.add_worksheet("Payments Report")
|
13
13
|
|
14
|
-
bold = workbook.
|
14
|
+
bold = workbook.bold_format
|
15
15
|
worksheet.set_column(0, 0, FastExcel::DEF_COL_WIDTH, bold)
|
16
16
|
|
17
17
|
price = workbook.number_format("#,##0.00")
|
@@ -20,10 +20,10 @@ worksheet.set_column(1, 1, 20, price)
|
|
20
20
|
date_format = workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@")
|
21
21
|
worksheet.set_column(2, 2, 20, date_format)
|
22
22
|
|
23
|
-
worksheet.write_row(0, ["message", "price", "date"], bold)
|
23
|
+
worksheet.write_row(0, ["message", "price", "date", "complete"], bold)
|
24
24
|
|
25
25
|
for i in 1..1000
|
26
|
-
worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now])
|
26
|
+
worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now, i % 2 == 0])
|
27
27
|
|
28
28
|
# Or manually
|
29
29
|
# worksheet.write_string(i, 0, "Hello", nil)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../lib/fast_excel'
|
2
|
+
|
3
|
+
`rm example_filters.xlsx` if File.exist?('example_filters.xlsx')
|
4
|
+
workbook = FastExcel.open("example_filters.xlsx", constant_memory: false)
|
5
|
+
|
6
|
+
workbook.default_format.set(
|
7
|
+
font_size: 0, # user's default
|
8
|
+
#font_family: "Arial"
|
9
|
+
)
|
10
|
+
|
11
|
+
# pp workbook.default_format
|
12
|
+
|
13
|
+
worksheet = workbook.add_worksheet("Payments Report")
|
14
|
+
|
15
|
+
p worksheet[:filter_on]
|
16
|
+
FastExcel.print_ffi_obj(worksheet)
|
17
|
+
|
18
|
+
bold = workbook.bold_format
|
19
|
+
worksheet.set_column(0, 0, FastExcel::DEF_COL_WIDTH, bold)
|
20
|
+
|
21
|
+
price = workbook.number_format("#,##0.00")
|
22
|
+
worksheet.set_column(1, 1, 20, price)
|
23
|
+
|
24
|
+
date_format = workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@")
|
25
|
+
worksheet.set_column(2, 2, 20, date_format)
|
26
|
+
|
27
|
+
worksheet.write_row(0, ["message", "price", "date", "complete"], bold)
|
28
|
+
|
29
|
+
for i in 1..1000
|
30
|
+
worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now, i % 2 == 0])
|
31
|
+
end
|
32
|
+
|
33
|
+
worksheet.enable_filters!(end_col: 3)
|
34
|
+
|
35
|
+
workbook.close
|
36
|
+
puts "Saved to file example_filters.xlsx"
|
data/examples/example_formula.rb
CHANGED
@@ -10,9 +10,7 @@ worksheet.write_row(2, ["Phone", 0.138])
|
|
10
10
|
worksheet.write_row(3, ["Mouse", 0.099])
|
11
11
|
worksheet.write_row(4, ["Speaker", 2.5])
|
12
12
|
worksheet.write_row(5, ["Camera", 0.383])
|
13
|
-
worksheet.write_row(6, ["Total", FastExcel::Formula.new("SUM(B2:B6)")], workbook.
|
14
|
-
|
15
|
-
bold = workbook.bold_cell_format
|
13
|
+
worksheet.write_row(6, ["Total", FastExcel::Formula.new("SUM(B2:B6)")], workbook.bold_format)
|
16
14
|
|
17
15
|
workbook.close
|
18
16
|
puts "Saved to file example_formula.xlsx"
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative '../lib/fast_excel'
|
2
|
+
|
3
|
+
workbook = FastExcel.open("example_hyperlink.xlsx", constant_memory: false)
|
4
|
+
worksheet = workbook.add_worksheet
|
5
|
+
worksheet.auto_width = true
|
6
|
+
|
7
|
+
url_format = workbook.add_format(underline: :underline_single, font_color: :blue)
|
8
|
+
|
9
|
+
worksheet.append_row([
|
10
|
+
"Ultra Fast Excel Writer for Ruby",
|
11
|
+
FastExcel::URL.new("https://github.com/Paxa/fast_excel"),
|
12
|
+
FastExcel::URL.new("postgres://localhost")
|
13
|
+
], [nil, url_format])
|
14
|
+
|
15
|
+
# Same as:
|
16
|
+
# worksheet.write_value(0, 0, "Ultra Fast Excel Writer for Ruby")
|
17
|
+
# worksheet.write_url(0, 1, "https://github.com/Paxa/fast_excel", url_format)
|
18
|
+
|
19
|
+
workbook.close
|
20
|
+
puts "Saved to file example_hyperlink.xlsx"
|
data/fast_excel.gemspec
CHANGED
data/lib/fast_excel.rb
CHANGED
@@ -13,12 +13,19 @@ module FastExcel
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
+
class URL
|
17
|
+
attr_accessor :url
|
18
|
+
def initialize(url)
|
19
|
+
@url = url
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
DEF_COL_WIDTH = 8.43
|
17
24
|
|
18
25
|
def self.open(filename = nil, constant_memory: false, default_format: nil)
|
19
26
|
tmp_file = false
|
20
27
|
if filename
|
21
|
-
if File.exist?(filename)
|
28
|
+
if File.exist?(filename) && File.size(filename) > 0
|
22
29
|
raise ArgumentError, "File '#{filename}' already exists. FastExcel can not open existing files, only create new files"
|
23
30
|
end
|
24
31
|
else
|
@@ -298,7 +305,7 @@ module FastExcel
|
|
298
305
|
if respond_to?("#{key}=")
|
299
306
|
send("#{key}=", value)
|
300
307
|
elsif respond_to?("set_#{key}=")
|
301
|
-
|
308
|
+
send("set_#{key}=", value)
|
302
309
|
else
|
303
310
|
self[key] = value
|
304
311
|
end
|
@@ -344,6 +351,8 @@ module FastExcel
|
|
344
351
|
bold
|
345
352
|
end
|
346
353
|
|
354
|
+
alias_method :bold_format, :bold_cell_format
|
355
|
+
|
347
356
|
# "#,##0.00"
|
348
357
|
# "[$-409]m/d/yy h:mm AM/PM;@"
|
349
358
|
def number_format(pattern)
|
@@ -353,16 +362,18 @@ module FastExcel
|
|
353
362
|
end
|
354
363
|
|
355
364
|
def add_worksheet(sheetname = nil)
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
365
|
+
if !sheetname.nil?
|
366
|
+
if sheetname.length > Libxlsxwriter::SHEETNAME_MAX
|
367
|
+
raise ArgumentError, "Worksheet name '#{sheetname}' exceeds Excel's limit of #{Libxlsxwriter::SHEETNAME_MAX} characters"
|
368
|
+
elsif @sheet_names.include?(sheetname)
|
369
|
+
raise ArgumentError, "Worksheet name '#{sheetname}' is already in use"
|
370
|
+
end
|
360
371
|
end
|
361
|
-
@sheet_names << sheetname
|
362
372
|
|
363
|
-
sheet = super
|
373
|
+
sheet = super(sheetname)
|
364
374
|
sheet.workbook = self
|
365
375
|
@sheets << sheet
|
376
|
+
@sheet_names << sheet[:name]
|
366
377
|
sheet
|
367
378
|
end
|
368
379
|
|
@@ -383,11 +394,11 @@ module FastExcel
|
|
383
394
|
close if @is_open
|
384
395
|
File.open(filename, 'rb', &:read)
|
385
396
|
ensure
|
386
|
-
|
397
|
+
remove_tmp_folder
|
387
398
|
end
|
388
399
|
|
389
|
-
def
|
390
|
-
File.
|
400
|
+
def remove_tmp_folder
|
401
|
+
FileUtils.remove_entry(File.dirname(filename)) if tmp_file
|
391
402
|
end
|
392
403
|
|
393
404
|
def constant_memory?
|
@@ -445,8 +456,13 @@ module FastExcel
|
|
445
456
|
write_number(row_number, cell_number, FastExcel.date_num(value), format)
|
446
457
|
elsif defined?(DateTime) && value.is_a?(DateTime)
|
447
458
|
write_number(row_number, cell_number, FastExcel.date_num(value), format)
|
448
|
-
elsif value.is_a?(
|
459
|
+
elsif value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
460
|
+
write_boolean(row_number, cell_number, value ? 1 : 0, format)
|
461
|
+
elsif value.is_a?(FastExcel::Formula)
|
449
462
|
write_formula(row_number, cell_number, value.fml, format)
|
463
|
+
elsif value.is_a?(FastExcel::URL)
|
464
|
+
write_url(row_number, cell_number, value.url, format)
|
465
|
+
add_text_width(value.url, format, cell_number) if auto_width?
|
450
466
|
else
|
451
467
|
write_string(row_number, cell_number, value.to_s, format)
|
452
468
|
add_text_width(value, format, cell_number) if auto_width?
|
@@ -487,6 +503,10 @@ module FastExcel
|
|
487
503
|
write_row(last_row_number, values, formats)
|
488
504
|
end
|
489
505
|
|
506
|
+
def <<(values)
|
507
|
+
append_row(values)
|
508
|
+
end
|
509
|
+
|
490
510
|
def last_row_number
|
491
511
|
@last_row_number
|
492
512
|
end
|
@@ -510,6 +530,10 @@ module FastExcel
|
|
510
530
|
end
|
511
531
|
end
|
512
532
|
|
533
|
+
def enable_filters!(start_col: 0, end_col:)
|
534
|
+
autofilter(start_col, 0, @last_row_number, end_col)
|
535
|
+
end
|
536
|
+
|
513
537
|
def close
|
514
538
|
if auto_width?
|
515
539
|
@column_widths.each do |num, width|
|
data/lib/fast_excel/binding.rb
CHANGED
@@ -119,6 +119,10 @@ module Libxlsxwriter
|
|
119
119
|
|
120
120
|
SCHEMA_ROOT = "http://schemas.openxmlformats.org"
|
121
121
|
|
122
|
+
|
123
|
+
PORTRAIT = 1
|
124
|
+
LANDSCAPE = 0
|
125
|
+
|
122
126
|
def error(message)
|
123
127
|
fprintf(STDERR, "[ERROR][%s:%d]: \"message\"\n", FILE, LINE)
|
124
128
|
end
|
@@ -317,24 +321,31 @@ module Libxlsxwriter
|
|
317
321
|
:error_memory_malloc_failed, 1,
|
318
322
|
:error_creating_xlsx_file, 2,
|
319
323
|
:error_creating_tmpfile, 3,
|
320
|
-
:
|
321
|
-
:
|
322
|
-
:
|
323
|
-
:
|
324
|
-
:
|
325
|
-
:
|
326
|
-
:
|
327
|
-
:
|
328
|
-
:
|
329
|
-
:
|
330
|
-
:
|
331
|
-
:
|
332
|
-
:
|
333
|
-
:
|
334
|
-
:
|
335
|
-
:
|
324
|
+
:error_reading_tmpfile, 4,
|
325
|
+
:error_zip_file_operation, 5,
|
326
|
+
:error_zip_parameter_error, 6,
|
327
|
+
:error_zip_bad_zip_file, 7,
|
328
|
+
:error_zip_internal_error, 8,
|
329
|
+
:error_zip_file_add, 9,
|
330
|
+
:error_zip_close, 10,
|
331
|
+
:error_null_parameter_ignored, 11,
|
332
|
+
:error_parameter_validation, 12,
|
333
|
+
:error_sheetname_length_exceeded, 13,
|
334
|
+
:error_invalid_sheetname_character, 14,
|
335
|
+
:error_sheetname_start_end_apostrophe, 15,
|
336
|
+
:error_sheetname_already_used, 16,
|
337
|
+
:error_sheetname_reserved, 17,
|
338
|
+
:error_32_string_length_exceeded, 18,
|
339
|
+
:error_128_string_length_exceeded, 19,
|
340
|
+
:error_255_string_length_exceeded, 20,
|
341
|
+
:error_max_string_length_exceeded, 21,
|
342
|
+
:error_shared_string_index_not_found, 22,
|
343
|
+
:error_worksheet_index_out_of_range, 23,
|
344
|
+
:error_worksheet_max_number_urls_exceeded, 24,
|
345
|
+
:error_image_dimensions, 25,
|
346
|
+
:max_errno, 26
|
336
347
|
]
|
337
|
-
|
348
|
+
|
338
349
|
# = Fields:
|
339
350
|
# :year ::
|
340
351
|
# (Integer) Year : 1900 - 9999
|
@@ -887,6 +898,7 @@ module Libxlsxwriter
|
|
887
898
|
include DrawingWrappers
|
888
899
|
layout :file, :pointer,
|
889
900
|
:embedded, :uchar,
|
901
|
+
:orientation, :uchar,
|
890
902
|
:drawing_objects, DrawingObjects
|
891
903
|
end
|
892
904
|
|
@@ -2610,9 +2622,7 @@ module Libxlsxwriter
|
|
2610
2622
|
:zipfile_info, ZipFileinfo.by_value,
|
2611
2623
|
:filename, :string,
|
2612
2624
|
:buffer, :string,
|
2613
|
-
:tmpdir, :string
|
2614
|
-
:chart_count, :ushort,
|
2615
|
-
:drawing_count, :ushort
|
2625
|
+
:tmpdir, :string
|
2616
2626
|
end
|
2617
2627
|
|
2618
2628
|
# @method packager_new(filename, tmpdir)
|
@@ -2620,7 +2630,7 @@ module Libxlsxwriter
|
|
2620
2630
|
# @param [String] tmpdir
|
2621
2631
|
# @return [Packager]
|
2622
2632
|
# @scope class
|
2623
|
-
attach_function :packager_new, :lxw_packager_new, [:string, :string], Packager
|
2633
|
+
attach_function :packager_new, :lxw_packager_new, [:string, :string, :uchar], Packager
|
2624
2634
|
|
2625
2635
|
# @method packager_free(packager)
|
2626
2636
|
# @param [Packager] packager
|
@@ -906,7 +906,23 @@ module Libxlsxwriter
|
|
906
906
|
:end_, 0,
|
907
907
|
:no, 1
|
908
908
|
]
|
909
|
-
|
909
|
+
|
910
|
+
enum :chart_error_bar_axis, [
|
911
|
+
:axis_x, 0,
|
912
|
+
:axis_y, 1
|
913
|
+
]
|
914
|
+
|
915
|
+
enum :chart_axis_label_alignment, [
|
916
|
+
:align_center, 0,
|
917
|
+
:align_left, 1,
|
918
|
+
:align_right, 2
|
919
|
+
]
|
920
|
+
|
921
|
+
enum :chart_axis_type, [
|
922
|
+
:axis_type_x, 0,
|
923
|
+
:axis_type_y, 1
|
924
|
+
]
|
925
|
+
|
910
926
|
# = Fields:
|
911
927
|
# :type ::
|
912
928
|
# (Integer)
|
@@ -1268,6 +1284,7 @@ module Libxlsxwriter
|
|
1268
1284
|
:show_labels_legend, :uchar,
|
1269
1285
|
:show_labels_percent, :uchar,
|
1270
1286
|
:label_position, :uchar,
|
1287
|
+
:label_align, :uchar,
|
1271
1288
|
:label_separator, :uchar,
|
1272
1289
|
:default_label_position, :uchar,
|
1273
1290
|
:label_num_format, :string,
|
@@ -1934,6 +1951,7 @@ module Libxlsxwriter
|
|
1934
1951
|
:in_use, :uchar,
|
1935
1952
|
:chart_group, :uchar,
|
1936
1953
|
:cat_has_num_fmt, :uchar,
|
1954
|
+
:is_chartsheet, :uchar,
|
1937
1955
|
:has_horiz_cat_axis, :uchar,
|
1938
1956
|
:has_horiz_val_axis, :uchar,
|
1939
1957
|
:style_id, :uchar,
|
@@ -1976,6 +1994,7 @@ module Libxlsxwriter
|
|
1976
1994
|
:up_bar_fill, ChartFill,
|
1977
1995
|
:down_bar_fill, ChartFill,
|
1978
1996
|
:default_label_position, :uchar,
|
1997
|
+
:is_protected, :uchar,
|
1979
1998
|
:ordered_list_pointers, ChartOrderedListPointers.by_value,
|
1980
1999
|
:list_pointers, ChartListPointers.by_value
|
1981
2000
|
end
|
@@ -6,7 +6,8 @@ module Libxlsxwriter
|
|
6
6
|
# (String) Directory to use for the temporary files created by libxlsxwriter.
|
7
7
|
class WorkbookOptions < FFI::Struct
|
8
8
|
layout :constant_memory, :uchar,
|
9
|
-
:tmpdir, :string
|
9
|
+
:tmpdir, :string,
|
10
|
+
:use_zip64, :uchar
|
10
11
|
end
|
11
12
|
|
12
13
|
# = Fields:
|
@@ -168,8 +169,11 @@ module Libxlsxwriter
|
|
168
169
|
class Workbook < FFI::Struct
|
169
170
|
include WorkbookWrappers
|
170
171
|
layout :file, :pointer,
|
172
|
+
:sheets, Sheets.ptr,
|
171
173
|
:worksheets, Worksheets.ptr,
|
174
|
+
:chartsheets, :pointer,
|
172
175
|
:worksheet_names, WorksheetNames.ptr,
|
176
|
+
:chartsheet_names, :pointer,
|
173
177
|
:charts, Charts.ptr,
|
174
178
|
:ordered_charts, Charts.ptr,
|
175
179
|
:formats, Formats.ptr,
|
@@ -180,6 +184,8 @@ module Libxlsxwriter
|
|
180
184
|
:filename, :pointer,
|
181
185
|
:options, WorkbookOptions.by_value,
|
182
186
|
:num_sheets, :uint16,
|
187
|
+
:num_worksheets, :uint16,
|
188
|
+
:num_chartsheets, :uint16,
|
183
189
|
:first_sheet, :uint16,
|
184
190
|
:active_sheet, :uint16,
|
185
191
|
:num_xf_formats, :uint16,
|
@@ -192,7 +198,9 @@ module Libxlsxwriter
|
|
192
198
|
:has_png, :uchar,
|
193
199
|
:has_jpeg, :uchar,
|
194
200
|
:has_bmp, :uchar,
|
195
|
-
:used_xf_formats, HashTable.ptr
|
201
|
+
:used_xf_formats, HashTable.ptr,
|
202
|
+
:vba_project, :pointer,
|
203
|
+
:vba_codename, :pointer
|
196
204
|
end
|
197
205
|
|
198
206
|
attach_function :workbook_default_format, :workbook_default_format, [Workbook], Format
|
@@ -593,7 +593,7 @@ module Libxlsxwriter
|
|
593
593
|
end
|
594
594
|
|
595
595
|
# @return [nil]
|
596
|
-
def
|
596
|
+
def set_right_to_left()
|
597
597
|
Libxlsxwriter.worksheet_right_to_left(self)
|
598
598
|
end
|
599
599
|
|
@@ -689,6 +689,7 @@ module Libxlsxwriter
|
|
689
689
|
:array, :pointer,
|
690
690
|
:merged_ranges, MergedRanges.ptr,
|
691
691
|
:selections, Selections.ptr,
|
692
|
+
:data_validations, :pointer, # TODO add real definition for lxw_data_validations
|
692
693
|
:image_data, ImageData.ptr,
|
693
694
|
:chart_data, ChartData.ptr,
|
694
695
|
:dim_rowmin, :uint32,
|
@@ -705,6 +706,7 @@ module Libxlsxwriter
|
|
705
706
|
:hidden, :uint8,
|
706
707
|
:active_sheet, :pointer,
|
707
708
|
:first_sheet, :pointer,
|
709
|
+
:is_chartsheet, :uint8,
|
708
710
|
:col_options, :pointer,
|
709
711
|
:col_options_max, :uint16,
|
710
712
|
:col_sizes, :pointer,
|
@@ -724,25 +726,29 @@ module Libxlsxwriter
|
|
724
726
|
:rel_count, :uint16,
|
725
727
|
:vertical_dpi, :uint16,
|
726
728
|
:zoom, :uint16,
|
727
|
-
:filter_on,
|
728
|
-
:fit_page,
|
729
|
-
:hcenter,
|
730
|
-
:orientation,
|
731
|
-
:outline_changed,
|
732
|
-
:outline_on,
|
733
|
-
:
|
734
|
-
:
|
735
|
-
:
|
736
|
-
:
|
737
|
-
:
|
738
|
-
:
|
729
|
+
:filter_on, :uint8,
|
730
|
+
:fit_page, :uint8,
|
731
|
+
:hcenter, :uint8,
|
732
|
+
:orientation, :uint8,
|
733
|
+
:outline_changed, :uint8,
|
734
|
+
:outline_on, :uint8,
|
735
|
+
:outline_style, :uint8,
|
736
|
+
:outline_below, :uint8,
|
737
|
+
:outline_right, :uint8,
|
738
|
+
:page_order, :uint8,
|
739
|
+
:page_setup_changed, :uint8,
|
740
|
+
:page_view, :uint8,
|
741
|
+
:paper_size, :uint8,
|
742
|
+
:print_gridlines, :uint8,
|
743
|
+
:print_headers, :uint8,
|
739
744
|
:print_options_changed, :uint8,
|
740
|
-
:right_to_left,
|
741
|
-
:screen_gridlines,
|
742
|
-
:show_zeros,
|
743
|
-
:
|
744
|
-
:
|
745
|
-
:
|
745
|
+
:right_to_left, :uint8,
|
746
|
+
:screen_gridlines, :uint8,
|
747
|
+
:show_zeros, :uint8,
|
748
|
+
:vcenter, :uint8,
|
749
|
+
:zoom_scale_normal, :uint8,
|
750
|
+
:num_validations, :uint8,
|
751
|
+
:vba_codename, :pointer,
|
746
752
|
:tab_color, :int,
|
747
753
|
:margin_left, :double,
|
748
754
|
:margin_right, :double,
|
@@ -891,13 +897,14 @@ module Libxlsxwriter
|
|
891
897
|
:number_cell, 1,
|
892
898
|
:string_cell, 2,
|
893
899
|
:inline_string_cell, 3,
|
894
|
-
:
|
895
|
-
:
|
896
|
-
:
|
897
|
-
:
|
898
|
-
:
|
899
|
-
:
|
900
|
-
:
|
900
|
+
:inline_rich_string_cell, 4,
|
901
|
+
:formula_cell, 5,
|
902
|
+
:array_formula_cell, 6,
|
903
|
+
:blank_cell, 7,
|
904
|
+
:boolean_cell, 8,
|
905
|
+
:hyperlink_url, 9,
|
906
|
+
:hyperlink_internal, 10,
|
907
|
+
:hyperlink_external, 11
|
901
908
|
]
|
902
909
|
|
903
910
|
# = Fields:
|
@@ -1552,4 +1559,14 @@ module Libxlsxwriter
|
|
1552
1559
|
layout :stqh_first, Worksheet.ptr,
|
1553
1560
|
:stqh_last, :pointer
|
1554
1561
|
end
|
1555
|
-
|
1562
|
+
|
1563
|
+
class Sheet < FFI::Struct
|
1564
|
+
layout :is_chartsheet, :uchar,
|
1565
|
+
:list_pointers, :pointer
|
1566
|
+
end
|
1567
|
+
|
1568
|
+
class Sheets < FFI::Struct
|
1569
|
+
layout :stqh_first, Sheet.ptr,
|
1570
|
+
:stqh_last, :pointer
|
1571
|
+
end
|
1572
|
+
end
|