@@ -135,7 +135,7 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
135135 sheetData . InnerText = "{{{{{{split}}}}}}" ; //TODO: bad code smell
136136 var prefix = string . IsNullOrEmpty ( sheetData . Prefix ) ? "" : $ "{ sheetData . Prefix } :";
137137 var endPrefix = string . IsNullOrEmpty ( sheetData . Prefix ) ? "" : $ ":{ sheetData . Prefix } "; //
138- var contents = doc . InnerXml . Split ( new string [ ] { $ "<{ prefix } sheetData>{{{{{{{{{{{{split}}}}}}}}}}}}</{ prefix } sheetData>" } , StringSplitOptions . None ) ; ;
138+ var contents = doc . InnerXml . Split ( new string [ ] { $ "<{ prefix } sheetData>{{{{{{{{{{{{split}}}}}}}}}}}}</{ prefix } sheetData>" } , StringSplitOptions . None ) ;
139139 using ( var writer = new StreamWriter ( stream , Encoding . UTF8 ) )
140140 {
141141 writer . Write ( contents [ 0 ] ) ;
@@ -164,7 +164,9 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
164164
165165 var newRow = row . Clone ( ) as XmlElement ;
166166 newRow . SetAttribute ( "r" , newRowIndex . ToString ( ) ) ;
167- newRow . InnerXml = row . InnerXml . Replace ( $ "{{{{$rowindex}}}}", newRowIndex . ToString ( ) ) ;
167+ StringBuilder rowXml = new StringBuilder ( newRow . InnerXml ) ;
168+ // newRow.InnerXml = row.InnerXml.Replace($"{{{{$rowindex}}}}", newRowIndex.ToString());
169+ rowXml . Replace ( $ "{{{{$rowindex}}}}", newRowIndex . ToString ( ) ) ;
168170
169171 if ( rowInfo . IsDictionary )
170172 {
@@ -174,14 +176,16 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
174176 var key = $ "{{{{{rowInfo.IEnumerablePropName}.{ propInfo . Key } }}}}";
175177 if ( item == null ) //
176178 {
177- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
179+ // newRow.InnerXml = newRow.InnerXml.Replace(key, "");
180+ rowXml . Replace ( key , "" ) ;
178181 continue ;
179182 }
180183
181184 var cellValue = dic [ propInfo . Key ] ;
182185 if ( cellValue == null )
183186 {
184- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
187+ // newRow.InnerXml = newRow.InnerXml.Replace(key, "");
188+ rowXml . Replace ( key , "" ) ;
185189 continue ;
186190 }
187191
@@ -198,7 +202,8 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
198202 }
199203
200204 //TODO: 
201- newRow . InnerXml = newRow . InnerXml . Replace ( key , cellValueStr ) ;
205+ //newRow.InnerXml = newRow.InnerXml.Replace(key, cellValueStr);
206+ rowXml . Replace ( key , cellValueStr ) ;
202207 }
203208 }
204209 else if ( rowInfo . IsDataTable )
@@ -209,14 +214,16 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
209214 var key = $ "{{{{{rowInfo.IEnumerablePropName}.{ propInfo . Key } }}}}";
210215 if ( item == null ) //
211216 {
212- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
217+ // newRow.InnerXml = newRow.InnerXml.Replace(key, "");
218+ rowXml . Replace ( key , "" ) ;
213219 continue ;
214220 }
215221
216222 var cellValue = datarow [ propInfo . Key ] ;
217223 if ( cellValue == null )
218224 {
219- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
225+ // newRow.InnerXml = newRow.InnerXml.Replace(key, "");
226+ rowXml . Replace ( key , "" ) ;
220227 continue ;
221228 }
222229
@@ -233,7 +240,8 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
233240 }
234241
235242 //TODO: 
236- newRow . InnerXml = newRow . InnerXml . Replace ( key , cellValueStr ) ;
243+ //newRow.InnerXml = newRow.InnerXml.Replace(key, cellValueStr);
244+ rowXml . Replace ( key , cellValueStr ) ;
237245 }
238246 }
239247 else
@@ -245,14 +253,16 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
245253 var key = $ "{{{{{rowInfo.IEnumerablePropName}.{ prop . Name } }}}}";
246254 if ( item == null ) //
247255 {
248- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
256+ //newRow.InnerXml = newRow.InnerXml.Replace(key, "");
257+ rowXml . Replace ( key , "" ) ;
249258 continue ;
250259 }
251260
252261 var cellValue = prop . GetValue ( item ) ;
253262 if ( cellValue == null )
254263 {
255- newRow . InnerXml = newRow . InnerXml . Replace ( key , "" ) ;
264+ //newRow.InnerXml = newRow.InnerXml.Replace(key, "");
265+ rowXml . Replace ( key , "" ) ;
256266 continue ;
257267 }
258268
@@ -274,10 +284,14 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
274284 }
275285
276286 //TODO: 
277- newRow . InnerXml = newRow . InnerXml . Replace ( key , cellValueStr ) ;
287+ // newRow.InnerXml = newRow.InnerXml.Replace(key, cellValueStr);
288+ rowXml . Replace ( key , cellValueStr ) ;
289+ StringBuilder stringBuilder = new StringBuilder ( ) ;
278290 }
279291 }
280292
293+ newRow . InnerXml = rowXml . ToString ( ) ;
294+
281295 // note: only first time need add diff 
282296 if ( ! first )
283297 //rowIndexDiff++;
@@ -326,7 +340,7 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
326340 }
327341 }
328342
329- _newRow . InnerXml = _newRow . InnerXml . Replace ( $ "{{{{$rowindex}}}}", mergeBaseRowIndex . ToString ( ) ) ;
343+ _newRow . InnerXml = new StringBuilder ( _newRow . InnerXml ) . Replace ( $ "{{{{$rowindex}}}}", mergeBaseRowIndex . ToString ( ) ) . ToString ( ) ;
330344 writer . Write ( CleanXml ( _newRow . OuterXml , endPrefix ) ) ;
331345 }
332346 }
@@ -335,7 +349,7 @@ private void WriteSheetXml(Stream stream, XmlDocument doc, XmlNode sheetData)
335349 else
336350 {
337351 row . SetAttribute ( "r" , newRowIndex . ToString ( ) ) ;
338- row . InnerXml = row . InnerXml . Replace ( $ "{{{{$rowindex}}}}", newRowIndex . ToString ( ) ) ;
352+ row . InnerXml = new StringBuilder ( row . InnerXml ) . Replace ( $ "{{{{$rowindex}}}}", newRowIndex . ToString ( ) ) . ToString ( ) ;
339353 writer . Write ( CleanXml ( row . OuterXml , endPrefix ) ) ;
340354
341355 //mergecells
0 commit comments