[英]ruby roo puts column from parsing
我是編程方面的新手,非常感謝所有會回答我的人。.我正嘗試從搜索開始打印列。 實際上我的excel是這樣組成的:
| | Header | Header | Header | Header |
|Header|Server 1|Server 2|Server 3|Server 4|
|Header| Data | Data | Data | Data |
|Header| Data | Data | Data | Data |
|Header| Data | Data | Data | Data |
這是我的代碼,但輸出不是我想要的...。
fo_set_parse = xls.parse(:header_search => ['Server'], :clean => true)
fo_set_parse.each do |row|
row.each do |key,value|
if value != nil
puts "#{value}"
end
end
end
我想從“服務器”搜索開始以相同的excel樣式進行打印。“服務器”的數量每次都會更改,因此我不能使用類似
1.upto(xls.last_column) do |col|
server1 = xls.cell(2,col)
server2 = xls.cell(3,col)
server3 = xls.cell(4,col)
server4 = xls.cell(5,col)
puts "#{server1}\t #{server2}\t #{server3}\t #{server4}\t"
end
有什么幫助嗎?
我對roo並不熟悉(乍一看,似乎沒有很多例子可以借鑒),但是如何做:
data_row_definitions = {
:data_a => 2, # i.e. data_a is stored in row 2 for all servers
:data_b => 3,
:data_c => 4,
}
server_columns = 2.upto(xls.last_column) # or whatever columns the servers are listed
server_columns.map do |server_col|
data_for_server = Hash[
data_row_definitions.map do |data_name, row|
cell_value = xls.cell(row, server_col)
[data_name, cell_value]
end
]
end
用這樣的表:
| |Server 1|Server 2|Server N|
| dataA | 1| 3| 7|
| dataB | 10| 35| 14|
| dataC | 100| 95| 28|
(我想)您將獲得數據結構:
[
{
"dataA" => 1,
"dataB" => 10,
"dataC" => 100,
},
{
"dataA" => 3,
"dataB" => 35,
"dataC" => 95,
},
{
"dataA" => 7,
"dataB" => 14,
"dataC" => 28,
},
]
由於應該在server_columns
變量中枚舉每個服務器/列,因此它應該對任何N
服務器/列都有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.