Senha criptografada do arquivo em xlsx

Oct 21 2020

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

2 3DPrintScanner Oct 23 2020 at 23:13

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

1 zhisme Oct 29 2020 at 15:30

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