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 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