簡體   English   中英

將xlsx文件發送到前端-AngularJS

[英]Send xlsx file to front end - AngularJS

我想將rubyXL 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

我不想將工作簿保存在雲上並發送鏈接到客戶端。 我的問題的最佳解決方案是什么? 我在哪里犯錯?

UPD:看來當我嘗試發送保存的文件時,我在發送完成之前先刪除了文件。

UPD:發送數據時,我在編碼數據時遇到問題。 我嘗試使用string.bytes.to_a.pack("C*")string.force_encoding('binary') 但這並沒有幫助我。

我認為問題在於ruby和js庫之間不兼容。 一種可能的解決方案是在后端運行前端庫,以便使用相同的庫處理文件。 可以使用V8 js引擎https://github.com/cowboyd/therubyracer

但是我不是100%肯定我的解決方案是唯一的和最好的解決方案:)我有一個類似的問題,我已經用這種方法解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM