From 2e8fa2d39c8771c6f79c59e708f2b443302ade7f Mon Sep 17 00:00:00 2001 From: Ri Xu Date: Mon, 12 Sep 2016 17:37:06 +0800 Subject: [PATCH] Use conjunction with strings.Map to split Axis and update godoc. --- cell.go | 2 +- excelize.go | 16 ++++++++-------- lib.go | 39 ++++++++++++++++++--------------------- sheet.go | 8 ++++---- xmlWorkbook.go | 6 +++--- 5 files changed, 34 insertions(+), 37 deletions(-) diff --git a/cell.go b/cell.go index 4e84260..df2d13b 100644 --- a/cell.go +++ b/cell.go @@ -10,7 +10,7 @@ import ( func (f *File) GetCellValue(sheet string, axis string) string { axis = strings.ToUpper(axis) var xlsx xlsxWorksheet - row := getRowIndex(axis) + row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) xAxis := row - 1 name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml` xml.Unmarshal([]byte(f.readXML(name)), &xlsx) diff --git a/excelize.go b/excelize.go index 12eac1c..71df327 100644 --- a/excelize.go +++ b/excelize.go @@ -52,8 +52,8 @@ func (f *File) SetCellValue(sheet string, axis string, value interface{}) { func (f *File) SetCellInt(sheet string, axis string, value int) { axis = strings.ToUpper(axis) var xlsx xlsxWorksheet - col := getColIndex(axis) - row := getRowIndex(axis) + col := string(strings.Map(letterOnlyMapF, axis)) + row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) xAxis := row - 1 yAxis := titleToNumber(col) @@ -77,8 +77,8 @@ func (f *File) SetCellInt(sheet string, axis string, value int) { func (f *File) SetCellStr(sheet string, axis string, value string) { axis = strings.ToUpper(axis) var xlsx xlsxWorksheet - col := getColIndex(axis) - row := getRowIndex(axis) + col := string(strings.Map(letterOnlyMapF, axis)) + row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis)) xAxis := row - 1 yAxis := titleToNumber(col) @@ -196,8 +196,8 @@ func checkRow(xlsx xlsxWorksheet) xlsxWorksheet { if lenCol < 1 { continue } - endR := getColIndex(v.C[lenCol-1].R) - endRow := getRowIndex(v.C[lenCol-1].R) + endR := string(strings.Map(letterOnlyMapF, v.C[lenCol-1].R)) + endRow, _ := strconv.Atoi(strings.Map(intOnlyMapF, v.C[lenCol-1].R)) endCol := titleToNumber(endR) + 1 if lenCol < endCol { oldRow := xlsx.SheetData.Row[k].C @@ -213,7 +213,7 @@ func checkRow(xlsx xlsxWorksheet) xlsxWorksheet { } xlsx.SheetData.Row[k].C = tmp for _, y := range oldRow { - colAxis := titleToNumber(getColIndex(y.R)) + colAxis := titleToNumber(string(strings.Map(letterOnlyMapF, y.R))) xlsx.SheetData.Row[k].C[colAxis] = y } } @@ -223,7 +223,7 @@ func checkRow(xlsx xlsxWorksheet) xlsxWorksheet { // UpdateLinkedValue fix linked values within a spreadsheet are not updating in // Office Excel 2007 and 2010. This function will be remove value tag when met a -// cell have a linked value. Reference https://social.technet.microsoft.com/Forums/office/en-US/e16bae1f-6a2c-4325-8013-e989a3479066/excel-2010-linked-cells-not-updating?forum=excel +// cell have a linked value. Reference https://social.technet.microsoft.com/Forums/office/en-US/e16bae1f-6a2c-4325-8013-e989a3479066/excel-2010-linked-cells-not-updating?forum=excel // // Notice: after open XLSX file Excel will be update linked value and generate // new value and will prompt save file or not. diff --git a/lib.go b/lib.go index 1274b0f..8030601 100644 --- a/lib.go +++ b/lib.go @@ -7,8 +7,6 @@ import ( "io" "log" "math" - "regexp" - "strconv" "strings" ) @@ -28,9 +26,9 @@ func ReadZipReader(r *zip.Reader) (map[string]string, int, error) { for _, v := range r.File { fileList[v.Name] = readFile(v) if len(v.Name) > 18 { - if v.Name[0:19] == "xl/worksheets/sheet" { + if v.Name[0:19] == `xl/worksheets/sheet` { var xlsx xlsxWorksheet - xml.Unmarshal([]byte(strings.Replace(fileList[v.Name], "= 48 && rune < 58 { + return rune } - return row + return -1 } diff --git a/sheet.go b/sheet.go index 0728567..011466d 100644 --- a/sheet.go +++ b/sheet.go @@ -9,8 +9,8 @@ import ( ) // NewSheet provice function to greate a new sheet by given index, when -// creating a new XLSX file, the default sheet will be create, when you -// create a new file, you need to ensure that the index is continuous. +// creating a new XLSX file, the default sheet will be create, when you +// create a new file, you need to ensure that the index is continuous. func (f *File) NewSheet(index int, name string) { // Update docProps/app.xml f.setAppXML() @@ -30,7 +30,7 @@ func (f *File) setContentTypes(index int) { xml.Unmarshal([]byte(f.readXML(`[Content_Types].xml`)), &content) content.Overrides = append(content.Overrides, xlsxOverride{ PartName: `/xl/worksheets/sheet` + strconv.Itoa(index) + `.xml`, - ContentType: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", + ContentType: `application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`, }) output, err := xml.Marshal(content) if err != nil { @@ -94,7 +94,7 @@ func (f *File) addXlsxWorkbookRels(sheet int) { content.Relationships = append(content.Relationships, xlsxWorkbookRelation{ ID: ID.String(), Target: target.String(), - Type: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", + Type: `http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet`, }) output, err := xml.Marshal(content) if err != nil { diff --git a/xmlWorkbook.go b/xmlWorkbook.go index c9a0434..6fe8f37 100644 --- a/xmlWorkbook.go +++ b/xmlWorkbook.go @@ -9,9 +9,9 @@ import ( const ( // sheet state values as defined by // http://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.sheetstatevalues.aspx - sheetStateVisible = "visible" - sheetStateHidden = "hidden" - sheetStateVeryHidden = "veryHidden" + sheetStateVisible = `visible` + sheetStateHidden = `hidden` + sheetStateVeryHidden = `veryHidden` ) // xmlxWorkbookRels contains xmlxWorkbookRelations -- GitLab