| 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 ); | 
|      | 
|     // 第一列(名称) | 
|     mrcrs       := selectsortedset( macroPlan, MaterialRackCustomRow, tempMRCR, true, tempMRCR.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 ( mrcrs, Elements, mrcr ) { | 
|       firstCell := xmlDOM.CreateElement( "cell" ); | 
|       firstCell.SetAttribute( "value", mrcr.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, MaterialRackCustomCell, tempMRCCell, true, tempMRCCell.MaterialRackCustomRow().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(); | 
|   *] | 
| } |