diff options
author | xuri <xuri.me@gmail.com> | 2020-09-06 18:06:59 +0800 |
---|---|---|
committer | xuri <xuri.me@gmail.com> | 2020-09-06 19:32:00 +0800 |
commit | 01afc6e03f1d28f1806ecd1f3c6c043f6755bd01 (patch) | |
tree | 98dc37be8ad1f615efe0389e3a66f77e21585ddb /file.go | |
parent | 1111de2fdb7da9aa9f039f5173a6dafa6d98029c (diff) |
init ECMA-376 agile encryption support
Diffstat (limited to 'file.go')
-rw-r--r-- | file.go | 18 |
1 files changed, 17 insertions, 1 deletions
@@ -64,7 +64,7 @@ func (f *File) Save() error { // SaveAs provides a function to create or update to an xlsx file at the // provided path. -func (f *File) SaveAs(name string) error { +func (f *File) SaveAs(name string, opt ...Options) error { if len(name) > FileNameLength { return errors.New("file name length exceeds maximum limit") } @@ -73,6 +73,9 @@ func (f *File) SaveAs(name string) error { return err } defer file.Close() + for _, o := range opt { + f.options = &o + } return f.Write(file) } @@ -118,5 +121,18 @@ func (f *File) WriteToBuffer() (*bytes.Buffer, error) { return buf, err } } + + if f.options != nil { + if err := zw.Close(); err != nil { + return buf, err + } + b, err := Encrypt(buf.Bytes(), f.options) + if err != nil { + return buf, err + } + buf.Reset() + buf.Write(b) + return buf, nil + } return buf, zw.Close() } |