fast_excel 0.1

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.
data/lib/fast_excel.rb ADDED
@@ -0,0 +1,86 @@
1
+ require_relative './fast_excel/binding'
2
+
3
+ module FastExcel
4
+ #include Libxlsxwriter
5
+
6
+ def self.open(filename)
7
+ filename = filename.to_s if defined?(Pathname) && filename.is_a?(Pathname)
8
+ workbook = Libxlsxwriter.workbook_new(filename)
9
+ Libxlsxwriter::Workbook.new(workbook)
10
+ end
11
+
12
+ def self.datetime(time)
13
+ date = Libxlsxwriter::Datetime.new
14
+ date[:year] = time.year
15
+ date[:month] = time.month
16
+ date[:day] = time.day
17
+ date[:hour] = time.hour
18
+ date[:min] = time.minute
19
+ date[:sec] = time.second
20
+ date
21
+ end
22
+
23
+ def self.time(time)
24
+ date = Libxlsxwriter::Datetime.new
25
+ date[:year] = time.year
26
+ date[:month] = time.month
27
+ date[:day] = time.day
28
+ date[:hour] = time.hour
29
+ date[:min] = time.min
30
+ date[:sec] = time.sec
31
+ date
32
+ end
33
+
34
+ module WorkbookExt
35
+
36
+ #def add_worksheet(title = nil)
37
+ # Libxlsxwriter::Worksheet.new(super(title))
38
+ #end
39
+
40
+ def bold_cell_format
41
+ bold = add_format
42
+ bold.set_bold
43
+ bold
44
+ end
45
+
46
+ # "#,##0.00"
47
+ # "[$-409]m/d/yy h:mm AM/PM;@"
48
+ def number_format(pattern)
49
+ format = add_format
50
+ format.set_num_format(pattern)
51
+ format
52
+ end
53
+ end
54
+
55
+ module WorksheetExt
56
+
57
+ def write_row(row_number, values, formats = nil)
58
+ values.each_with_index do |value, index|
59
+ format = if formats
60
+ formats.is_a?(Array) ? formats[index] : formats
61
+ end
62
+
63
+ if value.is_a?(Integer) || value.is_a?(Numeric) || value.is_a?(Float)
64
+ write_number(row_number, index, value, format)
65
+ elsif defined?(BigDecimal) && value.is_a?(BigDecimal)
66
+ write_number(row_number, index, value.to_f, format)
67
+ elsif defined?(DateTime) && value.is_a?(DateTime)
68
+ write_datetime(row_number, index, FastExcel.datetime(value), format)
69
+ elsif value.is_a?(Time)
70
+ write_datetime(row_number, index, FastExcel.time(value), format)
71
+ else
72
+ write_string(row_number, index, value.to_s, format)
73
+ end
74
+ end
75
+ end
76
+
77
+ end
78
+ end
79
+
80
+ Libxlsxwriter::Workbook.instance_eval do
81
+ include FastExcel::WorkbookExt
82
+ end
83
+
84
+ Libxlsxwriter::Worksheet.instance_eval do
85
+ include FastExcel::WorksheetExt
86
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fast_excel
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Pavel Evstigneev
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-02-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ffi
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.9'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '2'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">"
28
+ - !ruby/object:Gem::Version
29
+ version: '1.9'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '2'
33
+ description: Wrapper for libxlsxwriter using ffi
34
+ email:
35
+ - pavel.evst@gmail.com
36
+ executables: []
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - ".gitignore"
41
+ - Gemfile
42
+ - Gemfile.lock
43
+ - README.md
44
+ - binaries/libxlsxwriter-alpine.so
45
+ - binaries/libxlsxwriter-darwin.dylib
46
+ - binaries/libxlsxwriter-glibc.so
47
+ - build_alpine_linux.docker
48
+ - build_centos_linux.docker
49
+ - fast_excel.gemspec
50
+ - lib/fast_excel.rb
51
+ - lib/fast_excel/binding.rb
52
+ homepage: https://github.com/paxa/fast_excel
53
+ licenses:
54
+ - MIT
55
+ metadata: {}
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '2.0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubyforge_project:
72
+ rubygems_version: 2.6.8
73
+ signing_key:
74
+ specification_version: 4
75
+ summary: Ultra Fast Excel Writter
76
+ test_files: []