| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package excelize
- import (
- "encoding/xml"
- "strconv"
- "strings"
- )
- // GetCellValue provide function get value from cell by given sheet index and axis in XLSX file.
- // The value of the merged cell is not available currently.
- func (f *File) GetCellValue(sheet string, axis string) string {
- axis = strings.ToUpper(axis)
- var xlsx xlsxWorksheet
- row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis))
- xAxis := row - 1
- name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
- xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
- rows := len(xlsx.SheetData.Row)
- if rows > 1 {
- lastRow := xlsx.SheetData.Row[rows-1].R
- if lastRow >= rows {
- rows = lastRow
- }
- }
- if rows <= xAxis {
- return ``
- }
- for _, v := range xlsx.SheetData.Row {
- if v.R != row {
- continue
- }
- for _, r := range v.C {
- if axis != r.R {
- continue
- }
- switch r.T {
- case "s":
- shardStrings := xlsxSST{}
- xlsxSI := 0
- xlsxSI, _ = strconv.Atoi(r.V)
- xml.Unmarshal([]byte(f.readXML(`xl/sharedStrings.xml`)), &shardStrings)
- return shardStrings.SI[xlsxSI].T
- case "str":
- return r.V
- default:
- return r.V
- }
- }
- }
- return ``
- }
- // GetCellFormula provide function get formula from cell by given sheet index and axis in XLSX file.
- func (f *File) GetCellFormula(sheet string, axis string) string {
- axis = strings.ToUpper(axis)
- var xlsx xlsxWorksheet
- row, _ := strconv.Atoi(strings.Map(intOnlyMapF, axis))
- xAxis := row - 1
- name := `xl/worksheets/` + strings.ToLower(sheet) + `.xml`
- xml.Unmarshal([]byte(f.readXML(name)), &xlsx)
- rows := len(xlsx.SheetData.Row)
- if rows > 1 {
- lastRow := xlsx.SheetData.Row[rows-1].R
- if lastRow >= rows {
- rows = lastRow
- }
- }
- if rows <= xAxis {
- return ``
- }
- for _, v := range xlsx.SheetData.Row {
- if v.R != row {
- continue
- }
- for _, f := range v.C {
- if axis != f.R {
- continue
- }
- if f.F != nil {
- return f.F.Content
- }
- }
- }
- return ``
- }
|