fast_excel 0.1.1 → 0.1.2

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