首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go -可以加密excel工作簿吗?

Go -可以加密excel工作簿吗?
EN

Stack Overflow用户
提问于 2019-06-23 19:25:04
回答 1查看 378关注 0票数 0

我已经检查了excelize包,这里有ProtectSheet函数。然而,这只是保护工作表免受更改等,而不是防止未经授权的访问。

我已经寻找了几个其他的选项/包,但它们似乎没有提供这样的功能。

我知道最终我仍然可以用zip密码保护excel文件,但能够保护工作簿本身要好得多。

EN

回答 1

Stack Overflow用户

发布于 2019-07-06 22:53:19

经过一些研究,似乎没有Go包可以实现这一点。然而,我遇到了一个npm包- secure-spreadsheet,它能够对excel文件进行密码保护。

因为我需要在Go中编写密码保护操作,所以我所做的就是在Go代码中触发一个os命令来调用npm包来对文件进行密码保护。

Go程序是在一个高山容器中部署和执行的,我可以在这个容器中安装node-npm并访问npx命令。

代码示例:

代码语言:javascript
复制
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()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56723388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档