После некоторых исследований кажется, что нет пакетов Go, которые могли бы достичь этого. Однако я наткнулся на пакет npm - secure-могущество , способный защитить паролем файл Excel.
Поскольку мне нужно было запрограммировать операцию защиты паролем в Go, я запустил команду os в коде Go, чтобы вызвать пакет npm для защиты файла паролем.
Программа Go развернута и выполняется в альпийском контейнере, в который я могу установить node-npm
и получить доступ к команде npx
.
пример кода:
func passProtectExcelWorkbook(filename, outFilename string) error {
passwd := "password"
cat := exec.Command("cat", filename)
excel := exec.Command("npx", "secure-spreadsheet", "--password", passwd, "--input-format", excelExt)
file, err := os.Create(outFilename)
if err != nil {
return fmt.Errorf("error when creating excel file: %v err: %v", outFilename, err)
}
defer file.Close()
excel.Stdin, err = cat.StdoutPipe()
if err != nil {
return fmt.Errorf("error when reading from cat command output: %v", err)
}
excel.Stdout = file
if err := excel.Start(); err != nil {
return fmt.Errorf("error when starting npx command: %v", err)
}
if err := cat.Run(); err != nil {
return fmt.Errorf("error when running cat command: %v", err)
}
return excel.Wait()
}