fast_excel 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cdcac1492cb04d5a800bc0126328375e1ed6d714
4
- data.tar.gz: 40ca992bb34d2f5ac15c8dcfe27aff49f2d97c9f
3
+ metadata.gz: 878f6bc34dd8e3796224e63c32e32775ae2d8766
4
+ data.tar.gz: 8bfc012626af87789f9b15492300cc51a343212c
5
5
  SHA512:
6
- metadata.gz: efcc72cc406007dc46c07a4f7037b87cbc4afbcdfdf09e45b1c9ab5dcc188eab648517b74448537e560801e1aa80c7c42598767be43c91b88d67cd9019ef8d55
7
- data.tar.gz: 9b1cb5c5766c3453a8b5c1da7130f72108866eb6bb38e7bf4efcc0166f3d977395d5961ba73819d22aa63e7f0aee054371e8c92d07e74ee17c30bf0948e324d5
6
+ metadata.gz: a801b7aab6bf177107530980aef159313bd7ede184506bdb959a9722c98128cc8c87c1613db6a38c7b6fcbd2603ddfc66591f274f53b1d59e8579e9abc6b0cc3
7
+ data.tar.gz: e27efd665d88f2db595d9cf4c09362d810fcba63fd2533803cbfd212c90e11b125cd06fe3eaf96869f1179b894d2343a28611d876ff9fc39b9e837b26468a2fb
data/.gitignore CHANGED
@@ -6,4 +6,5 @@ gen.rb
6
6
  gen_ffi.rb
7
7
  *.xlsx
8
8
  a.out
9
- .DS_Store
9
+ .DS_Store
10
+ *.gem
data/BUILD.md ADDED
@@ -0,0 +1,26 @@
1
+ # Build
2
+
3
+ ## On Mac
4
+
5
+ git clone https://github.com/jmcnamara/libxlsxwriter.git
6
+ cd libxlsxwriter
7
+ make
8
+ cd ..
9
+ cp libxlsxwriter/lib/libxlsxwriter.dylib ./binaries/libxlsxwriter-darwin.dylib
10
+ otool -L ./binaries/libxlsxwriter-darwin.dylib
11
+ #install_name_tool -change /usr/lib/libxlsxwriter.dylib @rpath/libxlsxwriter-darwin.dylib ./binaries/libxlsxwriter-darwin.dylib
12
+
13
+
14
+ ## On Linux
15
+
16
+ docker build . -f build_alpine_linux.docker -t fast_excel_alpine
17
+ docker run -t fast_excel_alpine ls lib/libxlsxwriter.so
18
+ LAST_CONTAINER_ID=$(docker ps -a | grep fast_excel_alpine | head -1 | awk '{print $1;}')
19
+ docker cp $LAST_CONTAINER_ID:/srv/libxlsxwriter/lib/libxlsxwriter.so ./binaries/libxlsxwriter-alpine.so
20
+ docker rm $LAST_CONTAINER_ID
21
+
22
+ docker build . -f build_centos_linux.docker -t fast_excel_centos
23
+ docker run -t fast_excel_centos ls lib/libxlsxwriter.so
24
+ LAST_CONTAINER_ID=$(docker ps -a | grep fast_excel_centos | head -1 | awk '{print $1;}')
25
+ docker cp $LAST_CONTAINER_ID:/srv/libxlsxwriter/lib/libxlsxwriter.so ./binaries/libxlsxwriter-glibc.so
26
+ docker rm $LAST_CONTAINER_ID
data/README.md CHANGED
@@ -1,19 +1,17 @@
1
1
  # Ultra Fast Excel Writter for Ruby
2
2
 
3
3
  ```ruby
4
- require 'fast_excel'
5
-
6
- workbook = FastExcel.open("hello_world_ffi.xlsx")
4
+ workbook = FastExcel.open("hello_world_ffi.xlsx", constant_memory: true)
7
5
  worksheet = workbook.add_worksheet("Garuda Payments")
8
6
 
9
7
  bold = workbook.bold_cell_format
10
- worksheet.set_column(0, 0, 30, bold)
8
+ worksheet.set_column(0, 0, FastExcel::DEF_COL_WIDTH, bold)
11
9
 
12
10
  price = workbook.number_format("#,##0.00")
13
- worksheet.set_column(1, 1, 30, price)
11
+ worksheet.set_column(1, 1, 20, price)
14
12
 
15
13
  date_format = workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@")
16
- worksheet.set_column(2, 2, 30, date_format)
14
+ worksheet.set_column(2, 2, 20, date_format)
17
15
 
18
16
  worksheet.write_row(0, ["message", "price", "date"], bold)
19
17
 
@@ -36,30 +34,4 @@ end
36
34
  workbook.close
37
35
  ```
38
36
 
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
37
+ This repositiry and gem contain precompiled `libxlsxwriter` for macOs, Linux with glibc and Alpine Linux
data/example.rb ADDED
@@ -0,0 +1,33 @@
1
+ require_relative './lib/fast_excel'
2
+
3
+ workbook = FastExcel.open("hello_world_ffi.xlsx", constant_memory: true)
4
+ worksheet = workbook.add_worksheet("Garuda Payments")
5
+
6
+ bold = workbook.bold_cell_format
7
+ worksheet.set_column(0, 0, FastExcel::DEF_COL_WIDTH, bold)
8
+
9
+ price = workbook.number_format("#,##0.00")
10
+ worksheet.set_column(1, 1, 20, price)
11
+
12
+ date_format = workbook.number_format("[$-409]m/d/yy h:mm AM/PM;@")
13
+ worksheet.set_column(2, 2, 20, date_format)
14
+
15
+ worksheet.write_row(0, ["message", "price", "date"], bold)
16
+
17
+ for i in 1..1000
18
+ worksheet.write_row(i, ["Hello", (rand * 10_000_000).round(2), Time.now])
19
+
20
+ # Or manually
21
+ # worksheet.write_string(i, 0, "Hello", nil)
22
+ # worksheet.write_number(i, 1, (rand * 10_000_000).round(2), nil)
23
+ # date = Libxlsxwriter::Datetime.new
24
+ # date[:year] = 2017
25
+ # date[:month] = 2
26
+ # date[:day] = 24
27
+ # date[:hour] = i % 24
28
+ # date[:min] = i % 60
29
+ # date[:sec] = i % 60
30
+ # worksheet.write_datetime(i, 2, date, nil)
31
+ end
32
+
33
+ workbook.close
data/fast_excel.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "fast_excel"
3
- s.version = "0.1"
3
+ s.version = "0.1.1"
4
4
  s.author = ["Pavel Evstigneev"]
5
5
  s.email = ["pavel.evst@gmail.com"]
6
6
  s.homepage = "https://github.com/paxa/fast_excel"
data/lib/fast_excel.rb CHANGED
@@ -3,9 +3,18 @@ require_relative './fast_excel/binding'
3
3
  module FastExcel
4
4
  #include Libxlsxwriter
5
5
 
6
- def self.open(filename)
6
+ DEF_COL_WIDTH = 8.43
7
+
8
+ def self.open(filename, constant_memory: false)
7
9
  filename = filename.to_s if defined?(Pathname) && filename.is_a?(Pathname)
8
- workbook = Libxlsxwriter.workbook_new(filename)
10
+
11
+ workbook = if constant_memory
12
+ opt = Libxlsxwriter::WorkbookOptions.new
13
+ opt[:constant_memory] = 1
14
+ Libxlsxwriter.workbook_new_opt(filename, opt)
15
+ else
16
+ Libxlsxwriter.workbook_new(filename)
17
+ end
9
18
  Libxlsxwriter::Workbook.new(workbook)
10
19
  end
11
20
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_excel
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Evstigneev
@@ -38,6 +38,7 @@ extensions: []
38
38
  extra_rdoc_files: []
39
39
  files:
40
40
  - ".gitignore"
41
+ - BUILD.md
41
42
  - Gemfile
42
43
  - Gemfile.lock
43
44
  - README.md
@@ -46,6 +47,7 @@ files:
46
47
  - binaries/libxlsxwriter-glibc.so
47
48
  - build_alpine_linux.docker
48
49
  - build_centos_linux.docker
50
+ - example.rb
49
51
  - fast_excel.gemspec
50
52
  - lib/fast_excel.rb
51
53
  - lib/fast_excel/binding.rb