@@ -203,7 +203,6 @@ function sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet
203
203
_R = _origin . r ; _C = _origin . c ;
204
204
}
205
205
}
206
- var cell /*:Cell*/ ;
207
206
var range /*:Range*/ = ( { s : { c :0 , r :0 } , e : { c :_C , r :_R + js . length - 1 + offset } } /*:any*/ ) ;
208
207
if ( ws [ '!ref' ] ) {
209
208
var _range = safe_decode_range ( ws [ '!ref' ] ) ;
@@ -216,13 +215,15 @@ function sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet
216
215
var hdr /*:Array<string>*/ = o . header || [ ] , C = 0 ;
217
216
218
217
js . forEach ( function ( JS , R /*:number*/ ) {
218
+ if ( ! ws [ _R + R + offset ] ) ws [ _R + R + offset ] = [ ] ;
219
+ var ROW = ws [ _R + R + offset ] ;
219
220
keys ( JS ) . forEach ( function ( k ) {
220
221
if ( ( C = hdr . indexOf ( k ) ) == - 1 ) hdr [ C = hdr . length ] = k ;
221
222
var v = JS [ k ] ;
222
223
var t = 'z' ;
223
224
var z = "" ;
224
- var ref = encode_cell ( { c :_C + C , r :_R + R + offset } ) ;
225
- cell = ws_get_cell_stub ( ws , ref ) ;
225
+ var ref = dense ? "" : encode_cell ( { c :_C + C , r :_R + R + offset } ) ;
226
+ var cell /*:Cell*/ = dense ? ROW [ _C + C ] : ws [ ref ] ;
226
227
if ( v && typeof v === 'object' && ! ( v instanceof Date ) ) {
227
228
ws [ ref ] = v ;
228
229
} else {
@@ -232,15 +233,12 @@ function sheet_add_json(_ws/*:?Worksheet*/, js/*:Array<any>*/, opts)/*:Worksheet
232
233
else if ( v instanceof Date ) {
233
234
t = 'd' ;
234
235
if ( ! o . cellDates ) { t = 'n' ; v = datenum ( v ) ; }
235
- z = ( cell . z && fmt_is_date ( cell . z ) ) ? cell . z : ( o . dateNF || table_fmt [ 14 ] ) ;
236
+ z = ( cell != null && cell . z && fmt_is_date ( cell . z ) ) ? cell . z : ( o . dateNF || table_fmt [ 14 ] ) ;
236
237
}
237
238
else if ( v === null && o . nullError ) { t = 'e' ; v = 0 ; }
238
239
if ( ! cell ) {
239
240
if ( ! dense ) ws [ ref ] = cell = ( { t :t , v :v } /*:any*/ ) ;
240
- else {
241
- if ( ! ws [ _R + R + offset ] ) ws [ _R + R + offset ] = [ ] ;
242
- ws [ _R + R + offset ] [ _C + C ] = cell = ( { t :t , v :v } /*:any*/ ) ;
243
- }
241
+ else ROW [ _C + C ] = cell = ( { t :t , v :v } /*:any*/ ) ;
244
242
}
245
243
else {
246
244
cell . t = t ; cell . v = v ;
0 commit comments