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.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +26 -0
- data/README.md +65 -0
- data/binaries/libxlsxwriter-alpine.so +0 -0
- data/binaries/libxlsxwriter-darwin.dylib +0 -0
- data/binaries/libxlsxwriter-glibc.so +0 -0
- data/build_alpine_linux.docker +15 -0
- data/build_centos_linux.docker +12 -0
- data/fast_excel.gemspec +18 -0
- data/lib/fast_excel/binding.rb +9514 -0
- data/lib/fast_excel.rb +86 -0
- metadata +76 -0
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: []
|