The following code shows how to get and set tables/blocks of cells of same dimension using Origin C code. You can use OriginObject::GetFormat to get the format tree of one Origin object(e.x. DataRange), save it to XML file or output it the learn more about it. Then you can use OriginObject::SetFormat to set the format to the Origin objects.
Minimum Origin Version Required: Origin 8 SR0
// Define the theme file path and name. #define STR_THEME_FILE_PATH GetOriginPath(ORIGIN_PATH_USER) + "wksTheme.xml" void copy_cell_format() { Worksheet wks = Project.ActiveLayer(); if( !wks ) { printf("Please keep worksheet active before running.\n"); return; } int r1, c1, r2, c2; wks.GetSelectedRange( r1, c1, r2, c2 ); // to get the selected range DataRange dr; dr.Add( "Range1", wks, r1, c1, r2, c2 ); // construct a data range object Tree tr; tr = dr.GetFormat( FPB_ALL, FOB_RANGE_STYLE, true, true ); tr.Save(STR_THEME_FILE_PATH); }
void paste_cell_format() { Worksheet wks = Project.ActiveLayer(); if( !wks ) { printf("Please keep worksheet active before running.\n"); return; } vector<int> vR1, vC1, vR2, vC2; wks.GetSelectedRange( vR1, vC1, vR2, vC2 ); Tree tr; if( tr.Load(STR_THEME_FILE_PATH) ) { for(int iRange = 0; iRange < vR1.GetSize(); iRange++) { DataRange dr; dr.Add( "Range1", wks, vR1[iRange], vC1[iRange], vR2[iRange], vC2[iRange] ); // apply the format from drSource to drDest bool bRet = dr.ApplyFormat( tr, true, true ); } } }