| Quintiq file version 2.0 | 
| #parent: #root | 
| StaticMethod ImportExcel (KpiTracker owner, BinaryValue excel) | 
| { | 
|   TextBody: | 
|   [* | 
|     tbgh    := TableGroupHandle::Create( 'tablegroup' ); | 
|     tbgh     := XLS::LoadTableGroupFromBinaryData( excel.AsBinaryData(), tbgh, true, true ); | 
|      | 
|     for( n := 0; n < tbgh.TableNames().Size(); n++ ) | 
|     { | 
|       tablename := tbgh.TableNames().Element( n ); | 
|       tbh       := tbgh.Table( tablename ); | 
|        | 
|       xml       := TableHandle::ExportXML( tbh ); | 
|       impl      := XMLDOMImplementation::Create(); | 
|       xmlDoc    := impl.CreateDocumentFromString( xml ); | 
|        | 
|       xmlTable  := xmlDoc.GetElementByTagName( 'table', 0 ); | 
|       xmlColumns:= xmlTable.GetElementsByTagName( 'column' ); | 
|        | 
|       if( xmlColumns.Size() > 0 ) | 
|       { | 
|         rowsize := xmlColumns.Element( 0 ).GetElementsByTagName( 'cell' ).Size(); | 
|          | 
|         for( i := 0; i < rowsize; i++ ) | 
|         { | 
|           snapshot := construct( KpiSnapshotData );     | 
|           toString := StringToDateTime::ISOConverter();  | 
|           toReal   := StringToReal::ISOConverter(); | 
|           traverse( xmlColumns, Elements, xcol ) | 
|           { | 
|             if(  xcol.GetElementByTagName( 'cell', i ).HasAttribute( 'value' ) ) | 
|             { | 
|               name  := xcol.GetElementByTagName( 'name', 0 ).TextContent().TrimBoth(); | 
|               value := xcol.GetElementByTagName( 'cell', i ).GetAttribute( 'value' ).TextContent().TrimBoth(); | 
|                | 
|               if( name.StartsWith( "PlanDateTime" ) ) | 
|               { | 
|                 snapshot.PlanDateTime( toString.Convert( value ) ); | 
|               } | 
|               else if( name.StartsWith ( "ServerDateTime" )   ) | 
|               { | 
|                 snapshot.ServerDateTime( toString.Convert( value ) ); | 
|               } | 
|               else if( name.StartsWith( "RetentionPolicyID" ) ) | 
|               { | 
|                 snapshot.RetentionPolicyIdentification( value ); | 
|               } | 
|               else if( name.StartsWith( "label" ) ) | 
|               { | 
|                 name := name.ReplaceAll( "label_", "" ); | 
|                 snapshot.CreateLabel( name, value ); | 
|               } | 
|               else if( name.StartsWith( "kpi" ) ) | 
|               { | 
|                 name := name.ReplaceAll( "kpi_", "" ); | 
|                 snapshot.CreateValue( name, toReal.Convert( value ) ); | 
|               } | 
|             } | 
|           } | 
|           owner.SnapshotStorage().StoreSnapshot( snapshot ); | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |