これはRubyで行われます。これまでに試みたことを提供しました。
エクセルのワークブック(複数のシートになる)を繰り返し処理し、基本的にすべてが配置されている場所にインデックスを付けて記録することが可能かどうかについて興味があります。10枚のワークブックがあるとしましょう。最初のシートを取得し、そのシート名を記録してから、最初のセルに移動して、そのシートのデータのインデックス作成を開始します(正しい単語かどうかはわかりません)。最初の(1、A)とその中にあるデータについて、セルの場所を記録します。CSVファイルなどの形式でデータを出力しようとしています。
私が書いたいくつかのコードは、基本的にワークブック内のすべてのシートとすべてのセルを繰り返し(空白を削除)、そのデータを取得してCSVに入れます...シート名やセル番号はありません。私はrooとcsvの宝石を使用しています:
require 'rubygems'
require 'roo'
#Classes Used
class ArrayIterator
def initialize(array)
@array = array
@index = 0
end
def has_next?
@index < @array.length
end
def item
@array[@index]
end
def next_item
value = @array[@index]
@index += 1
value
end
end
#Open up files to compare
w1 = Excelx.new ( "C:/Ruby/myworkbook.xlsx" )
$values = Array.new
i = 0.to_i
# Continue until no worksheets left
num_sheets = w1.sheets().size
while (i < num_sheets)
puts "i is currently : #{i}"
puts "length of sheet array is : #{num_sheets}"
#Grab first sheet of each workbook
w1.default_sheet = w1.sheets[i]
1.upto(w1.last_row) do | row |
1.upto(w1.last_column) do | column |
string = w1.cell(row, column).to_s
if (string.strip.empty?)
puts "Whitespace!"
else
$values << string
end
end
end
i = i + 1.to_i
end
count = 0.to_i
CSV.open('C:/Ruby/results.csv', "w") do |csv|
csv << ['String']
i = ArrayIterator.new($values)
while i.has_next?
csv << [i.next_item]
count += 1
end
end