,可以通过以下步骤实现:
roo
和axlsx
。可以在Gemfile文件中添加以下内容并运行bundle install
安装:gem 'roo'
gem 'axlsx'
ExcelFilesController
,并在其中定义一个用于处理上传和保存.xlsx文件的动作,例如upload
:class ExcelFilesController < ApplicationController
def upload
file = params[:file]
spreadsheet = Roo::Spreadsheet.open(file.path)
header = spreadsheet.row(1)
data = []
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
data << row
end
ExcelFile.create(data: data.to_json)
redirect_to root_path, notice: 'Excel file uploaded successfully.'
end
end
Rails.application.routes.draw do
# ...
resources :excel_files, only: [:upload]
# ...
end
ExcelFile
,用于存储.xlsx文件的数据。在模型中,定义一个名为data
的字段,用于存储解析后的数据:class ExcelFile < ApplicationRecord
serialize :data, JSON
end
upload.html.erb
,包含一个表单用于选择和提交.xlsx文件:<%= form_with(url: excel_files_upload_path, local: true, multipart: true) do |form| %>
<%= form.file_field :file %>
<%= form.submit 'Upload' %>
<% end %>
这样,利用Rails控制器就可以实现.xlsx文件在SQL数据库中的存储。请注意,以上示例仅提供了基本的实现思路,具体的实现方式可能因应用需求而有所不同。
云+社区技术沙龙[第17期]
云+社区技术沙龙[第20期]
“中小企业”在线学堂
Techo Day
云+社区沙龙online [国产数据库]
新知·音视频技术公开课
DB TALK 技术分享会
云+社区技术沙龙[第19期]
DBTalk
领取专属 10元无门槛券
手把手带您无忧上云