fast_excel 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
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
data/Gemfile
ADDED
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
|
data/fast_excel.gemspec
ADDED
@@ -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
|