fast_excel 0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cdcac1492cb04d5a800bc0126328375e1ed6d714
4
+ data.tar.gz: 40ca992bb34d2f5ac15c8dcfe27aff49f2d97c9f
5
+ SHA512:
6
+ metadata.gz: efcc72cc406007dc46c07a4f7037b87cbc4afbcdfdf09e45b1c9ab5dcc188eab648517b74448537e560801e1aa80c7c42598767be43c91b88d67cd9019ef8d55
7
+ data.tar.gz: 9b1cb5c5766c3453a8b5c1da7130f72108866eb6bb38e7bf4efcc0166f3d977395d5961ba73819d22aa63e7f0aee054371e8c92d07e74ee17c30bf0948e324d5
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ libxlsxwriter
2
+ .ruby-version
3
+ try.c
4
+ try.rb
5
+ gen.rb
6
+ gen_ffi.rb
7
+ *.xlsx
8
+ a.out
9
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'ffi'
4
+ gem 'ffi_gen'
5
+ gem 'axlsx'
data/Gemfile.lock ADDED
@@ -0,0 +1,26 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ axlsx (2.0.1)
5
+ htmlentities (~> 4.3.1)
6
+ nokogiri (>= 1.4.1)
7
+ rubyzip (~> 1.0.0)
8
+ ffi (1.9.17)
9
+ ffi_gen (1.2.0)
10
+ ffi (~> 1.0)
11
+ htmlentities (4.3.4)
12
+ mini_portile2 (2.1.0)
13
+ nokogiri (1.7.0.1)
14
+ mini_portile2 (~> 2.1.0)
15
+ rubyzip (1.0.0)
16
+
17
+ PLATFORMS
18
+ ruby
19
+
20
+ DEPENDENCIES
21
+ axlsx
22
+ ffi
23
+ ffi_gen
24
+
25
+ BUNDLED WITH
26
+ 1.14.4
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # Ultra Fast Excel Writter for Ruby
2
+
3
+ ```ruby
4
+ require 'fast_excel'
5
+
6
+ workbook = FastExcel.open("hello_world_ffi.xlsx")
7
+ worksheet = workbook.add_worksheet("Garuda Payments")
8
+
9
+ bold = workbook.bold_cell_format
10
+ worksheet.set_column(0, 0, 30, bold)
11
+
12
+ price = workbook.number_format("#,##0.00")
13
+ worksheet.set_column(1, 1, 30, price)
14
+
15
+ date_format = workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@")
16
+ worksheet.set_column(2, 2, 30, date_format)
17
+
18
+ worksheet.write_row(0, ["message", "price", "date"], bold)
19
+
20
+ for i in 1..1000
21
+ worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now])
22
+
23
+ # Or manually
24
+ # worksheet.write_string(i, 0, "Hello", nil)
25
+ # worksheet.write_number(i, 1, (rand * 10_000_000).round(2), nil)
26
+ # date = Libxlsxwriter::Datetime.new
27
+ # date[:year] = 2017
28
+ # date[:month] = 2
29
+ # date[:day] = 24
30
+ # date[:hour] = i % 24
31
+ # date[:min] = i % 60
32
+ # date[:sec] = i % 60
33
+ # worksheet.write_datetime(i, 2, date, nil)
34
+ end
35
+
36
+ workbook.close
37
+ ```
38
+
39
+
40
+ # Build
41
+
42
+ ## On Mac
43
+
44
+ git clone https://github.com/jmcnamara/libxlsxwriter.git
45
+ cd libxlsxwriter
46
+ make
47
+ cd ..
48
+ cp libxlsxwriter/lib/libxlsxwriter.dylib ./binaries/libxlsxwriter-darwin.dylib
49
+ otool -L ./binaries/libxlsxwriter-darwin.dylib
50
+ #install_name_tool -change /usr/lib/libxlsxwriter.dylib @rpath/libxlsxwriter-darwin.dylib ./binaries/libxlsxwriter-darwin.dylib
51
+
52
+
53
+ ## On Linux
54
+
55
+ docker build . -f build_alpine_linux.docker -t fast_excel_alpine
56
+ docker run -t fast_excel_alpine ls lib/libxlsxwriter.so
57
+ LAST_CONTAINER_ID=$(docker ps -a | grep fast_excel_alpine | head -1 | awk '{print $1;}')
58
+ docker cp $LAST_CONTAINER_ID:/srv/libxlsxwriter/lib/libxlsxwriter.so ./binaries/libxlsxwriter-alpine.so
59
+ docker rm $LAST_CONTAINER_ID
60
+
61
+ docker build . -f build_centos_linux.docker -t fast_excel_centos
62
+ docker run -t fast_excel_centos ls lib/libxlsxwriter.so
63
+ LAST_CONTAINER_ID=$(docker ps -a | grep fast_excel_centos | head -1 | awk '{print $1;}')
64
+ docker cp $LAST_CONTAINER_ID:/srv/libxlsxwriter/lib/libxlsxwriter.so ./binaries/libxlsxwriter-glibc.so
65
+ docker rm $LAST_CONTAINER_ID
Binary file
Binary file
Binary file
@@ -0,0 +1,15 @@
1
+ FROM alpine:latest
2
+
3
+ MAINTAINER Pavel Evstigneev <pavel.evst@gmail.com>
4
+
5
+ RUN \
6
+ apk update && apk upgrade && \
7
+ apk add zlib-dev make g++ && \
8
+ rm -rf /var/cache/apk/*
9
+
10
+ RUN mkdir -p /srv/libxlsxwriter
11
+ WORKDIR /srv/libxlsxwriter
12
+
13
+ COPY ./libxlsxwriter /srv/libxlsxwriter
14
+
15
+ RUN make
@@ -0,0 +1,12 @@
1
+ FROM centos:latest
2
+
3
+ MAINTAINER Pavel Evstigneev <pavel.evst@gmail.com>
4
+
5
+ RUN yum -y install make gcc zlib-devel && yum clean all
6
+
7
+ RUN mkdir -p /srv/libxlsxwriter
8
+ WORKDIR /srv/libxlsxwriter
9
+
10
+ COPY ./libxlsxwriter /srv/libxlsxwriter
11
+
12
+ RUN make
@@ -0,0 +1,18 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "fast_excel"
3
+ s.version = "0.1"
4
+ s.author = ["Pavel Evstigneev"]
5
+ s.email = ["pavel.evst@gmail.com"]
6
+ s.homepage = "https://github.com/paxa/fast_excel"
7
+ s.summary = %q{Ultra Fast Excel Writter}
8
+ s.description = "Wrapper for libxlsxwriter using ffi"
9
+ s.license = 'MIT'
10
+ s.required_ruby_version = '~> 2.0'
11
+
12
+ s.files = `git ls-files`.split("\n")
13
+ s.test_files = []
14
+
15
+ s.require_paths = ["lib"]
16
+
17
+ s.add_runtime_dependency "ffi", ["> 1.9", "< 2"]
18
+ end