我需要操作从电子邮件附件中读取的xls文件。由于性能原因,我需要使用Roo gem。这里的问题是将附件传递给Roo。 Spreadsheet gem可以直接读取StringIO,但Roo似乎没有这样的功能。 (Is there any way to get Roo to accept StringIO objects in place of files?)
我找到了这个解决方案
attachment = mail.attachments.first
file = Tempfile.new(['attachment', '.xls'], :encoding => 'ascii-8bit')
file.write StringIO.new(attachment.body.decoded).read
excel = Roo::Excel.new(file.path)
但它涉及将一个临时文件写入文件系统,我想摆脱它。
有没有办法创建虚拟文件?
答案 0 :(得分:1)
没有更好的方法可以使用Roo从电子邮件附件中打开Excel。