未验证 提交 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 {
// Z.TEST
// ZTEST
func (f *File) CalcCellValue(sheet, cell string, opts ...Options) (result string, err error) {
options := f.getOptions(opts...)
var (
rawCellValue = getOptions(opts...).RawCellValue
rawCellValue = options.RawCellValue
styleIdx int
token formulaArg
)
if token, err = f.calcCellValue(&calcContext{
entry: fmt.Sprintf("%s!%s", sheet, cell),
maxCalcIterations: getOptions(opts...).MaxCalcIterations,
maxCalcIterations: options.MaxCalcIterations,
iterations: make(map[string]uint),
iterationsCache: make(map[string]formulaArg),
}, sheet, cell); err != nil {
......
......@@ -72,7 +72,7 @@ func (f *File) GetCellValue(sheet, cell string, opts ...Options) (string, error)
if err != nil {
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
})
}
......
......@@ -92,7 +92,7 @@ func (cols *Cols) Rows(opts ...Options) ([]string, error) {
if cols.stashCol >= cols.curCol {
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 {
return rowIterator.cells, rowIterator.err
}
......
......@@ -180,7 +180,7 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) {
return nil, err
}
f := newFile()
f.options = getOptions(opts...)
f.options = f.getOptions(opts...)
if err = f.checkOpenReaderOptions(); err != nil {
return nil, err
}
......@@ -219,8 +219,8 @@ func OpenReader(r io.Reader, opts ...Options) (*File, error) {
// getOptions provides a function to parse the optional settings for open
// and reading spreadsheet.
func getOptions(opts ...Options) *Options {
options := &Options{}
func (f *File) getOptions(opts ...Options) *Options {
options := f.options
for _, opt := range opts {
options = &opt
}
......
......@@ -50,7 +50,7 @@ func NewFile(opts ...Options) *File {
ws, _ := f.workSheetReader("Sheet1")
f.Sheet.Store("xl/worksheets/sheet1.xml", ws)
f.Theme, _ = f.themeReader()
f.options = getOptions(opts...)
f.options = f.getOptions(opts...)
return f
}
......
......@@ -151,7 +151,7 @@ func (rows *Rows) Columns(opts ...Options) ([]string, error) {
}
var rowIterator rowXMLIterator
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 {
return rowIterator.cells, rowIterator.err
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册