xlsx-DSL 0.1.0 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|