fast_excel 0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []