首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Axlsx保存在dropbox中

将Axlsx保存在dropbox中
EN

Stack Overflow用户
提问于 2013-02-11 05:28:12
回答 1查看 799关注 0票数 0

我想使用Rails和randym / axlsx将Excel文件保存到dropbox。

我可以创建一个Axlsx::Package对象,我甚至可以序列化它,因此将它保存到我的磁盘开发环境中。

但我想使用未来简单/ dropbox -api将其上传到dropbox。

这能有多难呢?

代码语言:javascript
复制
  def save_in_dropbox(project)
    Dropbox::API::Config.app_key    = ENV['DROPBOX_APP_KEY']
    Dropbox::API::Config.app_secret = ENV['DROPBOX_APP_SECRET']
    Dropbox::API::Config.mode = ENV['DROPBOX_ACCESS_TYPE']

    dropbox_client = Dropbox::API::Client.new(:token  => ENV['DROPBOX_CLIENT_TOKEN'], :secret => ENV['DROPBOX_CLIENT_SECRET'])
    logger.info "#{dropbox_client.account}"

    # create Excel file
    p = Axlsx::Package.new
    p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
      sheet.add_row ["First Column", "Second", "Third"]
      sheet.add_row [1, 2, 3]
    end
    p.use_shared_strings = true

    # Next line causes Error: undefined method `length' for true:TrueClass
    # because  p.serialize('file.xlsx')) is true
    # but I don't want to save to my disk, on heroku I couldn't
    # I want to save to my dropbox
    dropbox_client.upload("#{ENV['DROPBOX_ROOT_PATH']}/file.xlsx", p.serialize('file.xlsx')) 

    #p.serialize('c:\file.xlsx') # that saves it to my development env disk :-(

    #uploaded_file = dropbox_client.upload "#{ENV['DROPBOX_ROOT_PATH']}/file.txt", "#{1.second.ago.to_s}\n\r#{project.title}" # Upload to Dropbox works fine

  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-11 18:24:08

在这种情况下,我建议您使用Package#to_stream。它将为您提供IO对象,然后您可以将该对象读取到upload调用中。

另一种方法是使用Package#serialize将其写入磁盘,然后从文件系统中读取。

我不熟悉dropbox_client,但如果它不能正确处理IO流,我会感到惊讶。

最好的

-randym

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14802782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档