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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95b73fe778d6f6293e2532c788c1617ffd3e82e0cbd7052fc27ae219346ba0dc
4
- data.tar.gz: 4cf5e09e2514c8f5066b8e355d70c916c70e1ab163355edbeb9bfab633747125
3
+ metadata.gz: 2b8f324fee676431176640012486127a71154b0ef4ec9e8b63a87690c71df9b9
4
+ data.tar.gz: 4280a3282d54976d88d71b3b7e417be1062d9115fc7786e1642d918dd2375f3e
5
5
  SHA512:
6
- metadata.gz: a41a3845ff09928855f77f24725a42a050d84d9524803f774e5b0b622648c3766f0e60238eceb3bc981087ae2be1c58ffb43d8101effc201469db6d5c32d00f8
7
- data.tar.gz: 2bcbf5bdc28b0258ba2cd63e8495694c79b3c86fbf6cd7ebd397675140b1a986ff6050c3a68677cf3ee2cb9b660fda65c679dafd01bd3b965ebd43562a4a7610
6
+ metadata.gz: a101af4e44b1f5b598995a5306ab59670031d61774a7c7a5417c1b66146fa1da1b439a1d4e4c82eb630fb2037466af6774e4e8ef02362f07b95644bd4ef981ec
7
+ data.tar.gz: 389dc047f3eed14454a6070bb9d7becf575870ad48c6d415017671ca0d85df0ba5b43dd8648ae998cd1405277dd5c212593602a99c3b2956f2eb48a2013effc9
@@ -1,7 +1,7 @@
1
1
  module OpenXML
2
2
  module SpreadsheetML
3
3
  module DSL
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.2'
5
5
  end
6
6
  end
7
7
  end
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 xlsx_path
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
- self.merge_cells.each do |mc|
22
- if mc.include?(index)
23
- index = mc.top_left
24
- end
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
- alias at_cell []
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xlsx-DSL
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyan Yan