@@ -62,13 +62,19 @@ internal ExcelWorksheets(ExcelPackage pck, XmlNamespaceManager nsm, XmlNode topN
62
62
string relId = sheetNode . Attributes . GetNamedItem ( "id" , ExcelPackage . schemaRelationships ) . Value ;
63
63
int sheetID = Convert . ToInt32 ( sheetNode . Attributes [ "sheetId" ] . Value ) ;
64
64
65
- if ( ! String . IsNullOrEmpty ( relId ) )
65
+ if ( string . IsNullOrEmpty ( relId ) )
66
+ {
67
+ var ws = AddSheet ( name , false , null , null , ( XmlElement ) sheetNode ) ;
68
+ ws . SheetId = sheetID ;
69
+ //_worksheets.Add(ix, ws);
70
+ }
71
+ else
66
72
{
67
73
var sheetRelation = pck . Workbook . Part . GetRelationship ( relId ) ;
68
74
Uri uriWorksheet = UriHelper . ResolvePartUri ( pck . Workbook . WorkbookUri , sheetRelation . TargetUri ) ;
69
75
70
- //add the worksheet
71
76
int positionID = ix + _pck . _worksheetAdd ;
77
+ //add the worksheet
72
78
if ( sheetRelation . RelationshipType . EndsWith ( "chartsheet" ) )
73
79
{
74
80
_worksheets . Add ( ix , new ExcelChartsheet ( _namespaceManager , _pck , relId , uriWorksheet , name , sheetID , positionID , null ) ) ;
@@ -77,8 +83,8 @@ internal ExcelWorksheets(ExcelPackage pck, XmlNamespaceManager nsm, XmlNode topN
77
83
{
78
84
_worksheets . Add ( ix , new ExcelWorksheet ( _namespaceManager , _pck , relId , uriWorksheet , name , sheetID , positionID , null ) ) ;
79
85
}
80
- ix ++ ;
81
86
}
87
+ ix ++ ;
82
88
}
83
89
}
84
90
}
@@ -135,8 +141,8 @@ public ExcelWorksheet Add(string Name)
135
141
ExcelWorksheet worksheet = AddSheet ( Name , false , null ) ;
136
142
return worksheet ;
137
143
}
138
- private ExcelWorksheet AddSheet ( string Name , bool isChart , eChartType ? chartType , ExcelPivotTable pivotTableSource = null )
139
- {
144
+ private ExcelWorksheet AddSheet ( string Name , bool isChart , eChartType ? chartType , ExcelPivotTable pivotTableSource = null , XmlElement sheetElement = null )
145
+ {
140
146
lock ( _worksheets )
141
147
{
142
148
Name = ValidateFixSheetName ( Name ) ;
@@ -153,7 +159,7 @@ private ExcelWorksheet AddSheet(string Name, bool isChart, eChartType? chartType
153
159
worksheetXml . Save ( streamWorksheet ) ;
154
160
_pck . ZipPackage . Flush ( ) ;
155
161
156
- string rel = CreateWorkbookRel ( Name , sheetID , uriWorksheet , isChart ) ;
162
+ string rel = CreateWorkbookRel ( Name , sheetID , uriWorksheet , isChart , sheetElement ) ;
157
163
158
164
int positionID = _worksheets . Count + _pck . _worksheetAdd ;
159
165
ExcelWorksheet worksheet ;
@@ -246,19 +252,22 @@ public ExcelChartsheet AddStockChart(string Name, ExcelRangeBase CategorySerie,
246
252
}
247
253
248
254
249
- internal string CreateWorkbookRel ( string Name , int sheetID , Uri uriWorksheet , bool isChart )
255
+ internal string CreateWorkbookRel ( string Name , int sheetID , Uri uriWorksheet , bool isChart , XmlElement sheetElement )
250
256
{
251
257
//Create the relationship between the workbook and the new worksheet
252
258
var rel = _pck . Workbook . Part . CreateRelationship ( UriHelper . GetRelativeUri ( _pck . Workbook . WorkbookUri , uriWorksheet ) , Packaging . TargetMode . Internal , ExcelPackage . schemaRelationships + "/" + ( isChart ? "chartsheet" : "worksheet" ) ) ;
253
259
_pck . ZipPackage . Flush ( ) ;
254
260
255
261
//Create the new sheet node
256
- XmlElement worksheetNode = _pck . Workbook . WorkbookXml . CreateElement ( "sheet" , ExcelPackage . schemaMain ) ;
257
- worksheetNode . SetAttribute ( "name" , Name ) ;
258
- worksheetNode . SetAttribute ( "sheetId" , sheetID . ToString ( ) ) ;
259
- worksheetNode . SetAttribute ( "id" , ExcelPackage . schemaRelationships , rel . Id ) ;
262
+ if ( sheetElement == null )
263
+ {
264
+ sheetElement = _pck . Workbook . WorkbookXml . CreateElement ( "sheet" , ExcelPackage . schemaMain ) ;
265
+ sheetElement . SetAttribute ( "name" , Name ) ;
266
+ sheetElement . SetAttribute ( "sheetId" , sheetID . ToString ( ) ) ;
267
+ TopNode . AppendChild ( sheetElement ) ;
268
+ }
269
+ sheetElement . SetAttribute ( "id" , ExcelPackage . schemaRelationships , rel . Id ) ;
260
270
261
- TopNode . AppendChild ( worksheetNode ) ;
262
271
return rel . Id ;
263
272
}
264
273
0 commit comments