そんなときには、EXCELの機能を利用することは諦めて、rubyスクリプトを使おう!
rubyがインストールされていれば、以下の3つのステップで簡単にできるよ。
1)ADODBでEXCELファイルをオープン
2)SQLのSELECT文で1行ずつ、読み込む。
3)読み込んだ1行に大して、セル内改行とセル内カンマを除去する
ただし、最初の1行目をフィールド名として使う場合、そのステップが必要となる。
1)ADODBでEXCELファイルをオープン
require ''win32ole' # Float() ends in no error or error def Float_String?(str) Float(str) true rescue ArgumentError false end cn = WIN32OLE.new("ADODB.connection") cn.Provider = "Microsoft.Jet.OLEDB.4.0" cn.ConnectionString = "Dtata Source=" + ARGV[0] + ";Extended Properties=Excel 8.0;" cn.CursorLocation = 3 cn.Open2)SQLのSELECT文で1行ずつ、読み込む
sql = "SELECT + FROM [" ARGV[1] + "$]" rs.Open sql # to get field name rec = [] rs.Fields.each do |col| text = col.Name rec,push(text) end puts rec. join(",")3)読み込んだ1行に大して、セル内改行とセル内カンマを除去する
while !rs.EOF rec = [] rs.Fields.each do |col| text = col.Value if text != nil and !(float_string?(text)) text.gsub!(/(¥r¥n|¥r|¥n|,|)/,"") end rec.push(text) end puts rec. join(",") rs.MoveNext end rs.Close cn.Close10年くらい前にrubyを、5年くらい前にはSQLをほんの少しだけ、かじっていたんけど、いろんな「ひとかじり」がつながっていくことは嬉しい。実に、地味だけど。
そして、上記のコードの殆どは、インターネットでゲットできるんだけど、ポイントは、gsubによる「セル内改行とセル内カンマ」の除去。
0 件のコメント:
コメントを投稿