从 JavaScript 调用 Rails 导出 XLS 文件可以通过以下步骤实现:
axlsx
或 spreadsheet
)来生成 XLS 文件,并将其发送给前端。axlsx_rails
)来创建 XLS 模板,并填充数据。send_data
方法将文件作为响应发送给前端,设置正确的 MIME 类型和文件名。以下是一个示例代码:
在 Rails 后端的路由文件 routes.rb
中添加导出 XLS 文件的路由:
get 'export_xls', to: 'xls_export#export'
在控制器 xls_export_controller.rb
中添加导出 XLS 文件的方法:
require 'axlsx'
class XlsExportController < ApplicationController
def export
# 生成 XLS 文件
p = Axlsx::Package.new
wb = p.workbook
wb.add_worksheet(name: "Sheet1") do |sheet|
sheet.add_row ["Header 1", "Header 2", "Header 3"]
sheet.add_row ["Data 1", "Data 2", "Data 3"]
end
# 发送 XLS 文件给前端
send_data p.to_stream.read, filename: "export.xls", type: "application/vnd.ms-excel"
end
end
在 JavaScript 前端调用导出 XLS 文件的方法:
function exportXls() {
fetch('/export_xls')
.then(response => response.blob())
.then(blob => {
// 创建一个下载链接
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'export.xls';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
});
}
以上示例代码使用了 axlsx
和 axlsx_rails
gem 来生成 XLS 文件,你可以根据自己的需求选择其他库或工具。同时,你也可以根据实际情况对代码进行修改和优化。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云