用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) }