用aplsx :: Package在apis中发送xlsx数据,并再次将收到的响应string转换为Axlsx :: Package类
我正在处理API,它将以下面的代码返回以xlsx格式创build的数据
respond_to do |format| format.xlsx do p = Axlsx::Package.new wb = p.workbook wb.add_worksheet(name: "MyWorkSheet") do |sheet| sheet.add_row ["Column1", "Column2", "Column2"] @myData.each do |locale| sheet.add_row [locale.column1, locale.column2, locale.column3] end end send_data Base64.encode64(p.to_stream.read), type: "application/xlsx", filename: "myfile.xlsx" end
p是类Axlsx::Package
在networking上我收到以下回应
response => <Net::HTTPOK 200 OK readbody=true>
现在我想从这个响应体创buildxlsx文件
我用下面的代码解码了响应的主体并接收了数据
decoded_data = Base64.decode64(response.body)
但是,decode_data是String
类的。
我的问题是
我怎样才能将这个Axlsx::Package
再次转换为Axlsx::Package
类,并保存/导出到xlsx文件?
如果确实是xlsx文件的原始来源,那么您只需要:
File.open('filename.xlsx', 'w') {|f| f.write(decoded_data) }