簡體   English   中英

有沒有辦法讓Roo接受StringIO對象來代替文件?

[英]Is there any way to get Roo to accept StringIO objects in place of files?

我正在嘗試編寫一些涉及Roo閱讀Excel 2007文件的單元測試。 我將單元測試文件中的Excel文件作為十六進制字符串,然后將其輸入到StringIO實例中。 我不能簡單地將StringIO對象傳遞給Roo::Spreadsheet.open ,因為該函數實際上檢查傳遞的對象是否是File實例:

def open(file, options = {})
  file = File === file ? file.path : file

  # ...

如果不是,則繼續假設它是一個字符串。 手動指定擴展名沒有幫助:

doc = Roo::Spreadsheet.open(file, extension: :xlsx)

是否有任何聰明的方法讓Roo將StringIO實例用作文件?

看起來這個版本的roo支持這個。 它不是明確檢查它是否是一個File類,而是根據它是否響應#seek#seek它是否是一個流#seek 相關代碼在這里這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM