Minimum Origin Version Required: Origin 8 SR0
Reports vector numeric data and text via Datasheet::SetReportTree function in Worksheet class from tree to flat sheet.
void Datasheet_SetReportTree() { int nID = 100; // Each node must have node ID and node ID must be unique int nTableFormat = GETNBRANCH_FIT_COL_WIDTH | GETNBRANCH_FIT_ROW_HEIGHT; // 1. Create report tree Tree tr; tr.Report.ID = nID++; tr.Report.SetAttribute(STR_LABEL_ATTRIB, "Dest Stats Report"); //Table title // TREE_Table attribute is critical in getting the report to work so must be present in every table level. // Can set this attribute as 0 without any format, but many bits GETNBRANCH_* defined in oc_const.h to set table display format. tr.Report.SetAttribute(TREE_Table, nTableFormat); // 2. Prepare the table and show values got from vectors tr.Report.Table.ID = nID++; TreeNode trTable = tr.Report.Table; trTable.SetAttribute(STR_LABEL_ATTRIB, "Extreme Values"); //Table tile trTable.SetAttribute(TREE_Table, nTableFormat | GETNBRANCH_TRANSPOSE); // setup column 1 trTable.C1.ID = nID++; trTable.C1.SetAttribute(STR_LABEL_ATTRIB, "Description"); // Column label trTable.C1.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_NONE); // Set column type to None // setup column 2 trTable.C2.ID = nID++; trTable.C2.SetAttribute(STR_LABEL_ATTRIB, "Max Values"); // Column label trTable.C2.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y); // Set column type to Y // setup column 3 trTable.C3.ID = nID++; trTable.C3.SetAttribute(STR_LABEL_ATTRIB, "Min Values"); // Column label trTable.C3.SetAttribute(STR_COL_DESIGNATION_ATTRIB, OKDATAOBJ_DESIGNATION_Y); // Set column type to Y // Put data from vector to table columns vector<string> vsDesc = {"Data1", "Data2", "Data3", "Data4", "Data5"}; vector vMaxDatas = {100, 98, 95, 92, 84}; vector vMinDatas = {5, 9, 13, 18, 21}; trTable.C1.strVals = vsDesc; trTable.C2.dVals = vMaxDatas; trTable.C3.dVals = vMinDatas; // 4. Prepare worksheet window to report WorksheetPage wksPage; wksPage.Create(); string strSheetName = "Report Sheet"; int nn = wksPage.AddLayer(strSheetName); if( nn < 0 ) return; Worksheet wksOut = wksPage.Layers(nn); wksPage.Layers(0).Delete(); //delete the first default layer // 5. Do report if( wksOut.SetReportTree(tr.Report) < 0 ) // Returns last row number on successful exit and -1 on failure. { printf("Fail to set report tree.\n"); return; } wksOut.AutoSize(); }