Skip to content

Commit bda29c9

Browse files
committed
This closes #49, introduce new GetSheetProtection function
- Add new DropLines and HighLowLines fields in ChartAxis data type - Upgrade the dependencies package version
1 parent 1b483f3 commit bda29c9

File tree

8 files changed

+227
-119
lines changed

8 files changed

+227
-119
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
BSD 3-Clause License
22

3-
Copyright (c) 2022 - 2025 The excelize-wasm Authors.
3+
Copyright (c) 2022 - 2026 The excelize-wasm Authors.
44
All rights reserved.
55

66
Redistribution and use in source and binary forms, with or without

cmd/go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@ go 1.24.0
44

55
require (
66
github.com/stretchr/testify v1.11.1
7-
github.com/xuri/excelize/v2 v2.10.1-0.20251215013350-85ebb616cfdb
8-
golang.org/x/image v0.34.0
7+
github.com/xuri/excelize/v2 v2.10.1-0.20260127013103-4917cff6d84d
8+
golang.org/x/image v0.35.0
99
)
1010

1111
require (
1212
github.com/davecgh/go-spew v1.1.1 // indirect
1313
github.com/pmezard/go-difflib v1.0.0 // indirect
14-
github.com/richardlehane/mscfb v1.0.4 // indirect
15-
github.com/richardlehane/msoleps v1.0.4 // indirect
14+
github.com/richardlehane/mscfb v1.0.6 // indirect
15+
github.com/richardlehane/msoleps v1.0.6 // indirect
1616
github.com/tiendc/go-deepcopy v1.7.2 // indirect
1717
github.com/xuri/efp v0.0.1 // indirect
1818
github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 // indirect
19-
golang.org/x/crypto v0.46.0 // indirect
20-
golang.org/x/net v0.48.0 // indirect
21-
golang.org/x/text v0.32.0 // indirect
19+
golang.org/x/crypto v0.47.0 // indirect
20+
golang.org/x/net v0.49.0 // indirect
21+
golang.org/x/text v0.33.0 // indirect
2222
gopkg.in/yaml.v3 v3.0.1 // indirect
2323
)

cmd/go.sum

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,28 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
33
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
44
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
5-
github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
6-
github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
7-
github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
8-
github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00=
9-
github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
5+
github.com/richardlehane/mscfb v1.0.6 h1:eN3bvvZCp00bs7Zf52bxNwAx5lJDBK1tCuH19qq5aC8=
6+
github.com/richardlehane/mscfb v1.0.6/go.mod h1:pe0+IUIc0AHh0+teNzBlJCtSyZdFOGgV4ZK9bsoV+Jo=
7+
github.com/richardlehane/msoleps v1.0.6 h1:9BvkpjvD+iUBalUY4esMwv6uBkfOip/Lzvd93jvR9gg=
8+
github.com/richardlehane/msoleps v1.0.6/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
109
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
1110
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
1211
github.com/tiendc/go-deepcopy v1.7.2 h1:Ut2yYR7W9tWjTQitganoIue4UGxZwCcJy3orjrrIj44=
1312
github.com/tiendc/go-deepcopy v1.7.2/go.mod h1:4bKjNC2r7boYOkD2IOuZpYjmlDdzjbpTRyCx+goBCJQ=
1413
github.com/xuri/efp v0.0.1 h1:fws5Rv3myXyYni8uwj2qKjVaRP30PdjeYe2Y6FDsCL8=
1514
github.com/xuri/efp v0.0.1/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
16-
github.com/xuri/excelize/v2 v2.10.1-0.20251215013350-85ebb616cfdb h1:/kIgu5rqQNxFHacmly0p+YlHAyRG7GocaZdqGgW0Ju4=
17-
github.com/xuri/excelize/v2 v2.10.1-0.20251215013350-85ebb616cfdb/go.mod h1:tSqpI0+eMPRFgZr8dL+zdZlT9XVDkVZLgAy7ZoR0eec=
15+
github.com/xuri/excelize/v2 v2.10.1-0.20260127013103-4917cff6d84d h1:+hP0nTSblrRkY9x2N9NqQWGsy3J/J5PErvr58I3Wcec=
16+
github.com/xuri/excelize/v2 v2.10.1-0.20260127013103-4917cff6d84d/go.mod h1:vNleVHp3A4VEl9OnVNy3obCTtjqlOq/k0r5ik1PX4h0=
1817
github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9 h1:+C0TIdyyYmzadGaL/HBLbf3WdLgC29pgyhTjAT/0nuE=
1918
github.com/xuri/nfp v0.0.2-0.20250530014748-2ddeb826f9a9/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
20-
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
21-
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
22-
golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8=
23-
golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU=
24-
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
25-
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
26-
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
27-
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
19+
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
20+
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
21+
golang.org/x/image v0.35.0 h1:LKjiHdgMtO8z7Fh18nGY6KDcoEtVfsgLDPeLyguqb7I=
22+
golang.org/x/image v0.35.0/go.mod h1:MwPLTVgvxSASsxdLzKrl8BRFuyqMyGhLwmC+TO1Sybk=
23+
golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
24+
golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
25+
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
26+
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
2827
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
2928
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3029
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

cmd/main.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2022 - 2025 The excelize-wasm Authors. All rights reserved. Use of
1+
// Copyright 2022 - 2026 The excelize-wasm Authors. All rights reserved. Use of
22
// this source code is governed by a BSD-style license that can be found in
33
// the LICENSE file.
44
//
@@ -402,6 +402,7 @@ func regInteropFunc(f *excelize.File, fn map[string]interface{}) interface{} {
402402
"GetSheetMap": GetSheetMap(f),
403403
"GetSheetName": GetSheetName(f),
404404
"GetSheetProps": GetSheetProps(f),
405+
"GetSheetProtection": GetSheetProtection(f),
405406
"GetSheetView": GetSheetView(f),
406407
"GetSheetVisible": GetSheetVisible(f),
407408
"GetSlicers": GetSlicers(f),
@@ -2722,6 +2723,31 @@ func GetSheetProps(f *excelize.File) func(this js.Value, args []js.Value) interf
27222723
}
27232724
}
27242725

2726+
// GetSheetProtection provides a function to get worksheet protection settings
2727+
// by given worksheet name. Note that the password in the returned will always
2728+
// be empty.
2729+
func GetSheetProtection(f *excelize.File) func(this js.Value, args []js.Value) interface{} {
2730+
return func(this js.Value, args []js.Value) interface{} {
2731+
ret := map[string]interface{}{"opts": map[string]interface{}{}, "error": nil}
2732+
if err := prepareArgs(args, []argsRule{
2733+
{types: []js.Type{js.TypeString}},
2734+
}); err != nil {
2735+
ret["error"] = err.Error()
2736+
return js.ValueOf(ret)
2737+
}
2738+
props, err := f.GetSheetProtection(args[0].String())
2739+
if err != nil {
2740+
ret["error"] = err.Error()
2741+
return js.ValueOf(ret)
2742+
}
2743+
if jsVal, err := goValueToJS(reflect.ValueOf(props),
2744+
reflect.TypeOf(excelize.SheetProtectionOptions{})); err == nil {
2745+
ret["opts"] = jsVal
2746+
}
2747+
return js.ValueOf(ret)
2748+
}
2749+
}
2750+
27252751
// GetSheetView gets the value of sheet view options. The viewIndex may be
27262752
// negative and if so is counted backward (-1 is the last view).
27272753
func GetSheetView(f *excelize.File) func(this js.Value, args []js.Value) interface{} {

cmd/main_test.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1887,11 +1887,16 @@ func TestProtectSheet(t *testing.T) {
18871887

18881888
ret := f.(js.Value).Call("ProtectSheet", js.ValueOf("Sheet1"),
18891889
js.ValueOf(map[string]interface{}{
1890-
"Password": "password",
1890+
"Password": "password",
1891+
"EditScenarios": false,
18911892
}),
18921893
)
18931894
assert.True(t, ret.Get("error").IsNull())
18941895

1896+
ret = f.(js.Value).Call("GetSheetProtection", js.ValueOf("Sheet1"))
1897+
assert.True(t, ret.Get("error").IsNull())
1898+
assert.False(t, ret.Get("opts").Get("EditScenarios").Bool())
1899+
18951900
ret = f.(js.Value).Call("ProtectSheet")
18961901
assert.EqualError(t, errArgNum, ret.Get("error").String())
18971902

@@ -1908,6 +1913,15 @@ func TestProtectSheet(t *testing.T) {
19081913
}),
19091914
)
19101915
assert.EqualError(t, errArgType, ret.Get("error").String())
1916+
1917+
ret = f.(js.Value).Call("GetSheetProtection")
1918+
assert.EqualError(t, errArgNum, ret.Get("error").String())
1919+
1920+
ret = f.(js.Value).Call("GetSheetProtection", js.ValueOf("SheetN"))
1921+
assert.Equal(t, "sheet SheetN does not exist", ret.Get("error").String())
1922+
1923+
ret = f.(js.Value).Call("GetSheetProtection", js.ValueOf(nil))
1924+
assert.EqualError(t, errArgType, ret.Get("error").String())
19111925
}
19121926

19131927
func TestProtectWorkbook(t *testing.T) {

0 commit comments

Comments
 (0)