2010-11-29 110 views
1

は、どのように私はYAMLファイルを変換し、スプレッドシートファイルへの細胞の上にインデント形式に保つためにルビーを使用することができます。このようなyamlをスプレッドシートに変換する方法は?

YAMLファイル:

https://github.com/rails/rails/blob/v2.3.10/activesupport/lib/active_support/locale/en.ymlあなたは明確にあなたがこのスプレッドシートは、私は特定することはできませんが、あなたが読むことをYAMLライブラリを使用することができるようになりたいものを述べていない

+2

、考えますここであなたの目標についてもう少し具体的に...ヤムルとスプレッドシートとのやりとりとその問題はどういうものですか? –

+0

.xlsにエクスポートしようとしていますか? –

+0

申し訳ありませんが、私はこのような結果はhttp://cl.ly/3r1V353t0N0D263c3w1v – Raecoo

答えて

4

ファイルをデータ構造に変換し、データ構造をテーブル(文字列の配列の配列)のように変換し、CSVライブラリを使用してファイルに出力します。

require 'yaml' 
require 'csv' 

yaml_txt = File.read 'input.yaml' 
yaml_data = YAML.load yaml_txt 

csv_table = [ 
    [1,'hello world', true], 
    ['a', 'b', 3.14159, 'c', 2, 3e8], 
    [nil, 'another row', 'bla'] 
] 
#replace this^ with something that converts the yaml_data into a 2D array 

File.open 'output.csv', 'w' do |f| 
    f.puts(csv_table.map do |row| 
     CSV.generate_line row 
    end.join "\n") 
end 

現在の例では、生成されます:output.csvで

1,hello world,true 
a,b,3.14159,c,2,300000000.0 
,another row,bla 

を。

あなたは次のオプションをCSVスプレッドシートを開くことができます。

alt text

+0

を考え、 「インデントを保持する」ために、先行する各スペースのペアをCSV出力の空の列に置き換えることができます。私は、CSVをインポートしたときに、レコードごとに可変数の列を処理する方法が、そのように作成されたかどうかだけは分かりません。 –

1

は、それはあなたがする必要がなく、空の文字列と行を結合する方が良いでしょう「\ n」は

関連する問題