Ruby:读取xls文件的内容并获取每个单元格的信息
是XLS文件的链接。我试图使用电子表格gem来提取XLS文件的内容。特别是,我想收集所有列标题,如(年份、国民生产总值等)。但是,问题是他们不在同一排。例如,国民总收入由三行组成。我还想知道有多少行单元格被合并成“年” 我已经开始编写程序,并且我已经做到了:Ruby:读取xls文件的内容并获取每个单元格的信息,ruby,spreadsheet,xls,Ruby,Spreadsheet,Xls,是XLS文件的链接。我试图使用电子表格gem来提取XLS文件的内容。特别是,我想收集所有列标题,如(年份、国民生产总值等)。但是,问题是他们不在同一排。例如,国民总收入由三行组成。我还想知道有多少行单元格被合并成“年” 我已经开始编写程序,并且我已经做到了: require 'rubygems' require 'open-uri' require 'spreadsheet' rows = Array.new url = 'http://www.stats.gov.cn/tjsj/ndsj/2
require 'rubygems'
require 'open-uri'
require 'spreadsheet'
rows = Array.new
url = 'http://www.stats.gov.cn/tjsj/ndsj/2012/html/C0201e.xls'
doc = Spreadsheet.open (open(url))
sheet1 = doc.worksheet 0
sheet1.each do |row|
if row.is_a? Spreadsheet::Formula
# puts row.value
rows << row.value
else
# puts row
rows << row
end
# puts row.value
end
需要“rubygems”
需要“打开uri”
需要“电子表格”
rows=Array.new
url='1〕http://www.stats.gov.cn/tjsj/ndsj/2012/html/C0201e.xls'
doc=Spreadsheet.open(open(url))
sheet1=文件工作表0
表1.各do |行|
如果行是a?电子表格::公式
#将行放入.value
行需要“rubygems”
需要“打开uri”
需要“电子表格”
rows=Array.new
temp_rows=Array.new
列标题=Array.new
索引=0
url='1〕http://www.stats.gov.cn/tjsj/ndsj/2012/html/C0201e.xls'
doc=Spreadsheet.open(open(url))
sheet1=文件工作表0
表1.各do |行|
我现在可以找到一个适合我的方法。
require 'rubygems'
require 'open-uri'
require 'spreadsheet'
rows = Array.new
temp_rows = Array.new
column_headers = Array.new
index = 0
url = 'http://www.stats.gov.cn/tjsj/ndsj/2012/html/C0201e.xls'
doc = Spreadsheet.open (open(url))
sheet1 = doc.worksheet 0
sheet1.each do |row|
rows << row.to_a
end
rows.each_with_index do |row,ind|
if row[0]=="Year"
index = ind
break
end
end
(index..7).each do |i|
# puts rows[i].inspect
if rows[i][0] =~ /[0-9]/
break
else
temp_rows << rows[i]
end
end
col_size = temp_rows[0].size
# puts temp_rows.inspect
col_size.times do |c|
temp_str = ""
temp_rows.each do |row|
temp_str +=' '+ row[c] unless row[c].nil?
end
# puts temp_str.inspect
column_headers << temp_str unless temp_str.nil?
end
puts 'Column Headers of this xls file are : '
# puts column_headers.inspect
column_headers.each do |col|
puts col.strip.inspect if col.length >1
end