感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

RubyでExcelシートの値を読み込んでみるサンプルなど。

スポンサーリンク

Rubyを便利に使えるようになるために、とりあえず色々と試してみた。

Rubyssh接続して、とりあえずコマンド実行してみる。

require 'rubygems'
require 'net/ssh'

Net::SSH.start("192.168.17.XXX", "user", :password => "pass") do |ssh|
	result = ssh.exec!("ls -l")
	puts result
end

sshで接続してlsを実行した結果を表示することができる。

RubyでInternetExplorerを使ってみる。

公式ドキュメント
http://doc.ruby-lang.org/ja/1.9.2/class/WIN32OLE.html

# -*- coding: windows-31j -*-
require 'win32ole'

ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("https://twitter.com/877uszm")
ie.Visible = false

while ie.busy
  sleep 1
end

printf "title: %s\n", ie.document.title

links = ie.Document.All.Tags('a')
for link in links do
  puts link.href
end

これでタイトルやリンクを取得することができる。
結果はこんな感じ。

title: 岩崎 京也 (877uszm)さんはTwitterを使っています
https://twitter.com/
https://twitter.com/
https://twitter.com/

なお、EclipseのプラグインでRuby開発した場合、コンソールが文字化けしてしまうので、「実行の構成」→「共通」で、文字コードをMS932とか、文字化けしないように文字コードを設定する必要がある。

RubyでExcelシートの値を読み込む

以下のような構造のExcelシートを読み込んでみる

ID 名前 年齢 趣味
1 ほげ 28 game
2 ふが 20 soccer
3 ふぉお 32 basketball

Rubyのコードはこんな感じ。

# -*- coding: windows-31j -*-
require 'win32ole'

def getAbsolutePath filename
  fso = WIN32OLE.new('Scripting.FileSystemObject')
  fso.getAbsolutePathName(filename)
end

filename = getAbsolutePath("hoge.xlsx")
excel = WIN32OLE.new('Excel.Application')
book = excel.Workbooks.Open(filename)
sheet = book.ActiveSheet
puts "sheetName:"
puts sheet.name()
sheet.UsedRange.Rows.each do |row|
  cells =  Array.new
  row.Columns.each do |cell|
    if cell.Value.kind_of?(String) then
      cells << cell.Value
    else
      if cell.Value != nil then
        cells << cell.Value.truncate
      end
    end
    #これだと数値がfloat方のため、1.0とかになって表示される
    #cells << cell.Value
  end
  puts cells.join(',')
end

book.Close
excel.Quit

結果は以下の通り

sheetName:
testsheet
ID,名前,年齢,趣味
1,ほげ,28,game
2,ふが,20,soccer
3,ふぉお,32,basketball

Rubyで無事にExcelシートの値を読み込んで、CSVで表示することができた。

参考にした本


サーバ構築自動化の話がたくさん載っている。
中でもRubyをうまいこと使って自動化する手法がたくさんあって、非常に参考になる。

感謝のプログラミング

今回で感謝のプログラミングは【560時間目】
10000時間まで、あと【9440時間】
慣れないRubyにずいぶん時間がかかってしまった。