레일 2.1.0 응용 프로그램 중 하나에서 비슷한 요구 사항이있었습니다. 처리 할 것
class Upload < AR::Base
has_attached_file :doc,
:url => "datafiles/:id",
:path => ":rails_root/uploads/:id/:style/:basename.:extension"
# validations, if any
end
생성 된 UploadsController :
require 'spreadsheet'
module DataReader
def read_bata(path_to_file)
begin
sheet = book.worksheet 0
sheet.each 2 do |row|
unless row[0].blank?
# Create model and save it to DB
...
end
end
rescue Exception => e
puts e
end
end
end
이 모델 업로드를했다 :이 같은 모듈을 쓴 'lib 디렉토리'폴더에서
: 나는 다음과 같은 방식으로 그것을 해결 파일을 업로드하고 적절한 위치에 저장하십시오. 나는 파일 업로드를 위해 Paperclip을 사용했다. '스프레드 시트'라이브러리 here 및 here에 대한
class UploadsController < AC
include DataReader
def new
@upload = Upload.new
end
def create
@upload = Upload.new(params[:upload])
@upload.save
file_path = "uploads/#{@upload.id}/original/#{@upload.doc_file_name}"
@upload.read = DataReader.read_data(file_path)
# respond_to block
end
end
읽기. 적절하게 개선하고 Rails 3에서이 기술을 사용할 수있게 만들 수 있습니다. 이것이 도움이되기를 바랍니다.
안녕하세요, 사용하기가 더 쉬워 보입니다 ... 마지막 do-block의 논리를 설명 할 수 있습니까? 조금 이해하기 어려울 것입니다 ... – Angela
... @ worksheet.row에 저장된 내용 (index) ... 열에 의한 배열입니까? – Angela
물론, @workheet.row (index)는 인덱스에서 행을 반환 할 것이므로 index가 0이면 첫 번째 행을 반환하고, 1이면 두 번째 등을 반환합니다. 마지막 블록은 index = 0에서 시작하여 until 루프를 반환합니다. index는 last_row_index, 즉 엑셀 워크 시트에서 마지막으로 사용 된 행의 색인입니다. 나의 예에서는 행을 가지고 실제로 아무것도하지 않는다. 나는 당신이 그것을 어떻게 접근 할 수 있는지를 보여준다. – DanneManne