@@ -1392,6 +1392,7 @@ private void SaveSharedStringHandler(ZipOutputStream stream, CompressionLevel co
1392
1392
}
1393
1393
private void UpdateDefinedNamesXml ( )
1394
1394
{
1395
+ List < ExcelNamedRange > nameList = new List < ExcelNamedRange > ( ) ;
1395
1396
try
1396
1397
{
1397
1398
XmlNode top = WorkbookXml . SelectSingleNode ( "//d:definedNames" , NameSpaceManager ) ;
@@ -1413,13 +1414,7 @@ private void UpdateDefinedNamesXml()
1413
1414
}
1414
1415
foreach ( ExcelNamedRange name in _names )
1415
1416
{
1416
-
1417
- XmlElement elem = WorkbookXml . CreateElement ( "definedName" , ExcelPackage . schemaMain ) ;
1418
- top . AppendChild ( elem ) ;
1419
- elem . SetAttribute ( "name" , name . Name ) ;
1420
- if ( name . IsNameHidden ) elem . SetAttribute ( "hidden" , "1" ) ;
1421
- if ( ! string . IsNullOrEmpty ( name . NameComment ) ) elem . SetAttribute ( "comment" , name . NameComment ) ;
1422
- SetNameElement ( name , elem ) ;
1417
+ nameList . Add ( name ) ;
1423
1418
}
1424
1419
}
1425
1420
foreach ( ExcelWorksheet ws in _worksheets )
@@ -1428,16 +1423,38 @@ private void UpdateDefinedNamesXml()
1428
1423
{
1429
1424
foreach ( ExcelNamedRange name in ws . Names )
1430
1425
{
1431
- XmlElement elem = WorkbookXml . CreateElement ( "definedName" , ExcelPackage . schemaMain ) ;
1432
- top . AppendChild ( elem ) ;
1433
- elem . SetAttribute ( "name" , name . Name ) ;
1434
- elem . SetAttribute ( "localSheetId" , name . LocalSheetId . ToString ( ) ) ;
1435
- if ( name . IsNameHidden ) elem . SetAttribute ( "hidden" , "1" ) ;
1436
- if ( ! string . IsNullOrEmpty ( name . NameComment ) ) elem . SetAttribute ( "comment" , name . NameComment ) ;
1437
- SetNameElement ( name , elem ) ;
1426
+ nameList . Add ( name ) ;
1438
1427
}
1439
1428
}
1440
1429
}
1430
+
1431
+ nameList . Sort ( delegate ( ExcelNamedRange x , ExcelNamedRange y )
1432
+ {
1433
+ var result = x . Name . CompareTo ( y . Name ) ;
1434
+
1435
+ if ( result == 0 )
1436
+ {
1437
+ var nameX = x . LocalSheetId <= - 1 ? "" : x . LocalSheet . Name ;
1438
+ var nameY = y . LocalSheetId <= - 1 ? "" : y . LocalSheet . Name ;
1439
+
1440
+ result = nameX . CompareTo ( nameY ) ;
1441
+ }
1442
+ return result ;
1443
+ } ) ;
1444
+
1445
+ foreach ( var name in nameList )
1446
+ {
1447
+ XmlElement elem = WorkbookXml . CreateElement ( "definedName" , ExcelPackage . schemaMain ) ;
1448
+ top . AppendChild ( elem ) ;
1449
+ elem . SetAttribute ( "name" , name . Name ) ;
1450
+ if ( name . LocalSheetId != - 1 )
1451
+ {
1452
+ elem . SetAttribute ( "localSheetId" , name . LocalSheetId . ToString ( ) ) ;
1453
+ }
1454
+ if ( name . IsNameHidden ) elem . SetAttribute ( "hidden" , "1" ) ;
1455
+ if ( ! string . IsNullOrEmpty ( name . NameComment ) ) elem . SetAttribute ( "comment" , name . NameComment ) ;
1456
+ SetNameElement ( name , elem ) ;
1457
+ }
1441
1458
}
1442
1459
catch ( Exception ex )
1443
1460
{
0 commit comments