@@ -76,15 +76,22 @@ func (rows *Rows) Error() error {
7676
7777// Columns return the current row's column values.
7878func (rows * Rows ) Columns () ([]string , error ) {
79+ _ , columns , err := rows .RawColumns (false )
80+ return columns , err
81+ }
82+
83+ // RawColumns return the current row's column raw, unformatted values
84+ func (rows * Rows ) RawColumns (noFormatted bool ) ([]xlsxC , []string , error ) {
7985 var (
8086 err error
8187 inElement string
8288 row , cellCol int
8389 columns []string
90+ cells []xlsxC
8491 )
8592
8693 if rows .stashRow >= rows .curRow {
87- return columns , err
94+ return cells , columns , err
8895 }
8996
9097 d := rows .f .sharedStringsReader ()
@@ -101,11 +108,11 @@ func (rows *Rows) Columns() ([]string, error) {
101108 if attr .Name .Local == "r" {
102109 row , err = strconv .Atoi (attr .Value )
103110 if err != nil {
104- return columns , err
111+ return cells , columns , err
105112 }
106113 if row > rows .curRow {
107114 rows .stashRow = row - 1
108- return columns , err
115+ return cells , columns , err
109116 }
110117 }
111118 }
@@ -117,21 +124,30 @@ func (rows *Rows) Columns() ([]string, error) {
117124 if colCell .R != "" {
118125 cellCol , _ , err = CellNameToCoordinates (colCell .R )
119126 if err != nil {
120- return columns , err
127+ return cells , columns , err
121128 }
122129 }
123130 blank := cellCol - len (columns )
124- val , _ := colCell .getValueFrom (rows .f , d )
125- columns = append (appendSpace (blank , columns ), val )
131+ for i := 1 ; i < blank ; i ++ {
132+ cells = append (cells , xlsxC {})
133+ if ! noFormatted {
134+ columns = append (columns , "" )
135+ }
136+ }
137+ cells = append (cells , colCell )
138+ if ! noFormatted {
139+ val , _ := colCell .getValueFrom (rows .f , d )
140+ columns = append (columns , val )
141+ }
126142 }
127143 case xml.EndElement :
128144 inElement = startElement .Name .Local
129145 if inElement == "row" {
130- return columns , err
146+ return cells , columns , err
131147 }
132148 }
133149 }
134- return columns , err
150+ return cells , columns , err
135151}
136152
137153// appendSpace append blank characters to slice by given length and source slice.
0 commit comments