There is example of Origin C
Input: report worksheet
Output: names of sheet with input datas
bool get_input_worksheet_name(const Worksheet& wksReport, vector<string>& vsInputWks)
{
Tree trGUI;
uint uid;
// GRT_TYPE_GUI means get GUI tree of fitting
// otherwise, GRT_TYPE_RESULTS to get calculation result tree of fitting
if( !wksReport.GetReportTree(trGUI, &uid, 0, GRT_TYPE_GUI) )
return false;
TreeNode trInput = trGUI.InputData;
XYRange drXY;
drXY.Create(trInput, false); // false means data range with multi datas
if ( !drXY || !drXY.IsValid() ) // check error
return false;
// loop all datasets and get names of sheet one by one
DWORD dwRules = DRR_GET_DEPENDENT | DRR_NO_FACTORS;
int nNumDataset = drXY.GetNumData(dwRules);
for (int nIndex = 0; nIndex < nNumDataset; nIndex++ )
{
Column colY;
if ( drXY.GetYColumn(colY, nIndex) )
{
Worksheet wks;
colY.GetParent(wks);
if ( !wks )
return false;
vsInputWks.Add(wks.GetName());
}
}
return true;
}
Testing sample
void test_get_fit_sheet()
{
vector<string> vsInputWks;
Worksheet wks = Project.ActiveLayer();
get_input_worksheet_name(wks, vsInputWks);
out_int("Number of input data: ", vsInputWks.GetSize());
out_str("Names of input data sheet:");
for (int ii = 0; ii < vsInputWks.GetSize(); ii++ )
{
out_str(vsInputWks[ii]);
}
}
Sim
OriginLab Development