ooxl 0.0.1.4.21 → 0.0.1.4.22
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 +4 -4
- data/lib/ooxl/ooxl.rb +18 -9
- data/lib/ooxl/version.rb +1 -1
- data/lib/ooxl/xl_objects/sheet.rb +2 -2
- data/lib/ooxl/xl_objects/table.rb +15 -0
- data/lib/ooxl.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 35abcbc0c7fe9cfcb31ed48ae9507966da07fc53
|
|
4
|
+
data.tar.gz: d2e1e49926bbe037ce865531058b0f0ca592a526
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: af462fac6d22aa506790cd95b09a7b90520214881f8f5328197145b000423d3bea23e97ff97c11d2c6d343480ee2f965de5da6b39b059c906e6fc293f17ae664
|
|
7
|
+
data.tar.gz: 79011afbdd27a63e9683741f4e6a091c5cee437b9b5a2669bea51ed0235cd5c08168e61ced5fe39d3693aec755b848600106b86aa3497146b2e955d8c71c2220
|
data/lib/ooxl/ooxl.rb
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
class OOXL
|
|
2
2
|
include Enumerable
|
|
3
3
|
include ListHelper
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
attr_reader :filename
|
|
5
|
+
|
|
6
|
+
def initialize(spreadsheet_filepath, options={})
|
|
6
7
|
@workbook = nil
|
|
7
8
|
@sheets = {}
|
|
8
9
|
@styles = []
|
|
9
10
|
@comments = {}
|
|
10
11
|
@relationships = {}
|
|
11
12
|
@options = options
|
|
13
|
+
@tables = []
|
|
14
|
+
@filename = File.basename(spreadsheet_filepath)
|
|
12
15
|
parse_spreadsheet_contents(spreadsheet_filepath)
|
|
13
16
|
end
|
|
14
17
|
|
|
15
18
|
def self.open(spreadsheet_filepath, options={})
|
|
16
19
|
new(spreadsheet_filepath, options)
|
|
17
|
-
end
|
|
18
|
-
|
|
20
|
+
end
|
|
21
|
+
|
|
19
22
|
def sheets(skip_hidden: false)
|
|
20
23
|
@workbook.sheets.map do |sheet|
|
|
21
24
|
next if sheet[:state] != 'visible' && (@options[:skip_hidden_sheets] || skip_hidden)
|
|
@@ -48,12 +51,16 @@ class OOXL
|
|
|
48
51
|
text.include?('!') ? load_cell_range(text) : sheet(text)
|
|
49
52
|
end
|
|
50
53
|
|
|
51
|
-
def named_range(name, clean_range: false)
|
|
54
|
+
def named_range(name, clean_range: false)
|
|
52
55
|
# yes_no => 'Lists'!$A$1:$A$6
|
|
53
|
-
defined_name = @workbook.defined_names[name]
|
|
54
|
-
defined_name = defined_name.gsub(/\[.+\]/, '').squish if clean_range
|
|
55
|
-
|
|
56
|
-
load_cell_range(defined_name) if defined_name.present?
|
|
56
|
+
defined_name = @workbook.defined_names[name]
|
|
57
|
+
defined_name = defined_name.gsub(/\[.+\]/, '').squish if clean_range
|
|
58
|
+
|
|
59
|
+
load_cell_range(defined_name) if defined_name.present?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def table(name)
|
|
63
|
+
@tables.find { |tbl| tbl.name == name}
|
|
57
64
|
end
|
|
58
65
|
|
|
59
66
|
def load_cell_range(range_text)
|
|
@@ -88,6 +95,8 @@ class OOXL
|
|
|
88
95
|
Nokogiri.XML(entry.get_input_stream.read).remove_namespaces!.xpath('sst/si').each do |shared_string_node|
|
|
89
96
|
shared_strings << shared_string_node.xpath('r/t|t').map { |value_node| value_node.text}.join('')
|
|
90
97
|
end
|
|
98
|
+
when /xl\/tables\/.*?/i
|
|
99
|
+
@tables << OOXL::Table.new(entry.get_input_stream.read)
|
|
91
100
|
when "xl/workbook.xml"
|
|
92
101
|
@workbook = OOXL::Workbook.load_from_stream(entry.get_input_stream.read)
|
|
93
102
|
when /xl\/worksheets\/_rels\/sheet\d+\.xml\.rels/
|
data/lib/ooxl/version.rb
CHANGED
|
@@ -73,9 +73,9 @@ class OOXL
|
|
|
73
73
|
columns
|
|
74
74
|
end
|
|
75
75
|
|
|
76
|
-
def cell(cell_id)
|
|
76
|
+
def cell(cell_id, stream: false)
|
|
77
77
|
column_letter, row_index = cell_id.partition(/\d+/)
|
|
78
|
-
current_row = row(row_index)
|
|
78
|
+
current_row = row(row_index, stream: stream)
|
|
79
79
|
current_row.cell(column_letter) unless current_row.nil?
|
|
80
80
|
end
|
|
81
81
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class OOXL
|
|
2
|
+
class Table
|
|
3
|
+
def initialize(stream)
|
|
4
|
+
@table_node = Nokogiri.XML(stream).remove_namespaces!
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def ref
|
|
8
|
+
@table_node.at('/table').attributes['ref'].try(:value)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def name
|
|
12
|
+
@table_node.at('/table').attributes['name'].try(:value)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/ooxl.rb
CHANGED
|
@@ -11,6 +11,7 @@ require "ooxl/list_helper"
|
|
|
11
11
|
require "ooxl/ooxl"
|
|
12
12
|
require "ooxl/util"
|
|
13
13
|
require "ooxl/xl_objects/workbook"
|
|
14
|
+
require "ooxl/xl_objects/table"
|
|
14
15
|
require "ooxl/xl_objects/relationships"
|
|
15
16
|
require "ooxl/xl_objects/comments"
|
|
16
17
|
require "ooxl/xl_objects/styles"
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ooxl
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.1.4.
|
|
4
|
+
version: 0.0.1.4.22
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Mones
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-01-
|
|
11
|
+
date: 2017-01-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -132,6 +132,7 @@ files:
|
|
|
132
132
|
- lib/ooxl/xl_objects/sheet.rb
|
|
133
133
|
- lib/ooxl/xl_objects/sheet/data_validation.rb
|
|
134
134
|
- lib/ooxl/xl_objects/styles.rb
|
|
135
|
+
- lib/ooxl/xl_objects/table.rb
|
|
135
136
|
- lib/ooxl/xl_objects/workbook.rb
|
|
136
137
|
- ooxml_excel.gemspec
|
|
137
138
|
homepage: https://github.com/halcjames/ooxl
|