未验证 提交 ee2ef152 编写于 作者: V Vivek Kairi 提交者: GitHub

This closes #1815, cell value reading functions inherit the Options settings...

This closes #1815, cell value reading functions inherit the Options settings of the OpenReader (#1816)
Co-authored-by: NVivek Kairi <vivek@zerodhafundhouse.com>
上级 9cbe3b6b
...@@ -805,14 +805,15 @@ type formulaFuncs struct { ...@@ -805,14 +805,15 @@ type formulaFuncs struct {
// Z.TEST // Z.TEST
// ZTEST // ZTEST
func (f *File) CalcCellValue(sheet, cell string, opts ...Options) (result string, err error) { func (f *File) CalcCellValue(sheet, cell string, opts ...Options) (result string, err error) {
options := f.getOptions(opts...)
var ( var (
rawCellValue = getOptions(opts...).RawCellValue rawCellValue = options.RawCellValue
styleIdx int styleIdx int
token formulaArg token formulaArg
) )
if token, err = f.calcCellValue(&calcContext{ if token, err = f.calcCellValue(&calcContext{
entry: fmt.Sprintf("%s!%s", sheet, cell), entry: fmt.Sprintf("%s!%s", sheet, cell),
maxCalcIterations: getOptions(opts...).MaxCalcIterations, maxCalcIterations: options.MaxCalcIterations,
iterations: make(map[string]uint), iterations: make(map[string]uint),
iterationsCache: make(map[string]formulaArg), iterationsCache: make(map[string]formulaArg),
}, sheet, cell); err != nil { }, sheet, cell); err != nil {
......
...@@ -72,7 +72,7 @@ func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error) ...@@ -72,7 +72,7 @@ func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)
if err != nil { if err != nil {
return "", true, err return "", true, err
} }
val, err := c.getValueFrom(f, sst, getOptions(opts...).RawCellValue) val, err := c.getValueFrom(f, sst, f.getOptions(opts...).RawCellValue)
return val, true, err return val, true, err
}) })
} }
......
...@@ -92,7 +92,7 @@ func (cols *Cols) Rows(opts ...Options) ([]string, error) { ...@@ -92,7 +92,7 @@ func (cols *Cols) Rows(opts ...Options) ([]string, error) {
if cols.stashCol >= cols.curCol { if cols.stashCol >= cols.curCol {
return rowIterator.cells, rowIterator.err return rowIterator.cells, rowIterator.err
} }
cols.rawCellValue = getOptions(opts...).RawCellValue cols.rawCellValue = cols.f.getOptions(opts...).RawCellValue
if cols.sst, rowIterator.err = cols.f.sharedStringsReader(); rowIterator.err != nil { if cols.sst, rowIterator.err = cols.f.sharedStringsReader(); rowIterator.err != nil {
return rowIterator.cells, rowIterator.err return rowIterator.cells, rowIterator.err
} }
......
...@@ -180,7 +180,7 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) { ...@@ -180,7 +180,7 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) {
return nil, err return nil, err
} }
f := newFile() f := newFile()
f.options = getOptions(opts...) f.options = f.getOptions(opts...)
if err = f.checkOpenReaderOptions(); err != nil { if err = f.checkOpenReaderOptions(); err != nil {
return nil, err return nil, err
} }
...@@ -219,8 +219,8 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) { ...@@ -219,8 +219,8 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) {
// getOptions provides a function to parse the optional settings for open // getOptions provides a function to parse the optional settings for open
// and reading spreadsheet. // and reading spreadsheet.
func getOptions(opts ...Options) *Options { func (f *File) getOptions(opts ...Options) *Options {
options := &Options{} options := f.options
for _, opt := range opts { for _, opt := range opts {
options = &opt options = &opt
} }
......
...@@ -50,7 +50,7 @@ func NewFile(opts ...Options) *File { ...@@ -50,7 +50,7 @@ func NewFile(opts ...Options) *File {
ws, _ := f.workSheetReader("Sheet1") ws, _ := f.workSheetReader("Sheet1")
f.Sheet.Store("xl/worksheets/sheet1.xml", ws) f.Sheet.Store("xl/worksheets/sheet1.xml", ws)
f.Theme, _ = f.themeReader() f.Theme, _ = f.themeReader()
f.options = getOptions(opts...) f.options = f.getOptions(opts...)
return f return f
} }
......
...@@ -151,7 +151,7 @@ func (rows *Rows) Columns(opts ...Options) ([]string, error) { ...@@ -151,7 +151,7 @@ func (rows *Rows) Columns(opts ...Options) ([]string, error) {
} }
var rowIterator rowXMLIterator var rowIterator rowXMLIterator
var token xml.Token var token xml.Token
rows.rawCellValue = getOptions(opts...).RawCellValue rows.rawCellValue = rows.f.getOptions(opts...).RawCellValue
if rows.sst, rowIterator.err = rows.f.sharedStringsReader(); rowIterator.err != nil { if rows.sst, rowIterator.err = rows.f.sharedStringsReader(); rowIterator.err != nil {
return rowIterator.cells, rowIterator.err return rowIterator.cells, rowIterator.err
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册