1

XLSファイルのリンクですSpreadsheet gem を使用して XLS ファイルの内容を抽出しようとしています。特に、(年、国民総生産など) のようなすべての列ヘッダーを収集したいと考えています。しかし、問題はそれらが同じ列にないことです。たとえば、Gross National Income は 3 つの行で構成されています。また、セル「年」を作成するために結合された行セルの数も知りたいです。

私はプログラムを書き始めました、そして私はこれまでです:

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

しかし、今私は立ち往生しており、続行するにはいくつかのガイドラインが本当に必要です. どんな種類の助けも大歓迎です。

4

1 に答える 1

3
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
于 2013-01-28T20:45:44.013 に答える