ReportBase::CreateTableWithMatrix

 

Description

Create report table with matrix data

Syntax

CreateTableWithMatrix( LPCSTR lpcszTagName, LPCSTR lpcszLabel, int nId, const matrix & mm, const vector<string> & saColNames, const vector<string> & saRowNames)

Parameters

lpcszTagName
[input] table tag name
lpcszLabel
[input] table title
nId
[input] table id
mm
[input] value to fill in the table
saColNames
[input] column names
saRowNames
[input] row names

Return

the newly created table

Examples

EX1

#include <ReportTree.h>

enum{
        RTID_TABLE1 = 10,
        RTID_TABLE2 = 20,
        RTID_TABLE3 = 30,
};

void test_CreateTableWithMatrix()
{
        Worksheet wks = Project.ActiveLayer();
        WorksheetPage wp = wks.GetPage();

        int nn = wp.AddLayer("Report1");
        
        Worksheet wksRt = wp.Layers(nn);
        Tree trReportTree;
        ReportTree rt(trReportTree);
        
        ReportTable rtF = rt.CreateTable("factor", "AddRow Example", RTID_TABLE1);    
        if(rtF)
        {
                StringArray sa = {"Fixed", "15", "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"};
                StringArray saLabel = { "Type", "Levels","Values"};
                StringArray saColTag = {"","",""};
                string strRowHeader = "Factor 1";
                
                TreeNode trFactor = rtF.AddRow("factor"+1, sa, strRowHeader, saLabel, saColTag, RTID_TABLE1+1 );         
                if (trFactor)
                {
                        //for version <= Origin 2025 if comma is decimal separator, 
                        //you can make the cell always text to avoid "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" being considered missing value
                        string str = TNVAL_TYPE_CSTRING;
                        tree_set_attribute_to_all_nodes(trFactor, STR_TYPE_ATTRIB, str, true);
                }
        }     
        
        int id = RTID_TABLE2;
        ReportTable rtData = rt.CreateTable("data"+(int)id, "AddColumn Example", id);     
        if(rtData)
        {     
                vector<string> vs = {"A", "B", "C"};
                rtData.AddColumn(vs, "xfactor", id+1, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_X);
                
                vector vv = {0.12, 0.34, 0.56};
                rtData.AddColumn(vv, "yfactor", id+2, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_Y);
                rtData.AddColumn(vv*5, "yfactor2", id+3, "PlotIntoLayer", OKDATAOBJ_DESIGNATION_Y);
        }
        
        id = RTID_TABLE3;
        matrix mDoublesByDefault = {{1.1,2.2,3.3},{4.4,5.5,6.6}};
        vector<string> saColNames = {"A", "B", "C"}, saRowNames = {"1", "2"};
        ReportTable rtMData = rt.CreateTableWithMatrix("data"+(int)id, "Matrix example", id, mDoublesByDefault, saColNames, saRowNames);
                
        rt.GenerateReport(wksRt, true);
        wksRt.AutoSize();
}

Remark

See Also

ReportBase's examples

Header to Included

ReportTree.h