我已经检查了excelize包,这里有ProtectSheet函数。然而,这只是保护工作表免受更改等,而不是防止未经授权的访问。
我已经寻找了几个其他的选项/包,但它们似乎没有提供这样的功能。
我知道最终我仍然可以用zip密码保护excel文件,但能够保护工作簿本身要好得多。
发布于 2019-07-06 22:53:19
经过一些研究,似乎没有Go包可以实现这一点。然而,我遇到了一个npm包- secure-spreadsheet,它能够对excel文件进行密码保护。
因为我需要在Go中编写密码保护操作,所以我所做的就是在Go代码中触发一个os命令来调用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()
}https://stackoverflow.com/questions/56723388
复制相似问题