ruby - 有没有一种更简洁的方法使用 podio gem 在 Ruby 中将 xlsx 对象转换为 csv

标签 ruby file csv io podio

我正在使用 Podio 应用程序,我制作了一个小脚本来从我的 Podio 数据库中获取数据并放入 xlsx 文件中,然后使用 roo 将其转换为 csv。

xlsx = Podio::Item.xlsx( <app_number>, options = {} )

fname = "blah.xlsx"

somefile = File.open(fname, "w")
somefile.puts xlsx
somefile.close
xlsx_data = Roo:Spreadsheet.open(fname)
csv = xlsx_data.to_csv
puts csv

所以这可行,但打印到文件,只是再次抓取数据并将其转换为 csv 似乎......草率。有没有办法不将其打印到文件中,将其放入变量中,然后将其转换为 csv,这样我就不会打印文件?

我尝试使用 StringIO.new 来处理 Podio::Item.xlsx 的输出,但我得到了以下响应:

file = StringIO.new(xlsx)

`extname': no implicit conversion of StringIO into String (TypeError)

在跑道文档中没有看到任何有关此内容的内容:https://developers.podio.com/doc/items/get-items-as-xlsx-63233它只是提到了如何导出 xlsx 文件,而不是之后如何处理它。

有什么想法吗?

最佳答案

Roo::Excelx 通过 creating temporary file 伪造对流的支持。因此,避免它并向其传递 StringIO 实例不会获得任何利润。

我无法收到您收到的错误,但 Roo 中的流支持有点麻烦,我无法直接加载流,产生它:

StreamIO.new(File.read('/tmp/my_xlsx.xlsx'))

就你而言,我会选择 Tempfile例如,只是为了代码可读性。

关于ruby - 有没有一种更简洁的方法使用 podio gem 在 Ruby 中将 xlsx 对象转换为 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36758402/

相关文章:

ruby-on-rails - 在 RubyOnRails 应用程序中实现 25K 并发连接

c++ - 尝试在 C++ 中操作文件

c++ - QTableView 导出到 .csv 获取的行数仅限于 256

ruby-on-rails - rake : List/Remove custom rake task in specific environment (development/production )

ruby - 使用 Mongoid 按日期分组的最佳方式

ruby-on-rails - SQLite、Ruby on Rails。如何使用acts_as_votable gem 获得投票最高的对象?

django - Flutter 向 Django API 发送一个以文件为正文的 POST 请求

java - 无法将输出写入JAVA中的文本文件

powershell - 如何在Powershell中处理大型CSV文件

python - 如何使用 csv 模块处理字段值内的双引号?