2010-11-29 6 views
1

어떻게 루비를 사용하여 yaml 파일을 변환하고 스프레드 시트 파일에 셀 위의 들여 쓰기 형식을 유지할 수 있습니까? 이 같은yaml을 스프레드 시트로 변환하는 방법은 무엇입니까?

YAML 파일 :

https://github.com/rails/rails/blob/v2.3.10/activesupport/lib/active_support/locale/en.yml 당신은 분명이 스프레드 시트 그래서 특정되지 않을 수 있지만이를 읽을 YAML 라이브러리를 사용할 수 있습니다처럼 원하는 것을 언급하지 않은

+2

을 대신 빈 문자열이있는 행을 조인 "\ n"하는 것이 좋습니다 당신은을해야 여기서 목표에 대해 조금 더 구체적으로 말하자면 ... Yaml은 스프레드 시트와 어떻게 상호 작용하며 정확히 무엇이 문제인가? –

+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를 가져올 때 레코드 당 가변 개수의 열을 처리하는 방법을 모르겠다. –

관련 문제