Tag: ruby

如何从Rails 4引用和更新S3上的文件

我有一个Rails 4应用程序需要使用许多excel文件,代表花名册(20个左右,由他们自己的委员会分组),必须阅读和编辑的用户。 预部署我的系统工作完美,这些文件将居住在public/rosters并可以由任何经过身份validation的用户引用和编辑,不幸的是,当我部署到Heroku我不能再这样做。 我一直在使用一个S3存储桶来托pipe这个和其他相关应用程序所需的其他文件,它一直在奇妙的工作,我一直在使用它; 所以我决定尝试解决这个问题。 不幸的是,看起来好像我只能通过公开的方式访问这些文件,这并不是我想要做的。 所以我的问题是:什么是最好的方式来引用这些文件(使用我的access_key_id和secret_access_key进行理想的身份validation),并允许用户推送更改将覆盖S3存储桶上的文件。

如何使用axlsx gem将列添加到现有行?

我正在尝试格式化我的xlsx文件,但是我遇到了一些问题。 例如,我需要添加列到现有的行。 例如这里是我的代码: wb.add_worksheet(name: "Sums") do |sheet| sheet.add_row ["1.", "Rodiklis"], :style=>[title] sheet.add_row ["1.1", "Rekomendacijų vertė"] @departaments.each do |departament| sheet.add_row ["", departament.name] end @all_items.each do |summary| tyfcb = 0 rgi = 0 rgo = 0 rgirgo = 0 total = 0 rgirgo_per_user = 0 meeting_1_2_1 = 0 meeting_1_2_1_per_user = 0 ceu = 0 ceu_per_user = 0 […]

获取对已经存在的操作手册的引用

在运行我的脚本时,如何获得对已经存在的.xlsx工作簿的引用? 我使用Ruby gem Axlsx,这是我的代码: require 'axlsx' p = Axlsx::Package.new wb_file = File.open("simple.xlsx", "a+") wb = p.workbook(wb_file) # STICKING POINT: can't get a handle on an already existing workbook # wb = p.workbook("simple.xls") # worksheet = Worksheet.new(self, options) sheet = p.workbook.sheet_by_name("Basic Worksheet") sheet.add_row ["11", "22", "33"] p.serialize('simple2.xlsx') 我得到这个例外: ArgumentError: wrong number of arguments (1 for 0) […]

将查询写入工作表时,以文本forms存储的编号

我正在使用以下gem创build一个报告: require "mysql2" require "watir" require "io/console" require "writeexcel" 在用mysql2查询数据库之后,将查询转换为multidimensional array,如下所示: Mysql2::Client.default_query_options.merge!(:as => :array) mysql = Mysql2::Client.new(:host => "01.02.03.405", :username => "user", :password => "pass123", :database => "db") report = mysql.query("SELECT … ASC;") arr = [] report.each {|row| arr << row} 然后最终将数据写入Excel电子表格中,如下所示: workbook = WriteExcel.new("File.xls") worksheet = workbook.add_worksheet(sheetname = "Report") header = ["Column A Title", […]

使用Axlsx-Rails Gem导出极其简单的Excel时出错

我想用一个客户列表使用Axlsx-Rails gem导出一个简单的Excel: # Customers Controller def download @customers = Customer.all respond_to do |format| render xlsx: 'customers.xlsx.axlsx' # render xlsx: 'customers' TRYED BOTH end end # Template wb = xlsx_package.workbook wb.add_worksheet(name: "Download") do |sheet| @customers.each do |customer| sheet.add_row [customer.name, customer.email, customer.phone] end end 模板path是views/customers/customers.xlsx.axlsx ,错误是Missing template customers/customers 错误在哪里?

Ruby CSV不正确的第一个字符

我有一个xlsx文件,我做以下将其导出为.csv: 使用excel导出xlsx文件为csv,默认编码 用记事本打开.csv文件,通过指定编码再次保存utf8(记事本保存BOM) 用CSV.read(path_to_file)打开文件 它似乎运作良好,但由于某种原因,第一个头被一些未知的字符损坏(我不知道它是什么,当我尝试复制粘贴它消失,它在Windows中被表示为一个巨大的白色矩形) 当我用任何文本编辑器打开我的文件时,似乎没有问题 第一行看起来像: Id;Type…. 如果这有帮助 csv.headers.first # => ".Id" where . is that character csv.headers.first.first.bytes # => [239, 187, 191] csv.headers.first.first.b # => "\xEF\xBB\xBF" 我如何解决这个问题? Windows 10,Ruby 2.2

在rails应用程序中导入excel文件

我跟随瑞安·贝茨railcast教程通过导轨应用程序导入excel文件。 我的Ruby版本是2.2.4和rails版本是4.2.6我已经安装了“roo”gem。 我的app \ models \ user.rb文件是: class User < ActiveRecord::Base require 'csv' def self.import(file) spreadsheet= open_spreadsheet(file) header=spreadsheet.row(1) (2..spreadsheet.last_row).each do |i| row=Hash[[header,spreadsheet.row(i)].transpose] user=find_by_id(row["id"])||new user.attributes=row.to_hash.slice(*accessible_attributes) user.save end end def self.open_spreadsheet(file) case File.extname(file.original_filename) #when ".csv" then Roo::Csv.new (file.path nil, :ignore) when ".xls" then Roo::Excel.new (file.path) #when ".xlsx" then Excelx.new (file.path, nil, :ignore) else raise "Unknown file type: […]

如何在rails中parsing一个excel行数据

我正在Rails应用程序开发一个ruby,我需要导入一个Excel文件。 我正在使用电子表格gem。 现在我的问题是,我不能从Excel文件中获取单行数据。 我的代码在这里: def actual_import(file) puts "In the actual_import method" spreadsheet= Employee.open_spreadsheet(file) header=spreadsheet.row(1) (2..spreadsheet.last_row).each do |i| row=Hash[[header,spreadsheet.row(i)].transpose] $send_name=row.to_hash.slice('firstname') puts $send_name.to_s #this prints a weird result,,described below puts $send_name.length create end end 而我在Employee模型中的open_spreadsheet方法是: def self.open_spreadsheet(file) case File.extname(file.original_filename) #when ".csv" then Roo::Csv.new (file.path nil, :ignore) when ".xlsx" then Roo::Excelx.new (file.path) #when ".xlsx" then Excelx.new (file.path, nil, […]

TypeError没有将PicUploader隐式转换为String

我正在使用axlsx-rails来生成包含我的用户实体中的信息的Excel工作表。 当我尝试在Excel表格中放置图像时出现问题。 我正在使用carrierwave 0.11.2 ,我已经确定我已经正确设置它,我有string列profile_pic保存图像,我有上传PicUploader ,它已经挂载到用户。 载波实现工作正常,图片显示在用户的“显示”页面,但是当我尝试按照axlsx示例将图像放在表单中 img = File.expand_path(@user.profile_pic, __FILE__) sheet.add_image(:image_src => img, :noSelect => true, :noMove => true) do |image| image.width=420 image.height=669 end 我得到的TypeError no implicit conversion of PicUploader into String 任何想法可能导致这个?

显示启用了Rails引擎模型的模型

所以我正在一个rails引擎,它有upload和validatefunction。 一旦file upload,用户将点击validation,并将数据从excel文件保存到应用程序的表。 我的引擎不会提供任何迁移,所有的迁移将由应用程序提供。 现在,当我安装我的引擎时,我的引擎模型需要在某些应用程序的模型中注册。 例如,如果总共有10个模型,并且我的引擎模型仅在3个模型的应用程序中注册,则应该显示我的引擎模型启用的应用程序模型。 比我也应该能够访问我的引擎中的这些模型的表,以保存Excel文件中的数据。 代码为引擎的模型是 require "roo" module MyEngine class Upload < ActiveRecord::Base self.table_name = "admins" def self.validate(file) spreadsheet = open_excel(file) header = spreadsheet.row(1) for i in 2..spreadsheet.last_row do row = Hash[[header, spreadsheet.row(i)].transpose] upload = Upload.new(row) upload.save! end end private def self.open_excel(file) case File.extname(file) when ".xls", ".xlsx" then Roo::Spreadsheet.open file else raise […]