summaryrefslogtreecommitdiff
path: root/calcchain.go
diff options
context:
space:
mode:
authorxuri <xuri.me@gmail.com>2020-05-22 16:53:46 +0800
committerGitHub <noreply@github.com>2020-05-22 16:53:46 +0800
commitec14de32f0c06f7a26b6b79578f666c0cc50b72c (patch)
treec6ebd61a7d9a7da5b993ffb82e4fb6c036e75d6a /calcchain.go
parentaa7eadbffe6ae2f9f86201bbaaa4c1d1e8829cae (diff)
parent2efc7107ff30dc7f1e1a798082616ee488f99489 (diff)
Merge branch 'master' into fix/cell_lock
Diffstat (limited to 'calcchain.go')
-rw-r--r--calcchain.go24
1 files changed, 17 insertions, 7 deletions
diff --git a/calcchain.go b/calcchain.go
index ce679e5..f50fb1d 100644
--- a/calcchain.go
+++ b/calcchain.go
@@ -1,24 +1,34 @@
-// Copyright 2016 - 2019 The excelize Authors. All rights reserved. Use of
+// Copyright 2016 - 2020 The excelize Authors. All rights reserved. Use of
// this source code is governed by a BSD-style license that can be found in
// the LICENSE file.
//
// Package excelize providing a set of functions that allow you to write to
// and read from XLSX files. Support reads and writes XLSX file generated by
// Microsoft Excelâ„¢ 2007 and later. Support save file without losing original
-// charts of XLSX. This library needs Go version 1.8 or later.
+// charts of XLSX. This library needs Go version 1.10 or later.
package excelize
-import "encoding/xml"
+import (
+ "bytes"
+ "encoding/xml"
+ "io"
+ "log"
+)
// calcChainReader provides a function to get the pointer to the structure
// after deserialization of xl/calcChain.xml.
func (f *File) calcChainReader() *xlsxCalcChain {
+ var err error
+
if f.CalcChain == nil {
- var c xlsxCalcChain
- _ = xml.Unmarshal(namespaceStrictToTransitional(f.readXML("xl/calcChain.xml")), &c)
- f.CalcChain = &c
+ f.CalcChain = new(xlsxCalcChain)
+ if err = f.xmlNewDecoder(bytes.NewReader(namespaceStrictToTransitional(f.readXML("xl/calcChain.xml")))).
+ Decode(f.CalcChain); err != nil && err != io.EOF {
+ log.Printf("xml decode error: %s", err)
+ }
}
+
return f.CalcChain
}
@@ -56,7 +66,7 @@ type xlsxCalcChainCollection []xlsxCalcChainC
// Filter provides a function to filter calculation chain.
func (c xlsxCalcChainCollection) Filter(fn func(v xlsxCalcChainC) bool) []xlsxCalcChainC {
- results := make([]xlsxCalcChainC, 0)
+ var results []xlsxCalcChainC
for _, v := range c {
if fn(v) {
results = append(results, v)