Senha criptografada do arquivo em xlsx
Atualmente, estou usando gem caxlsx para gerar meu excel '
há alguém que tente arquivar uma senha antes de gerar o arquivo excel?
o objetivo aqui. se o usuário clicar no botão, algum texto aparecerá para digitar a senha do excel. então o sistema irá gerar o download do excel automaticamente no navegador.
Respostas
Olhando através dos documentos, o gem suporta planilhas de proteção de senha.
require 'axlsx'
p = Axlsx::Package.new
wb = p.workbook
s = wb.styles
unlocked = s.add_style locked: false
wb.add_worksheet(name: 'Sheet Protection') do |sheet|
sheet.sheet_protection do |protection|
protection.password = 'fish'
protection.auto_filter = false
end
sheet.add_row [1, 2, 3], style: unlocked # These cells won't be locked
sheet.add_row [4, 5, 6]
sheet.add_row [7, 8, 9]
# Set up auto filters
sheet.auto_filter = 'A1:C3'
end
p.serialize 'sheet_protection_example.xlsx'
Vejo https://github.com/caxlsx/caxlsx/blob/master/examples/sheet_protection_example.md
Olhando para o código- fonte do projeto , isso definitivamente não foi implementado. Portanto, a melhor opção é criptografar o arquivo zip conforme sugerido acima.
# Encrypt the package into a CFB using the password provided
# This is not ready yet
def encrypt(file_name, password)
return false
# moc = MsOffCrypto.new(file_name, password)
# moc.save
end
Também fiz uma investigação sobre scripts vba, e isso está disponível em sua macro
Dim password As Variant
password = Application.InputBox("Enter Password", "Password Protected")
Select Case password
Case Is = False
'do nothing
Case Is = "easy"
Range("A1").Value = "This is secret code"
Case Else
MsgBox "Incorrect Password"
End Select
Mas, infelizmente, não vejo que seja possível executar scripts vba passando para ele alguma função de caxlsx gem