开始-是否可以加密Excel工作簿

时间:2019-06-23 11:25:04

标签: excel go encryption

我已经检查了excelize软件包,其中有ProtectSheet函数。但是,这只能保护工作表不受更改等影响,而不能防止未经授权的访问。

我正在寻找其他几个选项/软件包,但它们似乎没有提供这种功能。

我知道最终我仍然可以通过zip-password保护excel文件,但是能够保护工作簿本身是更可取的。

1 个答案:

答案 0 :(得分:0)

经过一些研究,似乎没有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()
}