From 01afc6e03f1d28f1806ecd1f3c6c043f6755bd01 Mon Sep 17 00:00:00 2001 From: xuri Date: Sun, 6 Sep 2020 18:06:59 +0800 Subject: init ECMA-376 agile encryption support --- file.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'file.go') diff --git a/file.go b/file.go index 34ec359..bd05bc4 100644 --- a/file.go +++ b/file.go @@ -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() } -- cgit v1.2.1