问题标签 [roo-gem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
253 浏览

ruby-on-rails - 在 Rails 测试环境中加载 .xlsx 文件时临时文件损坏

我正在创建功能测试(使用 Rspec/Capybara),并在打开和读取 .xlsx 文件的功能上遇到此问题。

失败/错误:

当 ".xlsx" 然后 Roo::Excelx.new(file.path, nil, :ignore)

否则提出“Tipo de arquivo desconhecido:#{file.original_filename}”

Zip::ZipError:未找到中央目录签名的 Zip 结尾

此错误仅在运行测试时发生。它在本地和生产中完美运行。

我发现此错误的一些可能原因是文件损坏和错误的文件扩展名。

发生错误的方法:

考试:

加载文件时,它应该将我重定向到加载数据的不同页面。

我在这里缺少任何配置吗?


当我测试这种行为(比较测试和开发环境)时,我发现了这一点:

该文件已正确附加到表单。然后,上传时保存为临时文件,但测试过程创建的临时文件已损坏(我无法手动打开它)。

0 投票
2 回答
635 浏览

heroku - 使用 Heroku 和 Amazon S3 上的 Active Storage 使用上传的 Roo gem 打开远程文件

我正在使用ROO gem 来解析用户在 Heroku 上上传的 Excel 文件(使用 AWS S3 的 Active Storage)。

由于我在 Heroku 上,我无法在文件系统上下载它然后解析它。如何从 HTTP 打开它?

模型

0 投票
0 回答
35 浏览

ruby-on-rails - 如何在导入期间向 Ruby on Rails 模型添加临时属性

我使用 roo gem 从 xlsx 文件中导入数据。但在某些情况下,xlsx 文件中可用的列与目标模型不匹配。有些列需要连接或查找......文件中的列比目标模型中的多。这是我的代码:

如何临时添加虚拟属性以支持实际输入文件结构并在保存处理记录之前进行一些计算?

感谢帮助!

0 投票
1 回答
37 浏览

ruby-on-rails - 使用两列的组合上传excel数据?

我有一个excel表,格式如下: 在此处输入图像描述

成员在相应的members表中可以有多个条目。从 excel 模板上传数据时,我想find_by pin以及end_date在上传期间更新特定记录。

我正在使用gem roo导入excel数据,这是我的load_imported_members方法:

我认为如果我在方法中同时使用pin和,我将更新特定记录,因为表中可能有两个条目,但一个必须有. 我怎样才能做到这一点?谢谢end_datefind_byend_date

0 投票
0 回答
65 浏览

ruby-on-rails - 使用 Roo gem 导入 CSV 时拒绝不在关联表中的项目而不是创建新记录

我正在使用roo-gem导入以下设计的作者电子表格:

在此处输入图像描述 我在数据库中有名为 authors,的表statespublishers并且genres各个 excel 列中的数据映射到这些表。如您所见,第一行表头非常详细,因为上传数据到authors表中的用户不是很精通。因为这么长的表头名称无法映射到表中的关联列中,所以我在 excel 模板中包含了第二行,然后在Author模型中添加了方法,如下所示:

这里是authors_import.rb

这是我的问题:当用户在相应的or表中找不到的 excel 模板中添加任何publisheror时,该条目将被添加到表中,这是我不想要的。如果列出所有或来自应用程序,我会发现几个在导入期间创建的不应该存在的条目。excel 模板具有出版商和流派的下拉列表,就像它们出现在数据库中的相应表中一样。一种解决方案是锁定模板,但在目前的情况下这是不可能的。genrepublishersgenrespublishersgenres

我认为first_or_create这是唯一会在找不到新记录的情况下添加新记录的方法,但似乎即使该first方法在这里的行为也相同。

方法中是否有一些模型验证或调整可以防止未经授权publishersgenres被创建?

谢谢

0 投票
1 回答
34 浏览

ruby-on-rails - 在 Rails 5.2 上使用 roo 读取电子表格时如何避免导入 nil 对象?

我的应用程序根据值列表(字典)管理分层分类。在某些时候,我需要从 Excel 工作表中导入父子关系,并创建持久的 ValuesToValues 对象。

基于 Ryan Bates 的RailsCast 396,我创建了主循环为的导入模型:

问题是,当遇到没有父值的根值时,循环会创建一个 nil 对象,该对象不会通过后面的验证。

如何构建循环以仅考虑单元格不为空的行?

0 投票
2 回答
125 浏览

ruby-on-rails - Ruby on Rails - Roo gem | 问题打开活动记录附件

地位:

  • 我有一个简单的新 Ruby On Rails 应用程序
  • 我需要从 MS Excel 以 .xlsx 格式导入一些数据
  • 我通过一个名为“excel”的属性将上传到 ActiveRecord 作为附件编程
  • 我找到了一个应该打开附件的gem调用Roo
  • ...通过:Roo::Excelx.open()命令
  • 然后执行文件的访问部分

问题: Roo::Excel.open()不适用于:

  1. Roo::Excel.open(excel)
  2. Roo::Excel.open(excel.attachment)

执行打开的正确命令是ActiveRecord::Attachment什么?

0 投票
2 回答
86 浏览

ruby-on-rails - 在 Ruby 中读取大 XLSX 文件第一行的最快方法

我需要能够在 Ruby on Rails 应用程序中非常快速地读取大 xlsx 文件(350k x 12 单元格,~30MB)中的第一行(标题)。我目前正在使用 Roo gem,这对于较小的文件来说很好。但是对于这么大的文件,它需要 3-4 分钟。有没有办法在几秒钟内做到这一点?

编辑:

  • 我尝试了其他宝石:
    • rubyXL 花了几分钟
    • 小溪是最快的,有 30 多岁。但在控制器中仍然无法使用

编辑2:

  • 我最终在工作中使用小溪并在控制器中轮询结果。感谢Tom Lord建议小溪