Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod DownloadTemplate ( 
 | 
  MacroPlan macroPlan 
 | 
) as BinaryValue 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    xmlDOMI := XMLDOMImplementation::Create(); 
 | 
    xmlDOM  := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name><column><name>Product</name><type>String</type></column><column><name>Unit</name><type>String</type></column></table>' ); 
 | 
     
 | 
    tableElement              := xmlDOM.GetElementByTagName( "table", 0 ); 
 | 
     
 | 
    startofyear               := macroPlan.StartOfPlanning().StartOfYear(); 
 | 
    startofnextyear           := macroPlan.StartOfPlanning().StartOfNextYear(); 
 | 
     
 | 
    for( start := startofyear; start < startofnextyear; start := start.StartOfNextMonth() ){ 
 | 
      columnElement := xmlDOM.CreateElement( "column" ); 
 | 
      nameElement   := xmlDOM.CreateElement( "name" ); 
 | 
      typeElement   := xmlDOM.CreateElement( "type" ); 
 | 
      nameElement.TextContent( start.Format( "M2/D2/Y" ) ); 
 | 
      typeElement.TextContent( "String" ); 
 | 
      columnElement.AppendChild( nameElement ); 
 | 
      columnElement.AppendChild( typeElement ); 
 | 
      tableElement.AppendChild( columnElement );   
 | 
    } 
 | 
     
 | 
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM ) 
 | 
     
 | 
    //info( xmlString ); 
 | 
     
 | 
    tableGroupHandle := TableGroupHandle::Create( FinancialSalesReport::GetDefaultName() ); 
 | 
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); 
 | 
    tableGroupHandle.Add( tableHandle ); 
 | 
     
 | 
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); 
 | 
     
 | 
    return binaryData.AsBinaryValue(); 
 | 
  *] 
 | 
} 
 |