Quintiq file version 2.0 
 | 
#parent: #root 
 | 
StaticMethod Export ( 
 | 
  MacroPlan macroPlan 
 | 
) as BinaryValue 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    xmlDOMI      := XMLDOMImplementation::Create(); 
 | 
    xmlDOM       := xmlDOMI.CreateDocumentFromString( '<?xml version="1.0" encoding="UTF-16"?><table><name>Sheet1</name></table>' ); 
 | 
     
 | 
    tableElement := xmlDOM.GetElementByTagName( "table", 0 ); 
 | 
     
 | 
    // 第一列(名称) 
 | 
    mrtrs       := selectsortedset( macroPlan, MaterialRackTotalRow, tempMRTR, true, tempMRTR.Name() ); 
 | 
    firstColumn := xmlDOM.CreateElement( "column" ); 
 | 
    firstName   := xmlDOM.CreateElement( "name" ); 
 | 
    firstType   := xmlDOM.CreateElement( "type" ); 
 | 
    firstName.TextContent( "*" ); 
 | 
    firstType.TextContent( "String" ); 
 | 
    firstColumn.AppendChild( firstName ); 
 | 
    firstColumn.AppendChild( firstType ); 
 | 
    traverse ( mrtrs, Elements, cerr ) { 
 | 
      firstCell := xmlDOM.CreateElement( "cell" ); 
 | 
      firstCell.SetAttribute( "value", cerr.Name() ); 
 | 
      firstColumn.AppendChild( firstCell ); 
 | 
    } 
 | 
    tableElement.AppendChild( firstColumn ); 
 | 
     
 | 
    // 时间列 
 | 
    mrcs         := selectsortedset( macroPlan, MaterialRackColumn, tempMRC, true, tempMRC.Month() ); 
 | 
    traverse ( mrcs, Elements, mrc ) { 
 | 
      cellColumn := xmlDOM.CreateElement( "column" ); 
 | 
      cellName   := xmlDOM.CreateElement( "name" ); 
 | 
      cellType   := xmlDOM.CreateElement( "type" ); 
 | 
      cellName.TextContent( [String]mrc.Month() ); 
 | 
      cellType.TextContent( "Real" ); 
 | 
      cellColumn.AppendChild( cellName ); 
 | 
      cellColumn.AppendChild( cellType ); 
 | 
      cells := selectsortedset( mrc, MaterialRackTotalCell, tempMRTCell, true, tempMRTCell.MaterialRackTotalRow().Name() ); 
 | 
      traverse ( cells, Elements, c ) { 
 | 
        cell := xmlDOM.CreateElement( "cell" ); 
 | 
        cell.SetAttribute( "value", [String]c.Quantity() ); // 料架总数量 
 | 
        cellColumn.AppendChild( cell ); 
 | 
      } 
 | 
      tableElement.AppendChild( cellColumn ); 
 | 
    } 
 | 
     
 | 
    xmlString := xmlDOMI.CreateSerializer().WriteToString( xmlDOM ) 
 | 
     
 | 
    //info( xmlString ); 
 | 
     
 | 
    tableGroupHandle := TableGroupHandle::Create( "Sheet1" ); 
 | 
    tableHandle      := TableHandle::ImportXML( BinaryValue::Construct( xmlString ) ); 
 | 
    tableGroupHandle.Add( tableHandle ); 
 | 
     
 | 
    binaryData := XLS::SaveTableGroupToBinaryData( tableGroupHandle, true ); 
 | 
     
 | 
    return binaryData.AsBinaryValue(); 
 | 
  *] 
 | 
} 
 |