fast_excel 0.1 → 0.1.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 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