fast_excel 0.4.1 → 0.5.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/.github/workflows/test.yml +1 -7
- data/CHANGELOG.md +9 -0
- data/Gemfile +1 -1
- data/examples/example.rb +2 -0
- data/examples/example_date_time.rb +38 -0
- data/fast_excel.gemspec +2 -2
- data/lib/fast_excel/binding/format.rb +17 -0
- data/lib/fast_excel/binding/workbook.rb +39 -17
- data/lib/fast_excel/binding/worksheet.rb +57 -13
- data/lib/fast_excel/binding.rb +7 -7
- data/lib/fast_excel.rb +27 -20
- data/libxlsxwriter/.github/FUNDING.yml +1 -0
- data/libxlsxwriter/.github/ISSUE_TEMPLATE.md +85 -0
- data/libxlsxwriter/.github/PULL_REQUEST_TEMPLATE.md +130 -0
- data/libxlsxwriter/.github/workflows/cmake_actions.yml +48 -0
- data/libxlsxwriter/.github/workflows/code_style.yml +23 -0
- data/libxlsxwriter/.github/workflows/coverity.yml +22 -0
- data/libxlsxwriter/.github/workflows/make_actions.yml +52 -0
- data/libxlsxwriter/.github/workflows/valgrind.yml +23 -0
- data/libxlsxwriter/.github/workflows/windows_build.yml +54 -0
- data/libxlsxwriter/.github/workflows/zig_build.yml +22 -0
- data/libxlsxwriter/.gitignore +16 -1
- data/libxlsxwriter/.indent.pro +24 -0
- data/libxlsxwriter/CMakeLists.txt +156 -56
- data/libxlsxwriter/CONTRIBUTING.md +2 -2
- data/libxlsxwriter/Changes.txt +344 -2
- data/libxlsxwriter/LICENSE.txt +66 -8
- data/libxlsxwriter/Makefile +151 -54
- data/libxlsxwriter/Package.swift +42 -0
- data/libxlsxwriter/Readme.md +4 -2
- data/libxlsxwriter/build.zig +324 -0
- data/libxlsxwriter/build.zig.zon +11 -0
- data/libxlsxwriter/cmake/FindMINIZIP.cmake +3 -3
- data/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h +6 -0
- data/libxlsxwriter/include/xlsxwriter/app.h +2 -1
- data/libxlsxwriter/include/xlsxwriter/chart.h +236 -32
- data/libxlsxwriter/include/xlsxwriter/chartsheet.h +7 -7
- data/libxlsxwriter/include/xlsxwriter/comment.h +76 -0
- data/libxlsxwriter/include/xlsxwriter/common.h +111 -50
- data/libxlsxwriter/include/xlsxwriter/content_types.h +8 -1
- data/libxlsxwriter/include/xlsxwriter/core.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/custom.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/drawing.h +11 -20
- data/libxlsxwriter/include/xlsxwriter/format.h +121 -8
- data/libxlsxwriter/include/xlsxwriter/hash_table.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/metadata.h +49 -0
- data/libxlsxwriter/include/xlsxwriter/packager.h +27 -16
- data/libxlsxwriter/include/xlsxwriter/relationships.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/shared_strings.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/styles.h +13 -7
- data/libxlsxwriter/include/xlsxwriter/table.h +51 -0
- data/libxlsxwriter/include/xlsxwriter/theme.h +1 -1
- data/libxlsxwriter/include/xlsxwriter/third_party/emyg_dtoa.h +26 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/ioapi.h +27 -25
- data/libxlsxwriter/include/xlsxwriter/third_party/md5.h +45 -0
- data/libxlsxwriter/include/xlsxwriter/third_party/zip.h +155 -153
- data/libxlsxwriter/include/xlsxwriter/utility.h +70 -8
- data/libxlsxwriter/include/xlsxwriter/vml.h +55 -0
- data/libxlsxwriter/include/xlsxwriter/workbook.h +218 -47
- data/libxlsxwriter/include/xlsxwriter/worksheet.h +2770 -241
- data/libxlsxwriter/include/xlsxwriter/xmlwriter.h +12 -8
- data/libxlsxwriter/include/xlsxwriter.h +4 -2
- data/libxlsxwriter/libxlsxwriter.podspec +8 -5
- data/libxlsxwriter/src/Makefile +58 -21
- data/libxlsxwriter/src/app.c +5 -2
- data/libxlsxwriter/src/chart.c +396 -81
- data/libxlsxwriter/src/chartsheet.c +22 -22
- data/libxlsxwriter/src/comment.c +443 -0
- data/libxlsxwriter/src/content_types.c +40 -1
- data/libxlsxwriter/src/core.c +2 -2
- data/libxlsxwriter/src/custom.c +1 -1
- data/libxlsxwriter/src/drawing.c +160 -40
- data/libxlsxwriter/src/format.c +109 -25
- data/libxlsxwriter/src/hash_table.c +1 -1
- data/libxlsxwriter/src/metadata.c +283 -0
- data/libxlsxwriter/src/packager.c +794 -94
- data/libxlsxwriter/src/relationships.c +1 -1
- data/libxlsxwriter/src/shared_strings.c +2 -4
- data/libxlsxwriter/src/styles.c +353 -58
- data/libxlsxwriter/src/table.c +304 -0
- data/libxlsxwriter/src/theme.c +1 -1
- data/libxlsxwriter/src/utility.c +143 -43
- data/libxlsxwriter/src/vml.c +1062 -0
- data/libxlsxwriter/src/workbook.c +567 -77
- data/libxlsxwriter/src/worksheet.c +6668 -1462
- data/libxlsxwriter/src/xmlwriter.c +95 -5
- data/libxlsxwriter/third_party/dtoa/Makefile +42 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.c +461 -0
- data/libxlsxwriter/third_party/dtoa/emyg_dtoa.h +26 -0
- data/libxlsxwriter/third_party/md5/Makefile +42 -0
- data/libxlsxwriter/third_party/md5/md5.c +291 -0
- data/libxlsxwriter/third_party/md5/md5.h +45 -0
- data/libxlsxwriter/third_party/minizip/Makefile +3 -8
- data/libxlsxwriter/third_party/minizip/Makefile.orig +8 -4
- data/libxlsxwriter/third_party/minizip/MiniZip64_Changes.txt +1 -1
- data/libxlsxwriter/third_party/minizip/configure.ac +1 -1
- data/libxlsxwriter/third_party/minizip/crypt.h +13 -16
- data/libxlsxwriter/third_party/minizip/ioapi.c +31 -57
- data/libxlsxwriter/third_party/minizip/ioapi.h +31 -23
- data/libxlsxwriter/third_party/minizip/iowin32.c +29 -45
- data/libxlsxwriter/third_party/minizip/iowin32.h +4 -4
- data/libxlsxwriter/third_party/minizip/miniunz.c +29 -56
- data/libxlsxwriter/third_party/minizip/minizip.c +38 -49
- data/libxlsxwriter/third_party/minizip/mztools.c +1 -7
- data/libxlsxwriter/third_party/minizip/unzip.c +202 -342
- data/libxlsxwriter/third_party/minizip/unzip.h +74 -74
- data/libxlsxwriter/third_party/minizip/zip.c +165 -218
- data/libxlsxwriter/third_party/minizip/zip.h +164 -154
- data/libxlsxwriter/third_party/tmpfileplus/Makefile +3 -3
- data/libxlsxwriter/version.txt +1 -1
- data/test/auto_width_test.rb +20 -0
- data/test/default_format_test.rb +1 -1
- data/test/validations_test.rb +3 -3
- data/test/worksheet_test.rb +6 -1
- metadata +33 -7
- data/libxlsxwriter/.travis.yml +0 -37
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 792a2afe9492aeeaba9fbb65da941d2b604a2fd14bf934b17662fdf05281ac32
|
|
4
|
+
data.tar.gz: 11795006b99d4fc9403fd3f85ab6babff417b1ed49341a2081073852063d2a71
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7215d937426efb2580ba947c727a60a519fb411a5504eb58162a1646057bd191812eae00394ac9c915a9f7f53a6acf6cfff66e4d773a8ac579bb3494164c3292
|
|
7
|
+
data.tar.gz: 9f381f209a7d4f7c22a0994ed241b2be0a67d994c400f7867529fa1fa95fbc6326189a9dc53588f0bfbc376933ffab6fee4eaee37f7ac57d6a4f68a66295c8cc
|
data/.github/workflows/test.yml
CHANGED
|
@@ -8,7 +8,7 @@ jobs:
|
|
|
8
8
|
fail-fast: false
|
|
9
9
|
matrix:
|
|
10
10
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
11
|
-
ruby: [2.7, '3.0', 3.1, 3.2]
|
|
11
|
+
ruby: [2.7, '3.0', 3.1, 3.2, 3.3]
|
|
12
12
|
|
|
13
13
|
runs-on: ${{ matrix.os }}
|
|
14
14
|
|
|
@@ -26,9 +26,3 @@ jobs:
|
|
|
26
26
|
- run: rake test
|
|
27
27
|
- run: rake examples
|
|
28
28
|
- run: gem build fast_excel.gemspec
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
gobills-critical
|
|
32
|
-
gp-di-critical
|
|
33
|
-
|
|
34
|
-
gp-di-alert
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
#### Version 0.5.0 - 02 jan 2024
|
|
2
|
+
|
|
3
|
+
* Support ruby 3.3
|
|
4
|
+
* Sync latest libxlsxwriter
|
|
5
|
+
* Add support for writing cell comments
|
|
6
|
+
* Add more examples
|
|
7
|
+
* Fix compilation of minizip on NixOS (Thanks to @Mange)
|
|
8
|
+
* On close set empty columns to default width (Thanks to @steffansluis)
|
|
9
|
+
|
|
1
10
|
#### Version 0.4.1 - 13 jan 2023
|
|
2
11
|
|
|
3
12
|
* Support ruby 3.2
|
data/Gemfile
CHANGED
data/examples/example.rb
CHANGED
|
@@ -22,6 +22,8 @@ worksheet.set_column(2, 2, 20, date_format)
|
|
|
22
22
|
|
|
23
23
|
worksheet.write_row(0, ["message", "price", "date", "complete"], bold)
|
|
24
24
|
|
|
25
|
+
worksheet.write_comment(2, 2, "Comment to field")
|
|
26
|
+
|
|
25
27
|
for i in 1..1000
|
|
26
28
|
worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now, i % 2 == 0])
|
|
27
29
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require_relative '../lib/fast_excel'
|
|
2
|
+
|
|
3
|
+
require 'date'
|
|
4
|
+
require 'time'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
File.unlink("example_date_time.xlsx") if File.exist?("example_date_time.xlsx")
|
|
8
|
+
|
|
9
|
+
workbook = FastExcel.open("example_date_time.xlsx", constant_memory: true)
|
|
10
|
+
workbook.default_format.set(
|
|
11
|
+
font_size: 0, # user's default
|
|
12
|
+
)
|
|
13
|
+
worksheet = workbook.add_worksheet
|
|
14
|
+
|
|
15
|
+
worksheet.set_columns_width(0, 4, 25)
|
|
16
|
+
worksheet.set_column(1, 1, 25, workbook.number_format("[$-409]m/d/yy hh:mm;@"))
|
|
17
|
+
|
|
18
|
+
intro = "Date and time in excel file stored as decimal number, it show number of days since January 1900, decimal part is for time of the day"
|
|
19
|
+
worksheet.merge_range(0, 0, 0, 4, intro, nil)
|
|
20
|
+
worksheet.write_value(1, 0, "")
|
|
21
|
+
|
|
22
|
+
worksheet.append_row(['', 'Formatted as Date', 'No formatting, plain number'])
|
|
23
|
+
|
|
24
|
+
worksheet.append_row(["Time.now", Time.now, Time.now, 'local timezone'])
|
|
25
|
+
worksheet.append_row(["Time.now.utc", Time.now.utc, Time.now.utc, 'UTC timezone'])
|
|
26
|
+
|
|
27
|
+
worksheet.append_row(["DateTime.now", DateTime.now, DateTime.now, 'local timezone'])
|
|
28
|
+
dt = DateTime.now.new_offset("+02:00")
|
|
29
|
+
worksheet.append_row(["DateTime new_offset", dt, dt, 'GMT+2 timezone'])
|
|
30
|
+
|
|
31
|
+
today = Date.today
|
|
32
|
+
worksheet.append_row(["Date.today", today, today])
|
|
33
|
+
|
|
34
|
+
worksheet.append_row(["0 (just zero)", 0, 0, '00 January 1900'])
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
workbook.close
|
|
38
|
+
puts "Saved to file example_date_time.xlsx"
|
data/fast_excel.gemspec
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = "fast_excel"
|
|
3
|
-
s.version = "0.
|
|
3
|
+
s.version = "0.5.0"
|
|
4
4
|
s.author = ["Pavel Evstigneev"]
|
|
5
5
|
s.email = ["pavel.evst@gmail.com"]
|
|
6
6
|
s.homepage = "https://github.com/paxa/fast_excel"
|
|
7
7
|
s.summary = %q{Ultra Fast Excel Writer}
|
|
8
8
|
s.description = "Wrapper for libxlsxwriter using ffi"
|
|
9
9
|
s.license = 'MIT'
|
|
10
|
-
s.required_ruby_version = ['>= 2.0'
|
|
10
|
+
s.required_ruby_version = ['>= 2.0']
|
|
11
11
|
|
|
12
12
|
s.files = `git ls-files`.split("\n")
|
|
13
13
|
s.test_files = []
|
|
@@ -697,9 +697,14 @@ module Libxlsxwriter
|
|
|
697
697
|
include FormatWrappers
|
|
698
698
|
layout :file, :pointer,
|
|
699
699
|
:xf_format_indices, :pointer, #HashTable.ptr,
|
|
700
|
+
:dxf_format_indices, :pointer,
|
|
700
701
|
:num_xf_formats, :pointer,
|
|
702
|
+
:num_dxf_formats, :pointer,
|
|
703
|
+
|
|
701
704
|
:xf_index, :int32_t,
|
|
702
705
|
:dxf_index, :int32_t,
|
|
706
|
+
:xf_id, :int32_t,
|
|
707
|
+
|
|
703
708
|
:num_format, [:char, 128],
|
|
704
709
|
:font_name, [:char, 128],
|
|
705
710
|
:font_scheme, [:char, 128],
|
|
@@ -708,6 +713,7 @@ module Libxlsxwriter
|
|
|
708
713
|
:has_font, :uchar,
|
|
709
714
|
:has_dxf_font, :uchar,
|
|
710
715
|
:font_size, :double,
|
|
716
|
+
|
|
711
717
|
:bold, :uchar,
|
|
712
718
|
:italic, :uchar,
|
|
713
719
|
:font_color, :int,
|
|
@@ -722,24 +728,32 @@ module Libxlsxwriter
|
|
|
722
728
|
:font_extend, :uchar,
|
|
723
729
|
:theme, :uchar,
|
|
724
730
|
:hyperlink, :uchar,
|
|
731
|
+
|
|
725
732
|
:hidden, :uchar,
|
|
726
733
|
:locked, :uchar,
|
|
734
|
+
|
|
727
735
|
:text_h_align, :uchar,
|
|
728
736
|
:text_wrap, :uchar,
|
|
729
737
|
:text_v_align, :uchar,
|
|
730
738
|
:text_justlast, :uchar,
|
|
731
739
|
:rotation, :short,
|
|
740
|
+
|
|
732
741
|
:fg_color, :int,
|
|
733
742
|
:bg_color, :int,
|
|
743
|
+
:dxf_fg_color, :int,
|
|
744
|
+
:dxf_bg_color, :int,
|
|
745
|
+
|
|
734
746
|
:pattern, :uchar,
|
|
735
747
|
:has_fill, :uchar,
|
|
736
748
|
:has_dxf_fill, :uchar,
|
|
737
749
|
:fill_index, :int,
|
|
738
750
|
:fill_count, :int,
|
|
751
|
+
|
|
739
752
|
:border_index, :int,
|
|
740
753
|
:has_border, :uchar,
|
|
741
754
|
:has_dxf_border, :uchar,
|
|
742
755
|
:border_count, :int,
|
|
756
|
+
|
|
743
757
|
:bottom, :uchar,
|
|
744
758
|
:diag_border, :uchar,
|
|
745
759
|
:diag_type, :uchar,
|
|
@@ -751,6 +765,7 @@ module Libxlsxwriter
|
|
|
751
765
|
:left_color, :int,
|
|
752
766
|
:right_color, :int,
|
|
753
767
|
:top_color, :int,
|
|
768
|
+
|
|
754
769
|
:indent, :uchar,
|
|
755
770
|
:shrink, :uchar,
|
|
756
771
|
:merge_range, :uchar,
|
|
@@ -758,6 +773,8 @@ module Libxlsxwriter
|
|
|
758
773
|
:just_distrib, :uchar,
|
|
759
774
|
:color_indexed, :uchar,
|
|
760
775
|
:font_only, :uchar,
|
|
776
|
+
|
|
777
|
+
:quote_prefix, :uchar,
|
|
761
778
|
:list_pointers, FormatListPointers.by_value
|
|
762
779
|
end
|
|
763
780
|
|
|
@@ -7,7 +7,9 @@ module Libxlsxwriter
|
|
|
7
7
|
class WorkbookOptions < FFI::Struct
|
|
8
8
|
layout :constant_memory, :uchar,
|
|
9
9
|
:tmpdir, :string,
|
|
10
|
-
:use_zip64, :uchar
|
|
10
|
+
:use_zip64, :uchar,
|
|
11
|
+
:output_buffer, :pointer,
|
|
12
|
+
:output_buffer_size, :pointer
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
# = Fields:
|
|
@@ -174,6 +176,9 @@ module Libxlsxwriter
|
|
|
174
176
|
:chartsheets, :pointer,
|
|
175
177
|
:worksheet_names, WorksheetNames.ptr,
|
|
176
178
|
:chartsheet_names, :pointer,
|
|
179
|
+
:image_md5s, :pointer,
|
|
180
|
+
:header_image_md5s, :pointer,
|
|
181
|
+
:background_md5s, :pointer,
|
|
177
182
|
:charts, Charts.ptr,
|
|
178
183
|
:ordered_charts, Charts.ptr,
|
|
179
184
|
:formats, Formats.ptr,
|
|
@@ -181,26 +186,43 @@ module Libxlsxwriter
|
|
|
181
186
|
:sst, Sst.ptr,
|
|
182
187
|
:properties, DocProperties.ptr,
|
|
183
188
|
:custom_properties, CustomProperties.ptr,
|
|
184
|
-
:filename, :
|
|
189
|
+
:filename, :string,
|
|
185
190
|
:options, WorkbookOptions.by_value,
|
|
186
|
-
|
|
187
|
-
:
|
|
188
|
-
:
|
|
189
|
-
:
|
|
190
|
-
:
|
|
191
|
-
:
|
|
191
|
+
|
|
192
|
+
:num_sheets, :uint16,
|
|
193
|
+
:num_worksheets, :uint16,
|
|
194
|
+
:num_chartsheets, :uint16,
|
|
195
|
+
:first_sheet, :uint16,
|
|
196
|
+
:active_sheet, :uint16,
|
|
197
|
+
:num_xf_formats, :uint16,
|
|
198
|
+
:num_dxf_formats, :uint16,
|
|
192
199
|
:num_format_count, :uint16,
|
|
193
|
-
:drawing_count,
|
|
194
|
-
:
|
|
195
|
-
|
|
196
|
-
:
|
|
197
|
-
:
|
|
198
|
-
:
|
|
200
|
+
:drawing_count, :uint16,
|
|
201
|
+
:comment_count, :uint16,
|
|
202
|
+
|
|
203
|
+
:font_count, :uint16,
|
|
204
|
+
:border_count, :uint16,
|
|
205
|
+
:fill_count, :uint16,
|
|
206
|
+
:optimize, :uchar,
|
|
207
|
+
:max_url_length, :uint16,
|
|
208
|
+
:read_only, :uchar,
|
|
209
|
+
|
|
210
|
+
:has_png, :uchar,
|
|
199
211
|
:has_jpeg, :uchar,
|
|
200
|
-
:has_bmp,
|
|
212
|
+
:has_bmp, :uchar,
|
|
213
|
+
:has_gif, :uchar,
|
|
214
|
+
:has_vml, :uchar,
|
|
215
|
+
:has_comments, :uchar,
|
|
216
|
+
:has_metadata, :uchar,
|
|
217
|
+
|
|
201
218
|
:used_xf_formats, HashTable.ptr,
|
|
202
|
-
:
|
|
203
|
-
|
|
219
|
+
:used_dxf_formats, HashTable.ptr,
|
|
220
|
+
|
|
221
|
+
:vba_project, :string,
|
|
222
|
+
:vba_project_signature, :string,
|
|
223
|
+
:vba_codename, :string,
|
|
224
|
+
|
|
225
|
+
:default_url_format, :pointer
|
|
204
226
|
end
|
|
205
227
|
|
|
206
228
|
attach_function :workbook_default_format, :workbook_default_format, [Workbook], Format
|
|
@@ -209,7 +209,11 @@ module Libxlsxwriter
|
|
|
209
209
|
def write_string(row, col, string, format)
|
|
210
210
|
Libxlsxwriter.worksheet_write_string(self, row, col, string, format)
|
|
211
211
|
end
|
|
212
|
-
|
|
212
|
+
|
|
213
|
+
def write_comment(row, col, string)
|
|
214
|
+
Libxlsxwriter.worksheet_write_comment(self, row, col, string)
|
|
215
|
+
end
|
|
216
|
+
|
|
213
217
|
# @param [Integer] row
|
|
214
218
|
# @param [Integer] col
|
|
215
219
|
# @param [String] formula
|
|
@@ -684,29 +688,45 @@ module Libxlsxwriter
|
|
|
684
688
|
include WorksheetWrappers
|
|
685
689
|
layout :file, :pointer,
|
|
686
690
|
:optimize_tmpfile, :pointer,
|
|
691
|
+
:optimize_buffer, :pointer,
|
|
692
|
+
:optimize_buffer_size, :size_t,
|
|
687
693
|
:table, TableRows.ptr,
|
|
688
694
|
:hyperlinks, TableRows.ptr,
|
|
695
|
+
:comments, TableRows.ptr,
|
|
689
696
|
:array, :pointer,
|
|
690
697
|
:merged_ranges, MergedRanges.ptr,
|
|
691
|
-
|
|
698
|
+
#:selections, Selections.ptr,
|
|
692
699
|
:data_validations, :pointer, # TODO add real definition for lxw_data_validations
|
|
700
|
+
:conditional_formats, :pointer,
|
|
701
|
+
:image_props, :pointer,
|
|
693
702
|
:image_data, ImageData.ptr,
|
|
694
703
|
:chart_data, ChartData.ptr,
|
|
704
|
+
:drawing_rel_ids, :pointer,
|
|
705
|
+
:vml_drawing_rel_ids, :pointer,
|
|
706
|
+
:comment_objs, :pointer,
|
|
707
|
+
:header_image_objs, :pointer,
|
|
708
|
+
:button_objs, :pointer,
|
|
709
|
+
:table_objs, :pointer,
|
|
710
|
+
:table_count, :uint16,
|
|
711
|
+
|
|
695
712
|
:dim_rowmin, :uint32,
|
|
696
713
|
:dim_rowmax, :uint32,
|
|
697
714
|
:dim_colmin, :uint16,
|
|
698
715
|
:dim_colmax, :uint16,
|
|
716
|
+
|
|
699
717
|
:sst, Sst.ptr,
|
|
700
718
|
:name, :string,
|
|
701
719
|
:quoted_name, :string,
|
|
702
720
|
:tmpdir, :pointer,
|
|
703
|
-
|
|
704
|
-
:
|
|
705
|
-
:
|
|
706
|
-
:
|
|
721
|
+
|
|
722
|
+
:index, :uint16,
|
|
723
|
+
:active, :uchar,
|
|
724
|
+
:selected, :uchar,
|
|
725
|
+
:hidden, :uchar,
|
|
707
726
|
:active_sheet, :pointer,
|
|
708
727
|
:first_sheet, :pointer,
|
|
709
|
-
:is_chartsheet, :
|
|
728
|
+
:is_chartsheet, :uchar,
|
|
729
|
+
|
|
710
730
|
:col_options, :pointer,
|
|
711
731
|
:col_options_max, :uint16,
|
|
712
732
|
:col_sizes, :pointer,
|
|
@@ -717,6 +737,7 @@ module Libxlsxwriter
|
|
|
717
737
|
:row_size_changed, :uint8,
|
|
718
738
|
:optimize, :uint8,
|
|
719
739
|
:optimize_row, :pointer,
|
|
740
|
+
|
|
720
741
|
:fit_height, :uint16,
|
|
721
742
|
:fit_width, :uint16,
|
|
722
743
|
:horizontal_dpi, :uint16,
|
|
@@ -726,6 +747,7 @@ module Libxlsxwriter
|
|
|
726
747
|
:rel_count, :uint16,
|
|
727
748
|
:vertical_dpi, :uint16,
|
|
728
749
|
:zoom, :uint16,
|
|
750
|
+
|
|
729
751
|
:filter_on, :uint8,
|
|
730
752
|
:fit_page, :uint8,
|
|
731
753
|
:hcenter, :uint8,
|
|
@@ -747,8 +769,12 @@ module Libxlsxwriter
|
|
|
747
769
|
:show_zeros, :uint8,
|
|
748
770
|
:vcenter, :uint8,
|
|
749
771
|
:zoom_scale_normal, :uint8,
|
|
772
|
+
:black_white, :uint8,
|
|
750
773
|
:num_validations, :uint8,
|
|
774
|
+
:has_dynamic_arrays, :uint8,
|
|
775
|
+
|
|
751
776
|
:vba_codename, :pointer,
|
|
777
|
+
:num_buttons, :uint16,
|
|
752
778
|
:tab_color, :int,
|
|
753
779
|
:margin_left, :double,
|
|
754
780
|
:margin_right, :double,
|
|
@@ -756,30 +782,44 @@ module Libxlsxwriter
|
|
|
756
782
|
:margin_bottom, :double,
|
|
757
783
|
:margin_header, :double,
|
|
758
784
|
:margin_footer, :double,
|
|
785
|
+
|
|
759
786
|
:default_row_height, :double,
|
|
760
787
|
:default_row_pixels, :uint,
|
|
761
788
|
:default_col_pixels, :uint,
|
|
762
|
-
:default_row_zeroed, :
|
|
789
|
+
:default_row_zeroed, :uint8,
|
|
763
790
|
:default_row_set, :uint8,
|
|
791
|
+
:outline_row_level, :uint8,
|
|
792
|
+
:outline_col_level, :uint8,
|
|
793
|
+
|
|
764
794
|
:header_footer_changed, :uint8,
|
|
765
|
-
:header,
|
|
766
|
-
:footer,
|
|
795
|
+
:header, :pointer,
|
|
796
|
+
:footer, :pointer,
|
|
767
797
|
:repeat_rows, RepeatRows.by_value,
|
|
768
798
|
:repeat_cols, RepeatCols.by_value,
|
|
769
799
|
:print_area, PrintArea.by_value,
|
|
770
800
|
:autofilter, Autofilter.by_value,
|
|
801
|
+
|
|
771
802
|
:merged_range_count, :uint16,
|
|
803
|
+
:max_url_length, :uint16,
|
|
804
|
+
|
|
772
805
|
:hbreaks, :pointer,
|
|
773
806
|
:vbreaks, :pointer,
|
|
774
807
|
:hbreaks_count, :uint16,
|
|
775
808
|
:vbreaks_count, :uint16,
|
|
809
|
+
|
|
810
|
+
:drawing_rel_id, :uint,
|
|
811
|
+
:vml_drawing_rel_id, :uint,
|
|
812
|
+
|
|
776
813
|
:external_hyperlinks, :pointer,
|
|
777
814
|
:external_drawing_links, :pointer,
|
|
778
815
|
:drawing_links, :pointer,
|
|
816
|
+
:vml_drawing_links, :pointer,
|
|
817
|
+
:external_table_links, :pointer,
|
|
818
|
+
|
|
779
819
|
:panes, Panes.by_value,
|
|
780
|
-
:protection, Protection.by_value
|
|
781
|
-
:drawing, Drawing.ptr,
|
|
782
|
-
:list_pointers, WorksheetListPointers.by_value
|
|
820
|
+
:protection, Protection.by_value
|
|
821
|
+
# :drawing, Drawing.ptr,
|
|
822
|
+
# :list_pointers, WorksheetListPointers.by_value
|
|
783
823
|
end
|
|
784
824
|
|
|
785
825
|
# = Fields:
|
|
@@ -990,6 +1030,8 @@ module Libxlsxwriter
|
|
|
990
1030
|
# @scope class
|
|
991
1031
|
attach_function :worksheet_write_string, :worksheet_write_string, [Worksheet, :uint32, :ushort, :string, Format], :error
|
|
992
1032
|
|
|
1033
|
+
attach_function :worksheet_write_comment, :worksheet_write_comment, [Worksheet, :uint32, :ushort, :string], :error
|
|
1034
|
+
|
|
993
1035
|
# @method worksheet_write_formula(worksheet, row, col, formula, format)
|
|
994
1036
|
# @param [Worksheet] worksheet
|
|
995
1037
|
# @param [Integer] row
|
|
@@ -1514,6 +1556,8 @@ module Libxlsxwriter
|
|
|
1514
1556
|
# @scope class
|
|
1515
1557
|
attach_function :worksheet_find_cell, :lxw_worksheet_find_cell, [Row, :ushort], Cell
|
|
1516
1558
|
|
|
1559
|
+
attach_function :worksheet_add_table, :worksheet_add_table, [Worksheet, :uint, :ushort, :uint, :ushort, :pointer], :error
|
|
1560
|
+
|
|
1517
1561
|
# = Fields:
|
|
1518
1562
|
# :rbe_left ::
|
|
1519
1563
|
# (FFI::Pointer(*WorksheetName))
|
data/lib/fast_excel/binding.rb
CHANGED
|
@@ -327,13 +327,13 @@ module Libxlsxwriter
|
|
|
327
327
|
:error_zip_internal_error, 8,
|
|
328
328
|
:error_zip_file_add, 9,
|
|
329
329
|
:error_zip_close, 10,
|
|
330
|
-
:
|
|
331
|
-
:
|
|
332
|
-
:
|
|
333
|
-
:
|
|
334
|
-
:
|
|
335
|
-
:
|
|
336
|
-
:
|
|
330
|
+
:error_feature_not_supported, 11,
|
|
331
|
+
:error_null_parameter_ignored, 12,
|
|
332
|
+
:error_parameter_validation, 13,
|
|
333
|
+
:error_sheetname_length_exceeded, 14,
|
|
334
|
+
:error_invalid_sheetname_character, 15,
|
|
335
|
+
:error_sheetname_start_end_apostrophe, 16,
|
|
336
|
+
:error_sheetname_already_used, 17,
|
|
337
337
|
:error_32_string_length_exceeded, 18,
|
|
338
338
|
:error_128_string_length_exceeded, 19,
|
|
339
339
|
:error_255_string_length_exceeded, 20,
|
data/lib/fast_excel.rb
CHANGED
|
@@ -36,13 +36,10 @@ module FastExcel
|
|
|
36
36
|
|
|
37
37
|
filename = filename.to_s if defined?(Pathname) && filename.is_a?(Pathname)
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
else
|
|
44
|
-
Libxlsxwriter.workbook_new(filename)
|
|
45
|
-
end
|
|
39
|
+
opt = Libxlsxwriter::WorkbookOptions.new
|
|
40
|
+
opt[:constant_memory] = constant_memory ? 1 : 0
|
|
41
|
+
workbook = Libxlsxwriter.workbook_new_opt(filename, opt)
|
|
42
|
+
|
|
46
43
|
result = Libxlsxwriter::Workbook.new(workbook)
|
|
47
44
|
|
|
48
45
|
if default_format
|
|
@@ -105,23 +102,33 @@ module FastExcel
|
|
|
105
102
|
time.to_f / XLSX_DATE_DAY + XLSX_DATE_EPOCH_DIFF + offset / XLSX_DATE_DAY
|
|
106
103
|
end
|
|
107
104
|
|
|
108
|
-
def self.print_ffi_obj(value)
|
|
109
|
-
|
|
105
|
+
def self.print_ffi_obj(value, do_print: true, offset: "", deep: false)
|
|
106
|
+
result = "#{value.class}"
|
|
107
|
+
|
|
110
108
|
value.members.each do |key|
|
|
111
|
-
|
|
109
|
+
fval = value[key]
|
|
110
|
+
field_val = if fval.is_a?(FFI::Pointer) && fval.null? || fval.nil?
|
|
112
111
|
"nil"
|
|
113
|
-
elsif
|
|
114
|
-
|
|
115
|
-
elsif
|
|
116
|
-
|
|
117
|
-
elsif
|
|
118
|
-
|
|
112
|
+
elsif fval.is_a?(FFI::StructLayout::CharArray)
|
|
113
|
+
fval.to_str.inspect
|
|
114
|
+
elsif fval.is_a?(String)
|
|
115
|
+
fval.inspect
|
|
116
|
+
elsif fval.is_a?(Symbol)
|
|
117
|
+
fval.inspect
|
|
118
|
+
elsif fval.is_a?(FFI::Struct) && deep
|
|
119
|
+
print_ffi_obj(fval, do_print: false, offset: offset + " ", deep: deep)
|
|
119
120
|
else
|
|
120
|
-
|
|
121
|
+
fval
|
|
121
122
|
end
|
|
122
|
-
|
|
123
|
+
|
|
124
|
+
result += "\n#{offset}* #{key}: #{field_val}"
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
if do_print
|
|
128
|
+
puts result
|
|
129
|
+
else
|
|
130
|
+
return result
|
|
123
131
|
end
|
|
124
|
-
nil
|
|
125
132
|
end
|
|
126
133
|
|
|
127
134
|
|
|
@@ -541,7 +548,7 @@ module FastExcel
|
|
|
541
548
|
|
|
542
549
|
def close
|
|
543
550
|
if auto_width?
|
|
544
|
-
@column_widths.each do |num, width|
|
|
551
|
+
@column_widths.transform_values!{ |width| width || DEF_COL_WIDTH }.each do |num, width|
|
|
545
552
|
set_column_width(num, width + 0.2)
|
|
546
553
|
end
|
|
547
554
|
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
custom: ["paypal.me/xlsxwriter"]
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# libxlsxwriter: Reporting Bugs
|
|
2
|
+
|
|
3
|
+
Here are some tips on reporting bugs in `libxlsxwriter`.
|
|
4
|
+
|
|
5
|
+
### Upgrade to the latest version of the library
|
|
6
|
+
|
|
7
|
+
Upgrade to the latest version of the library since the bug you are reporting
|
|
8
|
+
may already be fixed.
|
|
9
|
+
|
|
10
|
+
Check the [Changes][changes] section of the documentation to see what has
|
|
11
|
+
changed in the latest versions.
|
|
12
|
+
|
|
13
|
+
[changes]: http://libxlsxwriter.github.io/changes.html
|
|
14
|
+
|
|
15
|
+
You can check which version of `libxlsxwriter` that you are using by checking
|
|
16
|
+
the `xlsxwriter.h` header file or by adding the following to your program:
|
|
17
|
+
|
|
18
|
+
```C
|
|
19
|
+
#include <stdio.h>
|
|
20
|
+
#include "xlsxwriter.h"
|
|
21
|
+
|
|
22
|
+
int main() {
|
|
23
|
+
|
|
24
|
+
printf("Libxlsxwriter version = %s\n", lxw_version());
|
|
25
|
+
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Read the documentation
|
|
31
|
+
|
|
32
|
+
Read or search the `libxlsxwriter` [documentation][docs] to see if the issue
|
|
33
|
+
you are encountering is already explained.
|
|
34
|
+
|
|
35
|
+
[docs]: http://libxlsxwriter.github.io/index.html
|
|
36
|
+
|
|
37
|
+
### Look at the example programs
|
|
38
|
+
|
|
39
|
+
There are many [examples programs][examples] in the distribution. Try to
|
|
40
|
+
identify an example program that corresponds to your query and adapt it to use
|
|
41
|
+
as a bug report.
|
|
42
|
+
|
|
43
|
+
[examples]: http://libxlsxwriter.github.io/examples.html
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
### Tips for submitting a bug report
|
|
47
|
+
|
|
48
|
+
1. Describe the problem as clearly and as concisely as possible.
|
|
49
|
+
2. Include a sample program. This is probably the most important step.
|
|
50
|
+
It is generally easier to describe a problem in code than in written
|
|
51
|
+
prose.
|
|
52
|
+
3. The sample program should be as small as possible to demonstrate the
|
|
53
|
+
problem. Don't copy and paste large non-relevant sections of your
|
|
54
|
+
program.
|
|
55
|
+
|
|
56
|
+
A sample bug report is shown below. This format helps analyze and respond to
|
|
57
|
+
the bug report more quickly.
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
> Subject: Issue with SOMETHING
|
|
61
|
+
>
|
|
62
|
+
> Greetings,
|
|
63
|
+
>
|
|
64
|
+
> I am using libxlsxwriter to do SOMETHING but it appears to do SOMETHING ELSE.
|
|
65
|
+
>
|
|
66
|
+
> I am using CC version X.Y.Z, OS = uname and libxlsxwriter x.y.z.
|
|
67
|
+
>
|
|
68
|
+
> Here is some code that demonstrates the problem:
|
|
69
|
+
>
|
|
70
|
+
>
|
|
71
|
+
>```C
|
|
72
|
+
>#include "xlsxwriter.h"
|
|
73
|
+
>
|
|
74
|
+
>int main() {
|
|
75
|
+
>
|
|
76
|
+
> lxw_workbook *workbook = workbook_new("bug_report.xlsx");
|
|
77
|
+
> lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
|
78
|
+
>
|
|
79
|
+
> worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
|
|
80
|
+
> worksheet_write_number(worksheet, 1, 0, 123, NULL);
|
|
81
|
+
>
|
|
82
|
+
> return workbook_close(workbook);
|
|
83
|
+
>}
|
|
84
|
+
>```
|
|
85
|
+
>
|