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 /excelize.go | |
parent | 1111de2fdb7da9aa9f039f5173a6dafa6d98029c (diff) |
init ECMA-376 agile encryption support
Diffstat (limited to 'excelize.go')
-rw-r--r-- | excelize.go | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/excelize.go b/excelize.go index 2fc48e5..315f41b 100644 --- a/excelize.go +++ b/excelize.go @@ -32,6 +32,7 @@ import ( // File define a populated spreadsheet file struct. type File struct { sync.Mutex + options *Options xmlAttr map[string][]xml.Attr checked map[string]bool sheetMap map[string]string @@ -75,11 +76,7 @@ func OpenFile(filename string, opt ...Options) (*File, error) { return nil, err } defer file.Close() - var option Options - for _, o := range opt { - option = o - } - f, err := OpenReader(file, option) + f, err := OpenReader(file, opt...) if err != nil { return nil, err } @@ -111,12 +108,12 @@ func OpenReader(r io.Reader, opt ...Options) (*File, error) { if err != nil { return nil, err } + f := newFile() if bytes.Contains(b, oleIdentifier) { - var option Options for _, o := range opt { - option = o + f.options = &o } - b, err = Decrypt(b, &option) + b, err = Decrypt(b, f.options) if err != nil { return nil, fmt.Errorf("decrypted file failed") } @@ -130,7 +127,6 @@ func OpenReader(r io.Reader, opt ...Options) (*File, error) { if err != nil { return nil, err } - f := newFile() f.SheetCount, f.XLSX = sheetCount, file f.CalcChain = f.calcChainReader() f.sheetMap = f.getSheetMap() |