Golang实现Excel文件密码保护的方法

Golang实现Excel文件密码保护的方法 如何在Go语言中为Excel文件设置密码保护

1 回复

更多关于Golang实现Excel文件密码保护的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go语言中,可以通过github.com/xuri/excelize/v2库为Excel文件设置密码保护。以下是一个完整的示例:

package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 创建新的Excel文件
    f := excelize.NewFile()
    
    // 在工作表中写入数据
    f.SetCellValue("Sheet1", "A1", "受保护的数据")
    f.SetCellValue("Sheet1", "B1", "敏感信息")
    
    // 设置工作表保护选项
    protectOpts := &excelize.SheetProtectionOptions{
        Password:      "yourpassword123", // 设置密码
        SelectLockedCells:   true,
        SelectUnlockedCells: true,
        FormatCells:         false, // 禁止格式化单元格
        FormatColumns:       false,
        FormatRows:          false,
        InsertColumns:       false, // 禁止插入列
        InsertRows:          false, // 禁止插入行
        InsertHyperlinks:    false,
        DeleteColumns:       false, // 禁止删除列
        DeleteRows:          false, // 禁止删除行
        Sort:                false, // 禁止排序
        AutoFilter:          false,
        PivotTables:         false,
    }
    
    // 应用工作表保护
    if err := f.ProtectSheet("Sheet1", protectOpts); err != nil {
        fmt.Println("保护工作表失败:", err)
        return
    }
    
    // 设置工作簿结构保护(防止修改工作表结构)
    workbookProtectOpts := &excelize.WorkbookProtectionOptions{
        LockStructure: true,
        Password:      "workbookpass456",
    }
    
    // 应用工作簿保护
    if err := f.ProtectWorkbook(workbookProtectOpts); err != nil {
        fmt.Println("保护工作簿失败:", err)
        return
    }
    
    // 保存文件
    if err := f.SaveAs("protected.xlsx"); err != nil {
        fmt.Println("保存文件失败:", err)
        return
    }
    
    fmt.Println("Excel文件已成功创建并设置密码保护")
}

如果需要设置打开密码(文件级加密),可以使用以下方法:

package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    f := excelize.NewFile()
    f.SetCellValue("Sheet1", "A1", "加密内容")
    
    // 设置文件加密选项
    encryptOpts := &excelize.Options{
        Password: "openpassword789", // 打开文件所需的密码
    }
    
    // 保存加密文件
    if err := f.SaveAs("encrypted.xlsx", encryptOpts); err != nil {
        fmt.Println("保存加密文件失败:", err)
        return
    }
    
    fmt.Println("加密的Excel文件已创建")
}

要读取受密码保护的Excel文件:

package main

import (
    "fmt"
    "github.com/xuri/excelize/v2"
)

func main() {
    // 打开受密码保护的文件
    f, err := excelize.OpenFile("encrypted.xlsx", excelize.Options{
        Password: "openpassword789",
    })
    
    if err != nil {
        fmt.Println("打开文件失败:", err)
        return
    }
    
    defer f.Close()
    
    // 读取数据
    value, err := f.GetCellValue("Sheet1", "A1")
    if err != nil {
        fmt.Println("读取数据失败:", err)
        return
    }
    
    fmt.Println("读取到的数据:", value)
}

安装依赖:

go get github.com/xuri/excelize/v2

这些方法提供了不同级别的Excel文件保护:工作表保护限制对特定工作表的编辑,工作簿保护防止修改工作表结构,文件加密则要求输入密码才能打开文件。

回到顶部