[#39948] exit in Ruby/GTK window — NAWATE Masahiko <strike@...>

縄手@松江です.

31 messages 2004/08/10
[#39949] Re: exit in Ruby/GTK window — Masao Mutoh <mutoh@...> 2004/08/10

むとうです。

[#39973] 初心者向けの意見交換の場は?簡単な質問はどこにすればよいでしょうか。 — "Hisashi Yahata" <yahatah@...> 2004/08/26

60歳間近になった素人ですが、rubyに興味をもち、勉強を始めました。

[#40526] procの動作について(質問) — "Hisashi Yahata" <yahatah@...> 2005/01/13

[ruby-list:39979] Excel から読んだ値の種類の判定

From: "H.Shimura" <shimurahiroyuki@...>
Date: 2004-08-26 06:57:31 UTC
List: ruby-list #39979
Re: [ruby-list:39977] Re: 初心者向けの意見交換の場は?簡単な質問はどこにすればよいでしょうか。
Hisashi Yahata様
		志村
そろそろ表題と内容が合わなくなってきたので表題を変更しました

win32ole経由で、エクセルから範囲を読み込む時の話

Excel(VBA)の Rangeオブジェクトの Valueプロパティは、 
範囲内のセルの数が一つなら一つの値を、複数の時は2重配列を返すようですね。

[[<A1の値>, <A2の値>, ...], [<B1の値>, <B2の値>, ...], ... ]

其々の値は、Excelがそのセルの値をどう思ってるかによって、
適切なクラスのオブジェクトとして受け渡されるようです。
(数値、文字列、nil しか試していませんがその3種はそうでした)

さて、ruby に戻って、オブジェクトの種類を見るには、
is_a? や kind_of?(<所要のクラス>)メソッドを使う方法があります。

nil かどうかだけなら、単なる真偽の検査でも分かります。nil -> 偽

d = data(excelfilename,waku,sheet)
d.each do |row| 
  row.each do |cell|
    if cell.kind_of?(String) then
      # いろいろ
    elsif cell.kind_of?(Numeric) then
      # イロイロ
    elsif cell.kind_of?(NilClass) then
      # 雑多
    end
  end
end

In message "[ruby-list:39977] Re: 初心者向けの意見交換の場は?簡単な質問はどこにすればよいでしょう
か。", <EBEFIFGNGMKELGCGNMPMAEIJCIAA.yahatah@agr.kyushu-u.ac.jp>, 
Hisashi Yahata wrote...

 >>> 例えば、質問例は、エクセルデータを読み込み、その内容が「数値」か「文字」
 >か
 >>> [nil」かを判定する方法です。数値であれば計算し、文字の場合にはその文字を
 >使う
 >>> ためですが、簡単なスクリプトがあると思うのですが、簡単にみつかりません。

 >## Excelのデータを読み込む

 >    a = sheet.Range(waku).Value      # get the contents

 >  excelfilename="cal.xls"
 >  waku="A1:F26"
 >  sheet=1
 >  d = data(excelfilename,waku,sheet)
 ># p d
 >for i in 0..25
 >    for j in 0..5
 >   	 print d[i][j],"\t"
 >    end
 >print "\n"

---------------------------------------+---------+---------+以上 2004/8/26

志村弘之  mailto: shimurahiroyuki@obun.co.jp

In This Thread

Prev Next