diff --git a/excelize_test.go b/excelize_test.go old mode 100755 new mode 100644 index f7a70d91..3860e175 --- a/excelize_test.go +++ b/excelize_test.go @@ -128,7 +128,7 @@ func TestOpenFile(t *testing.T) { } err = xlsx.Save() if err != nil { - t.Log(err) + t.Error(err) } // Test write file to not exist directory. err = xlsx.SaveAs("") @@ -1221,6 +1221,18 @@ func TestProtectSheet(t *testing.T) { } } +func TestUnprotectSheet(t *testing.T) { + xlsx, err := OpenFile("./test/Book1.xlsx") + if err != nil { + t.Error(err) + } + xlsx.UnprotectSheet("Sheet1") + err = xlsx.Save() + if err != nil { + t.Error(err) + } +} + func trimSliceSpace(s []string) []string { for { if len(s) > 0 && s[len(s)-1] == "" { diff --git a/sheet.go b/sheet.go index 8ddb8c9a..9861d20f 100644 --- a/sheet.go +++ b/sheet.go @@ -713,7 +713,7 @@ func (f *File) SearchSheet(sheet, value string) []string { // ProtectSheet provides a function to prevent other users from accidentally // or deliberately changing, moving, or deleting data in a worksheet. For -// example protect Sheet1 with protection settings: +// example, protect Sheet1 with protection settings: // // xlsx.ProtectSheet("Sheet1", &excelize.FormatSheetProtection{ // Password: "password", @@ -752,6 +752,12 @@ func (f *File) ProtectSheet(sheet string, settings *FormatSheetProtection) { } } +// UnprotectSheet provides a function to unprotect an Excel worksheet. +func (f *File) UnprotectSheet(sheet string) { + xlsx := f.workSheetReader(sheet) + xlsx.SheetProtection = nil +} + // trimSheetName provides a function to trim invaild characters by given worksheet // name. func trimSheetName(name string) string {