在 Ruby 中是否有使用跑台 gem 将 xlsx 对象转换为 csv 的更简洁的方法
Is there a neater way to convert a xlsx object to csv in Ruby using the podio gem
我正在使用 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
实例,只是为了代码的可读性。
我正在使用 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
实例,只是为了代码的可读性。