RubbyXL을 사용하여 Excel 편집 및 고객 반환
만든 물건
만들어진 소스 코드가 여기 있습니다.
Excel 편집
RubbyXL이라는 gem을 사용합니다.
excel을 열 수 있는gem도 있어요.
이번에는 편집할 수 있는 RubbyXL을 사용합니다.
단일체라면 아래의 느낌으로 가능합니다.
require 'rubyXL'
# ファイルを読み込んでRubyXL::Workbookにデシリアライズ
workbook = RubyXL::Parser.parse("path/to/Excel/file.xlsx")
# ブック→シート→行→セルという構造になっている
worksheet1 = workbook[0]
row1 = worksheet1[0]
cell1 = row1[0]
# 書き込むときはWorksheetのメソッドが使える
worksheet1.add_cell 0, 0, 'changed'
# 保存
workbook.save
rails new
rails 프로젝트를 제작하다.
이번에는 가로로 모형을 만들지 않기 때문에 액티브 레코드 등 필요 없는 모듈이 생성되지 않도록 옵션을 추가한다.
rails new -MOCJ
경로
excel 자원에 대한 경로를 만듭니다.
또한 루트를 excels로 설정합니다.
라우팅 방법
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: "excels#show"
resource :excel, only: [:show, :create]
end
컨트롤러
show 방법에서는 아무것도 하지 않고 페이지만 표시합니다.
Excel 파일이create로 전송되므로 편집하여 고객에게 전송합니다.
class ExcelsController < ApplicationController
def show
end
def create
file = params[:file]
# ファイルを開く
workbook = RubyXL::Parser.parse file.path
# 編集する
workbook[0].add_cell 0, 0, 'changed'
# 編集したファイルを送る
send_data workbook.stream.string, type: file.content_type, filename: 'modified.xlsx'
end
end
업로드된 파일은 UploadedFile 객체로 받을 수 있습니다.RubyXL::Parser.parse는 File 대상이 아니라 경로를 매개 변수로 하기 때문에 파일을 업로드하는 경로를 지정하여 RubyXL::Workbook 대상으로 변환합니다.
업로드된 파일이tempfile로 저장됨
UploadedFile#path를 통해 이tempfile 경로를 얻을 수 있습니다.
편집한 파일은send-입니다.데이터 방법을 사용하여 발송하다.
데이터로 전송되는 것은Workbook#stream에서 얻을 수 있는 이진 흐름을 Stream#string으로 문자열로 만든다.
콘텐츠 유형을 지정해야 하지만, UploadedFile는 수신할 때의 콘텐츠 유형을 기록하기 때문에 같은 것을 지정하면 됩니다.
뷰
Excel 파일을 업로드하는 뷰를 생성합니다.
<%= form_tag({action: :create}, multipart: true) do %>
<div>
<%= file_field_tag :file %>
</div>
<div>
<%= submit_tag "Send" %>
</div>
<% end %>
파일을 선택하고 보낼 수 있습니다.전송된 파일은 ExcelsController#create로 처리됩니다.
시험해 보다
EXCEL 파일 준비
보내드릴게요.
편집된 파일 다운로드를 시작합니다.
열어봐.편집된 Excel이 다운로드되었습니다.
총결산
Reference
이 문제에 관하여(RubbyXL을 사용하여 Excel 편집 및 고객 반환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ytnk531/items/ca43d72fecc9389f5e38텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)