fast_excel 0.2.6 → 0.3.0
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.
- 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
|