Add a new subrange to the DataRange.
int Add( LPCSTR lpcszName, LPCSTR lpcszRange )
int Add( LPCSTR lpcszName, Datasheet & ds, int nR1, int nC1, int nR2, int nC2 )
int Add( Datasheet & ds = NULL, int nC1 = 0, LPCSTR lpcszName = NULL, int nC2 = 0, int nR1 = 0, int nR2 = -1 )
Returns the number of subranges in the DataRange after execution.
Returns the number of subranges in the DataRange after execution.
Returns the number of subranges in the DataRange after execution.
EX1
// construt data range for one column and then get data from range object to one vector void DataRange_Add_Ex1(int nColIndex = 0) { Worksheet wks = Project.ActiveLayer(); if( !wks ) { out_str("Please keep a worksheet active with data"); return; } Column col(wks, nColIndex); if( !col ) { out_str("The specified column does not exist."); return; } string strRange; if( !col.GetRangeString(strRange) ) { out_str("Fail to get range string."); return; } DataRange dr; dr.Add("X", strRange); vector vData; dr.GetData(&vData, 0); if( vData.GetSize() > 0 ) printf("The first value of %dth column is %g\n", nColIndex+1, vData[0]); else printf("No data in %dth column\n", nColIndex+1); }
EX2
// construct XY data range from worksheet columns void DataRange_Add_Ex2() { Worksheet wks = Project.ActiveLayer(); if( !wks ) { out_str("Please keep a worksheet active with data"); return; } Column colX(wks, 0); Column colY(wks, 1); if( colX && colY ) { string strRangeX, strRangeY; if( colX.GetRangeString(strRangeX) && colY.GetRangeString(strRangeY) ) { XYRange dr; dr.Add("X", strRangeX); // the range name should be X dr.Add("Y", strRangeY); // the range name should be Y vector vx, vy; dr.GetData(vy, vx); } } }
EX3
// construct data range from worksheet selected range void DataRange_Add_Ex3() { Worksheet wks = Project.ActiveLayer(); if( !wks ) return; int c1, c2, r1, r2; int nRet = wks.GetSelection(c1, c2, r1, r2); // get the selected range if( WKS_SEL_NONE == nRet ) { out_str("No selection on active worksheet!"); return; } DataRange dr; dr.Add("X", wks, r1, c1, r2, c2); //construct a data range object by selection vector vData; dr.GetData(vData, 0); // get data from range object }
EX4
// get data from Origin matrix window void DataRange_Add_Ex4() { MatrixLayer matLayer = Project.ActiveLayer(); if( matLayer ) { DataRange dr; dr.Add("X", matLayer, 0, 0, -1, -1); matrix matData; dr.GetData(matData); printf("The number of row and col is %dx%d.\n", matData.GetNumRows(), matData.GetNumCols()); } }
EX5
// put data from matrix object to Origin matrix window void DataRange_Add_Ex5() { MatrixPage matPage; matPage.Create("Origin"); MatrixLayer matLayer = matPage.Layers(); DataRange dr; dr.Add("X", matLayer, 0, 0, -1, -1); matrix matData = {{1,2,3}, {4,5,6}, {7,8,9}}; dr.SetData(matData); }
EX6
// construct multiple subranges from different workbook // Before running, please make sure there are Book1 and Book2 in current project. void DataRange_Add_Ex6() { WorksheetPage wksPage1("Book1"); WorksheetPage wksPage2("Book2"); if( wksPage1 && wksPage2 ) { Worksheet wks1 = wksPage1.Layers(-1); // get active sheet Worksheet wks2 = wksPage2.Layers(-1); DataRange dr; // subrange 1 dr.Add(wks1, 0, "X"); dr.Add(wks1, 1, "Y"); // subrange 2 dr.Add(NULL); // add separator dr.Add(wks2, 0, "X"); dr.Add(wks2, 1, "Y"); DWORD dwDataRules = DRR_GET_DEPENDENT; vector vx1, vy1, vx2, vy2; dr.GetData(dwDataRules, 0, NULL, NULL, &vy1, &vx1); // get xy data from the 1st subrange dr.GetData(dwDataRules, 1, NULL, NULL, &vy2, &vx2); // get xy data from the 2nd subrange } }
Add a new subrange to the DataRange. The subrange is specified using a Worksheet or MatrixLayer object and beginning and ending row and a column index.
DataRange::AddInput,DataRange::SetRange
origin.h