2.7.1.2 Workbook Manipulation
Origin provides the capabilities for workbook manipulation by using LabTalk script, such as duplicating, merging, splitting, etc.
Duplicate Workbook
To duplicate active workbook, the win -d command is used. It allows to specify a name for the duplicated workbook, and the new workbook is activated after duplicated. The command win -da is doing the similar thing, however, it keeps the active workbook active after duplicated.
// Open a project string strOpj$ = system.path.program$; strOpj$ += "Samples\LabTalk Script Examples\Loop_wks.opj"; doc -o %(strOpj$); // Activate the workbook S2Freq1 win -a S2Freq1; // Duplicate this workbook, and name it "MyCopy" // And this new workbook will be activated win -d MyCopy; // Duplicate the MyCopy workbook, and name it "MyCopy2" // But keep MyCopy still activated win -da MyCopy2;
Merge Workbooks
To merge multiple workbooks into one new workbook, the X-Function, merge_book, is available.
// Open a project string strOpj$ = system.path.program$; strOpj$ += "Samples\LabTalk Script Examples\Loop_wks.opj"; doc -o %(strOpj$); // Activate Sample1 folder pe_cd /Sample1; // Merge two workbooks (S1Freq1 and S1Freq2) in two subfolders // User the source workbook name for the worksheet name in the merged workbook merge_book fld:=recursive rename:=sname; // Activate Sample2 folder pe_cd /Sample2; // Merge two workbooks (S2Freq1 and S2Freq2) in two subfolders // User the source workbook name for the worksheet name in the merged workbook merge_book fld:=recursive rename:=sname; // Activeate the root folder pe_cd /; // Two new workbooks are created from the above script // The names of these two workbooks begin with "mergebook" // Now, merge these two workbooks into a new workbooks // The worksheets in the final result workbook will name // by using the original worksheet name merge_book fld:=project single:=0 match:=wkbshort key:="mergebook*" rename:=wksname;
Split Workbook
The example above is merging multiple workbooks into one workbook. It is also able to split a workbook into multiple workbooks, which contain single worksheet. The wsplit_book X-Function is designed for this purpose.
// Open a project string strOpj$ = system.path.program$; strOpj$ += "Samples\COM Server and Client\Basic Stats on Data.opj"; doc -o %(strOpj$); // There are three worksheets in the active workbook, RawData // Now split this workbook into three workbooks // And each workbook will contain one worksheet from the original workbook wsplit_book fld:=active;