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 --- excelize.go | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'excelize.go') 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() -- cgit v1.2.1