xlsx-DSL 0.1.0 → 0.2.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 +4 -4
- data/lib/xlsx/DSL/version.rb +1 -1
- data/lib/xlsx/parser.rb +2 -1
- data/lib/xlsx/sheet.rb +73 -6
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b8f324fee676431176640012486127a71154b0ef4ec9e8b63a87690c71df9b9
|
4
|
+
data.tar.gz: 4280a3282d54976d88d71b3b7e417be1062d9115fc7786e1642d918dd2375f3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a101af4e44b1f5b598995a5306ab59670031d61774a7c7a5417c1b66146fa1da1b439a1d4e4c82eb630fb2037466af6774e4e8ef02362f07b95644bd4ef981ec
|
7
|
+
data.tar.gz: 389dc047f3eed14454a6070bb9d7becf575870ad48c6d415017671ca0d85df0ba5b43dd8648ae998cd1405277dd5c212593602a99c3b2956f2eb48a2013effc9
|
data/lib/xlsx/DSL/version.rb
CHANGED
data/lib/xlsx/parser.rb
CHANGED
@@ -4,7 +4,7 @@ module OpenXML
|
|
4
4
|
@@shared_strings = nil
|
5
5
|
|
6
6
|
class << self
|
7
|
-
def open
|
7
|
+
def open(xlsx_path)
|
8
8
|
Zip::File.open(xlsx_path) do |zf|
|
9
9
|
zf.each do |entry|
|
10
10
|
content = entry.get_input_stream.read
|
@@ -19,6 +19,7 @@ module OpenXML
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
@@workbook.merge_sheets(@@sheets) if @@sheets
|
22
|
+
yield(@@workbook) if block_given?
|
22
23
|
@@workbook
|
23
24
|
end
|
24
25
|
|
data/lib/xlsx/sheet.rb
CHANGED
@@ -18,15 +18,27 @@ module OpenXML
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def [] index
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
case index
|
22
|
+
when /^[A-Z]+\d+$/
|
23
|
+
retrieve_one_cell index
|
24
|
+
when /^\d+$/
|
25
|
+
retrieve_one_row index
|
26
|
+
when /^[A-Z]+$/
|
27
|
+
retrieve_one_column index
|
28
|
+
when /^(\d+)[\-:](\d+)$/
|
29
|
+
retrieve_rows($1, $2)
|
30
|
+
when /^([A-Z]+)[\-:]([A-Z]+)$/
|
31
|
+
retrieve_columns($1, $2)
|
32
|
+
when /^([A-Z]+)(\d+)[\-:]([A-Z]+)(\d+)$/
|
33
|
+
retrieve_one_matrix($1, $2, $3, $4)
|
34
|
+
else
|
35
|
+
raise IndexError, 'Invalid index'
|
25
36
|
end
|
26
|
-
self.sheet_data[index]
|
27
37
|
end
|
28
38
|
|
29
|
-
|
39
|
+
def at_cell index
|
40
|
+
retrieve_one_cell index
|
41
|
+
end
|
30
42
|
|
31
43
|
def self.parser content
|
32
44
|
doc = Nokogiri::XML content
|
@@ -65,6 +77,61 @@ module OpenXML
|
|
65
77
|
def max_row
|
66
78
|
/[A-Z]+(\d+)$/.match(dimension)[1]
|
67
79
|
end
|
80
|
+
|
81
|
+
private
|
82
|
+
|
83
|
+
def retrieve_one_cell index
|
84
|
+
self.merge_cells.each do |mc|
|
85
|
+
if mc.include?(index)
|
86
|
+
index = mc.top_left
|
87
|
+
end
|
88
|
+
end
|
89
|
+
self.sheet_data[index].value
|
90
|
+
end
|
91
|
+
|
92
|
+
def retrieve_one_row index
|
93
|
+
cells = []
|
94
|
+
('A'..max_column).each do |col|
|
95
|
+
cells << retrieve_one_cell(col+index)
|
96
|
+
end
|
97
|
+
cells
|
98
|
+
end
|
99
|
+
|
100
|
+
def retrieve_rows(one, two)
|
101
|
+
cells = []
|
102
|
+
(one.to_i..two.to_i).each do |row_index|
|
103
|
+
cells << retrieve_one_row(row_index.to_s)
|
104
|
+
end
|
105
|
+
cells
|
106
|
+
end
|
107
|
+
|
108
|
+
def retrieve_one_column index
|
109
|
+
cells = []
|
110
|
+
(1..max_row.to_i).each do |row|
|
111
|
+
cells << retrieve_one_cell(index+row.to_s)
|
112
|
+
end
|
113
|
+
cells
|
114
|
+
end
|
115
|
+
|
116
|
+
def retrieve_columns(one, two)
|
117
|
+
cells = []
|
118
|
+
(one..two).each do |column_index|
|
119
|
+
cells << retrieve_one_column(column_index)
|
120
|
+
end
|
121
|
+
cells
|
122
|
+
end
|
123
|
+
|
124
|
+
def retrieve_one_matrix (one, two, three, four)
|
125
|
+
cells = []
|
126
|
+
(two.to_i..four.to_i).each do |row_index|
|
127
|
+
row = []
|
128
|
+
(one..three).each do |column_index|
|
129
|
+
row << retrieve_one_cell(column_index+row_index.to_s)
|
130
|
+
end
|
131
|
+
cells << row
|
132
|
+
end
|
133
|
+
cells
|
134
|
+
end
|
68
135
|
end
|
69
136
|
|
70
137
|
class MergeCell
|