From 2514bb16c682679485dfb5298e1a5797b97bdcd7 Mon Sep 17 00:00:00 2001 From: xuri Date: Tue, 10 Nov 2020 23:48:09 +0800 Subject: Fix #724, standardize variable naming and update unit tests --- cell.go | 112 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 56 insertions(+), 56 deletions(-) (limited to 'cell.go') diff --git a/cell.go b/cell.go index bdda48c..019f300 100644 --- a/cell.go +++ b/cell.go @@ -131,15 +131,15 @@ func (f *File) setCellIntFunc(sheet, axis string, value interface{}) error { // setCellTimeFunc provides a method to process time type of value for // SetCellValue. func (f *File) setCellTimeFunc(sheet, axis string, value time.Time) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) var isNum bool cellData.T, cellData.V, isNum, err = setCellTime(value) @@ -178,15 +178,15 @@ func setCellDuration(value time.Duration) (t string, v string) { // SetCellInt provides a function to set int type value of a cell by given // worksheet name, cell coordinates and cell value. func (f *File) SetCellInt(sheet, axis string, value int) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) cellData.T, cellData.V = setCellInt(value) return err } @@ -199,15 +199,15 @@ func setCellInt(value int) (t string, v string) { // SetCellBool provides a function to set bool type value of a cell by given // worksheet name, cell name and cell value. func (f *File) SetCellBool(sheet, axis string, value bool) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) cellData.T, cellData.V = setCellBool(value) return err } @@ -232,15 +232,15 @@ func setCellBool(value bool) (t string, v string) { // f.SetCellFloat("Sheet1", "A1", float64(x), 2, 32) // func (f *File) SetCellFloat(sheet, axis string, value float64, prec, bitSize int) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) cellData.T, cellData.V = setCellFloat(value, prec, bitSize) return err } @@ -253,15 +253,15 @@ func setCellFloat(value float64, prec, bitSize int) (t string, v string) { // SetCellStr provides a function to set string type value of a cell. Total // number of characters that a cell can contain 32767 characters. func (f *File) SetCellStr(sheet, axis, value string) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) cellData.T, cellData.V = f.setCellString(value) return err } @@ -321,15 +321,15 @@ func setCellStr(value string) (t string, v string, ns xml.Attr) { // SetCellDefault provides a function to set string type value of a cell as // default format without escaping the cell. func (f *File) SetCellDefault(sheet, axis, value string) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, col, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, col, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } - cellData.S = f.prepareCellStyle(xlsx, col, cellData.S) + cellData.S = f.prepareCellStyle(ws, col, cellData.S) cellData.T, cellData.V = setCellDefault(value) return err } @@ -362,11 +362,11 @@ type FormulaOpts struct { // SetCellFormula provides a function to set cell formula by given string and // worksheet name. func (f *File) SetCellFormula(sheet, axis, formula string, opts ...FormulaOpts) error { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - cellData, _, _, err := f.prepareCell(xlsx, sheet, axis) + cellData, _, _, err := f.prepareCell(ws, sheet, axis) if err != nil { return err } @@ -409,16 +409,16 @@ func (f *File) GetCellHyperLink(sheet, axis string) (bool, string, error) { return false, "", err } - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return false, "", err } - axis, err = f.mergeCellsParser(xlsx, axis) + axis, err = f.mergeCellsParser(ws, axis) if err != nil { return false, "", err } - if xlsx.Hyperlinks != nil { - for _, link := range xlsx.Hyperlinks.Hyperlink { + if ws.Hyperlinks != nil { + for _, link := range ws.Hyperlinks.Hyperlink { if link.Ref == axis { if link.RID != "" { return true, f.getSheetRelationshipsTargetByID(sheet, link.RID), err @@ -451,22 +451,22 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) error { return err } - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return err } - axis, err = f.mergeCellsParser(xlsx, axis) + axis, err = f.mergeCellsParser(ws, axis) if err != nil { return err } var linkData xlsxHyperlink - if xlsx.Hyperlinks == nil { - xlsx.Hyperlinks = new(xlsxHyperlinks) + if ws.Hyperlinks == nil { + ws.Hyperlinks = new(xlsxHyperlinks) } - if len(xlsx.Hyperlinks.Hyperlink) > TotalSheetHyperlinks { + if len(ws.Hyperlinks.Hyperlink) > TotalSheetHyperlinks { return errors.New("over maximum limit hyperlinks in a worksheet") } @@ -489,7 +489,7 @@ func (f *File) SetCellHyperLink(sheet, axis, link, linkType string) error { return fmt.Errorf("invalid link type %q", linkType) } - xlsx.Hyperlinks.Hyperlink = append(xlsx.Hyperlinks.Hyperlink, linkData) + ws.Hyperlinks.Hyperlink = append(ws.Hyperlinks.Hyperlink, linkData) return nil } @@ -685,11 +685,11 @@ func (f *File) SetSheetRow(sheet, axis string, slice interface{}) error { } // getCellInfo does common preparation for all SetCell* methods. -func (f *File) prepareCell(xlsx *xlsxWorksheet, sheet, cell string) (*xlsxC, int, int, error) { - xlsx.Lock() - defer xlsx.Unlock() +func (f *File) prepareCell(ws *xlsxWorksheet, sheet, cell string) (*xlsxC, int, int, error) { + ws.Lock() + defer ws.Unlock() var err error - cell, err = f.mergeCellsParser(xlsx, cell) + cell, err = f.mergeCellsParser(ws, cell) if err != nil { return nil, 0, 0, err } @@ -698,19 +698,19 @@ func (f *File) prepareCell(xlsx *xlsxWorksheet, sheet, cell string) (*xlsxC, int return nil, 0, 0, err } - prepareSheetXML(xlsx, col, row) + prepareSheetXML(ws, col, row) - return &xlsx.SheetData.Row[row-1].C[col-1], col, row, err + return &ws.SheetData.Row[row-1].C[col-1], col, row, err } // getCellStringFunc does common value extraction workflow for all GetCell* // methods. Passed function implements specific part of required logic. func (f *File) getCellStringFunc(sheet, axis string, fn func(x *xlsxWorksheet, c *xlsxC) (string, bool, error)) (string, error) { - xlsx, err := f.workSheetReader(sheet) + ws, err := f.workSheetReader(sheet) if err != nil { return "", err } - axis, err = f.mergeCellsParser(xlsx, axis) + axis, err = f.mergeCellsParser(ws, axis) if err != nil { return "", err } @@ -719,12 +719,12 @@ func (f *File) getCellStringFunc(sheet, axis string, fn func(x *xlsxWorksheet, c return "", err } - xlsx.Lock() - defer xlsx.Unlock() + ws.Lock() + defer ws.Unlock() lastRowNum := 0 - if l := len(xlsx.SheetData.Row); l > 0 { - lastRowNum = xlsx.SheetData.Row[l-1].R + if l := len(ws.SheetData.Row); l > 0 { + lastRowNum = ws.SheetData.Row[l-1].R } // keep in mind: row starts from 1 @@ -732,8 +732,8 @@ func (f *File) getCellStringFunc(sheet, axis string, fn func(x *xlsxWorksheet, c return "", nil } - for rowIdx := range xlsx.SheetData.Row { - rowData := &xlsx.SheetData.Row[rowIdx] + for rowIdx := range ws.SheetData.Row { + rowData := &ws.SheetData.Row[rowIdx] if rowData.R != row { continue } @@ -742,7 +742,7 @@ func (f *File) getCellStringFunc(sheet, axis string, fn func(x *xlsxWorksheet, c if axis != colData.R { continue } - val, ok, err := fn(xlsx, colData) + val, ok, err := fn(ws, colData) if err != nil { return "", err } @@ -776,7 +776,7 @@ func (f *File) formattedValue(s int, v string) string { for _, xlsxFmt := range styleSheet.NumFmts.NumFmt { if xlsxFmt.NumFmtID == numFmtId { format := strings.ToLower(xlsxFmt.FormatCode) - if strings.Contains(format, "y") || strings.Contains(format, "m") || strings.Contains(format, "d") || strings.Contains(format, "h") { + if strings.Contains(format, "y") || strings.Contains(format, "m") || strings.Contains(strings.Replace(format, "red", "", -1), "d") || strings.Contains(format, "h") { return parseTime(v, format) } @@ -788,9 +788,9 @@ func (f *File) formattedValue(s int, v string) string { // prepareCellStyle provides a function to prepare style index of cell in // worksheet by given column index and style index. -func (f *File) prepareCellStyle(xlsx *xlsxWorksheet, col, style int) int { - if xlsx.Cols != nil && style == 0 { - for _, c := range xlsx.Cols.Col { +func (f *File) prepareCellStyle(ws *xlsxWorksheet, col, style int) int { + if ws.Cols != nil && style == 0 { + for _, c := range ws.Cols.Col { if c.Min <= col && col <= c.Max { style = c.Style } @@ -801,16 +801,16 @@ func (f *File) prepareCellStyle(xlsx *xlsxWorksheet, col, style int) int { // mergeCellsParser provides a function to check merged cells in worksheet by // given axis. -func (f *File) mergeCellsParser(xlsx *xlsxWorksheet, axis string) (string, error) { +func (f *File) mergeCellsParser(ws *xlsxWorksheet, axis string) (string, error) { axis = strings.ToUpper(axis) - if xlsx.MergeCells != nil { - for i := 0; i < len(xlsx.MergeCells.Cells); i++ { - ok, err := f.checkCellInArea(axis, xlsx.MergeCells.Cells[i].Ref) + if ws.MergeCells != nil { + for i := 0; i < len(ws.MergeCells.Cells); i++ { + ok, err := f.checkCellInArea(axis, ws.MergeCells.Cells[i].Ref) if err != nil { return axis, err } if ok { - axis = strings.Split(xlsx.MergeCells.Cells[i].Ref, ":")[0] + axis = strings.Split(ws.MergeCells.Cells[i].Ref, ":")[0] } } } @@ -863,8 +863,8 @@ func isOverlap(rect1, rect2 []int) bool { // // Note that this function not validate ref tag to check the cell if or not in // allow area, and always return origin shared formula. -func getSharedForumula(xlsx *xlsxWorksheet, si string) string { - for _, r := range xlsx.SheetData.Row { +func getSharedForumula(ws *xlsxWorksheet, si string) string { + for _, r := range ws.SheetData.Row { for _, c := range r.C { if c.F != nil && c.F.Ref != "" && c.F.T == STCellFormulaTypeShared && c.F.Si == si { return c.F.Content -- cgit v1.2.1