【问题标题】:Send xlsx file to front end - AngularJS将 xlsx 文件发送到前端 - AngularJS
【发布时间】:2016-08-29 10:38:52
【问题描述】:

我想将 ruby​​XL gem 创建的 xlsx 文件发送到前端,也就是 AngularJS。当我将工作表保存在流中并通过 send_data 方法发送时,我得到了数据,但我无法打开创建的文档,因为它已损坏。

workbook = RubyXL::Workbook.new
worksheet = workbook[0]
worksheet.sheet_name = 'Average of Team'
worksheet.add_cell(0, 0, 'A1')
buffer = workbook.sream
send_data buffer

我能够将数据保存到磁盘。但我无法将其发送到客户端。所以,我可以从 angularjs 访问数据。

workbook = RubyXL::Workbook.new
worksheet = workbook[0]
worksheet.sheet_name = 'Average of Team'
worksheet.add_cell(0, 0, 'A1')
path = "#{Rails.root}/tmp/#{Time.now.strftime('%Y%m%d%H%M%S%L')}.xlsx"
workbook.write(path)
send_file path

我不想将工作簿保存在云端并将链接发送到客户端。我的问题的最佳解决方案是什么?我哪里出错了?

统一更新: 似乎当我尝试发送保存的文件时,我在发送完成之前删除了文件。

统一更新: 当我发送数据时,我遇到了编码数据的问题。我尝试使用string.bytes.to_a.pack("C*")string.force_encoding('binary')。但这对我没有帮助。

【问题讨论】:

    标签: ruby-on-rails ruby excel xlsx rubyxl


    【解决方案1】:

    我认为问题在于 ruby​​ 和 js 库之间不兼容。一种可能的解决方案是在后端运行前端库,以便处理具有相同库的文件。可以使用V8 js引擎https://github.com/cowboyd/therubyracer

    但我不能 100% 确定我的解决方案是独一无二的并且是最好的 :) 我有一个类似的问题,我已经以这种方式解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-10
      • 2018-08-14
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 2021-06-22
      • 2017-02-03
      • 2014-08-24
      相关资源
      最近更新 更多