fast_excel 0.1.1 → 0.1.2

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: 878f6bc34dd8e3796224e63c32e32775ae2d8766
4
- data.tar.gz: 8bfc012626af87789f9b15492300cc51a343212c
3
+ metadata.gz: dc15938a6e5c2e6d2708f9c7e78339d4e4a0f324
4
+ data.tar.gz: 27021e66d576016c1c6c17ec7898d52651941ffe
5
5
  SHA512:
6
- metadata.gz: a801b7aab6bf177107530980aef159313bd7ede184506bdb959a9722c98128cc8c87c1613db6a38c7b6fcbd2603ddfc66591f274f53b1d59e8579e9abc6b0cc3
7
- data.tar.gz: e27efd665d88f2db595d9cf4c09362d810fcba63fd2533803cbfd212c90e11b125cd06fe3eaf96869f1179b894d2343a28611d876ff9fc39b9e837b26468a2fb
6
+ metadata.gz: d0a00cb4569d0805b90de9e3207cc7a9e9e3e59caaf18389a8969dae198532547b92e59903adc4d8de5927d11c91a4e4ef46ba9926c5973b174ecebe9747f35f
7
+ data.tar.gz: 62b173870cf8763921e39f7f725073daab2d72efcf6855da64090e80eabac8d5c6806303f9a6d928a427c76eb50345bdddffa60cb0697464b3aa14fd65f03d71
data/BUILD.md CHANGED
@@ -11,7 +11,7 @@
11
11
  #install_name_tool -change /usr/lib/libxlsxwriter.dylib @rpath/libxlsxwriter-darwin.dylib ./binaries/libxlsxwriter-darwin.dylib
12
12
 
13
13
 
14
- ## On Linux
14
+ ## For Linux
15
15
 
16
16
  docker build . -f build_alpine_linux.docker -t fast_excel_alpine
17
17
  docker run -t fast_excel_alpine ls lib/libxlsxwriter.so
data/README.md CHANGED
@@ -34,4 +34,5 @@ end
34
34
  workbook.close
35
35
  ```
36
36
 
37
- This repositiry and gem contain precompiled `libxlsxwriter` for macOs, Linux with glibc and Alpine Linux
37
+ This repositiry and gem contain precompiled [libxlsxwriter](https://github.com/jmcnamara/libxlsxwriter) for MacOs, Linux with glibc and Alpine Linux
38
+
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.1"
3
+ s.version = "0.1.2"
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
@@ -18,7 +18,8 @@ module FastExcel
18
18
  Libxlsxwriter::Workbook.new(workbook)
19
19
  end
20
20
 
21
- def self.datetime(time)
21
+ # Creates internal Libxlsxwriter::Datetime from Datetime object
22
+ def self.lxw_datetime(time)
22
23
  date = Libxlsxwriter::Datetime.new
23
24
  date[:year] = time.year
24
25
  date[:month] = time.month
@@ -29,7 +30,8 @@ module FastExcel
29
30
  date
30
31
  end
31
32
 
32
- def self.time(time)
33
+ # Creates internal Libxlsxwriter::Datetime from Time object
34
+ def self.lxw_time(time)
33
35
  date = Libxlsxwriter::Datetime.new
34
36
  date[:year] = time.year
35
37
  date[:month] = time.month
@@ -40,11 +42,30 @@ module FastExcel
40
42
  date
41
43
  end
42
44
 
43
- module WorkbookExt
45
+ # seconds in 1 day
46
+ XLSX_DATE_DAY = 86400.0
47
+
48
+ # days between 1970-jan-01 and 1900-jan-01
49
+ XLSX_DATE_EPOCH_DIFF = 25567
50
+
51
+ # Convert time to number of days, and change beginning point from 1st jan 1970 to 1st jan 1900
52
+ # Offset argument should be number of seconds, if not specified then it will use Time.zone.utc_offset || 0
53
+ #
54
+ # https://support.microsoft.com/en-us/help/214330/differences-between-the-1900-and-the-1904-date-system-in-excel
55
+ def self.date_num(time, offset = nil)
56
+ unless offset
57
+ # Try use Rails' app timezone
58
+ if Time.respond_to?(:zone)
59
+ offset = Time.zone.utc_offset
60
+ else
61
+ offset = 0 # rollback to UTC
62
+ end
63
+ end
44
64
 
45
- #def add_worksheet(title = nil)
46
- # Libxlsxwriter::Worksheet.new(super(title))
47
- #end
65
+ time.to_f / XLSX_DATE_DAY + XLSX_DATE_EPOCH_DIFF + offset / XLSX_DATE_DAY
66
+ end
67
+
68
+ module WorkbookExt
48
69
 
49
70
  def bold_cell_format
50
71
  bold = add_format
@@ -74,9 +95,9 @@ module FastExcel
74
95
  elsif defined?(BigDecimal) && value.is_a?(BigDecimal)
75
96
  write_number(row_number, index, value.to_f, format)
76
97
  elsif defined?(DateTime) && value.is_a?(DateTime)
77
- write_datetime(row_number, index, FastExcel.datetime(value), format)
98
+ write_datetime(row_number, index, FastExcel.lxw_datetime(value), format)
78
99
  elsif value.is_a?(Time)
79
- write_datetime(row_number, index, FastExcel.time(value), format)
100
+ write_datetime(row_number, index, FastExcel.lxw_time(value), format)
80
101
  else
81
102
  write_string(row_number, index, value.to_s, format)
82
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_excel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Evstigneev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-24 00:00:00.000000000 Z
11
+ date: 2017-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi