用roo打开电子邮件附件

时间:2014-01-24 09:46:26

标签: ruby ruby-roo

我需要操作从电子邮件附件中读取的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)

但它涉及将一个临时文件写入文件系统,我想摆脱它。

有没有办法创建虚拟文件?

1 个答案:

答案 0 :(得分:1)

没有更好的方法可以使用Roo从电子邮件附件中打开Excel。