Gem 上传 excel 文件,然后用 roo 读取文件内容,报 Zip::Error (Zip end of central directory signature not found):错误

stephen · 发布于 2017年07月28日 · 最后由 stephen 回复于 2017年07月28日 · 364 次阅读
445

上传excel文件,然后用roo读取文件内容, 报错代码xlsx = Roo::Spreadsheet.open(tmp_file)Zip::Error (Zip end of central directory signature not found):错误 google有类似,但是解决不了 以下是我的代码

def import
    tmp_file = "#{Rails.root}/tmp/import_xls.xlsx"
    FileUtils.mv params['import_xls'].tempfile.path, tmp_file
    require 'roo'
    xlsx = Roo::Spreadsheet.open(tmp_file)
    xlsx.each_row_streaming do |row|
      begin
        order = Order.where(trade_no: "#{row[0]}").first
        if not order.blank?
          order.update_attributes!(
            state: :sent,
            express_company: "#{row[7]}",
            express_no: "#{row[8]}"
          )
        end
      rescue => exception
        Rails.logger.info exception
      end
    end
    render json: { success: 1, msg: "导入成功." }
  end
共收到 3 条回复
602

xlsx 读取应该需要三方的插件的

445
602tassandar 回复

不需要用第三方,如果固定放在服务器上面,是没问题的,只是通过浏览器上传就出错了

445 stephen 关闭了讨论 07月28日 16:03
445 stephen 重新开启了讨论 07月28日 16:03
445

问题还没有找到解决办法,只能换成前端读取,把数据提交到后端处理

445 stephen 关闭了讨论 07月28日 16:03
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册