如何在Rails中加密csv / xlsx文件

问题描述

我想对我的csv / xlsx文件实施密码保护,但是以某种方式无法实现。我无法在互联网上找到写得很好的东西。我用xlsx尝试过。

render formats: :xlsx if current_user.save(validate: false)

在我的app/views/tools/export_database.xlsx.axlsx

wb = xlsx_package.workbook

wb.add_worksheet(name: "Users") do |sheet|
    sheet.sheet_protection.password = ENV['sheet_password']
    sheet.add_row %w(Id Email Role Verification First\ Name Last\ Name Title Birthday Postcode Telephone Payment Company\ Name Office\ Number Address Email\ Confirmed Agent\ Name Agent\ Position Agent\ Number Agent\ Email Company\ logo Address\ Line\ 2 Town County Created\ At Updated\ At),:types => [:string,:string,:string]
    User.all.each do |user|
        sheet.add_row [user.id,user.email,user.role,user.verification,user.first_name,user.last_name,user.title,user.dob,user.postcode,user.telephone,user.payment,user.company_name,user.office_number,user.address,user.email_confirmed,user.agent_name,user.agent_position,user.agent_number,user.agent_email,user.company_logo,user.address_line_two,user.town,user.county,user.created_at,user.updated_at],:string]
    end
end

但这不起作用。

另一种实现是使用CSV。

format.csv { send_data @users.to_csv,filename: "users-#{Date.today}.csv" }

用户模型中。

CSV.generate(headers: true) do |csv|
      csv << attributes

      all.find_each do |user|
        csv << attributes.map{ |attr| user.send(attr) }
      end
    end

在这种情况下,我找不到如何添加密码

还有另一种尝试使用prawnprawn-table方法,但是问题是,当列数增加时,表看起来不好。请通过以上任何一种方法帮助我。谢谢。

解决方法

尽管Excel文件支持密码保护,但CSV没有。因此,请放弃CSV方法。

您用于生成xlsx的gem支持密码加密,并在https://github.com/caxlsx/caxlsx/blob/282eec44ef01746ee25931fa6cd287ad083fd40b/examples/sheet_protection_example.md

中提供了示例

当您说它不起作用时;它以什么方式不起作用?无法生成文件或文件生成了文件,但是没有受到保护?