ワークシート列操作
ワークシート列の操作を行うには、 Column クラスかWorksheet クラスを使用します。
目次
列の追加及び挿入
ワークシートの最後に新しい列を追加する場合、Worksheet クラスのAddColメソッドを使用し、指定した位置の直前に列を挿入するときはInsertColを使用します。
// デフォルト名で列を追加 int nColIndex = wks.AddCol(); // strNameという名前の列を追加; int nColIndex = wks.AddCol("AA", strName); // 列のインデックスを返す // AAという名前の列が既にある場合、自動で名付け out_str(strName); Column col(wks, nColIndex); // 列インデックスで列オブジェクトを構築 // 新しい列を1列目として挿入 int nPos = 0; // 挿入する位置 string strNewCreated; // 新しい列の名前 // MyColという列名が既にある場合は、自動で名付け if( wks.InsertCol(nPos, "MyCol", strNewCreated) ) { printf("Insert column successfully, name is %s\n", strNewCreated); }
列を削除
Worksheet::DeleteColメソッドはワークシートから列を削除する事ができます。
// インデックスで列を削除 wks.DeleteCol(0);
列の名前を変更する・ラベルを付ける
列の名前(ショートネーム)を変更するには、SetNameメソッドを使用します。
Column col = wks.Columns(0); //ワークシート内の1列目を取得 BOOL bRet = col.SetName("MyNewName"); // 列の名前を変更
ワークシート列ラベルには、ロングネーム、単位、コメント、パラメータ、ユーザ定義ラベル等がサポートされています。Origin Cコードでラベルの表示/非表示や、特定の列ラベルにテキストを追加できます。
Worksheet wks; wks.Create(); Grid gg; gg.Attach(wks); // パラメータラベルが非表示の場合、表示する bool bShow = gg.IsLabelsShown(RCLT_PARAM); if( !bShow ) gg.ShowLabels(RCLT_PARAM); wks.Columns(0).SetLongName("X Data"); wks.Columns(1).SetLongName("Y Data"); wks.Columns(0).SetComments("This is a test"); wks.Columns(0).SetUnits("AA"); wks.Columns(1).SetUnits("BB"); // 2列のパラメータラベルにテキストを入力 wks.Columns(0).SetExtendedLabel("Param A", RCLT_PARAM); wks.Columns(1).SetExtendedLabel("Param B", RCLT_PARAM);
RCLT_PARAM は、パラメータ列ラベルタイプです。他のタイプについては、OriginC\system\oc_const.h の ROWCOLLABELTYPE enumを確認してください。 |
列の表示/非表示
列を表示/非表示にするには、Workhseet::ShowCol メソッドを使用します。
wks.ShowCol(1, 1, false); // 列1を非表示にする
列の移動と交換
列を移動したり交換する場合、Worksheetクラス、DatasheetクラスがMoveColumnsメソッドと[[OriginC:Datasheet-SwapColumns|SwapColumns]を提供しています
// 3列移動 - 列5を最初の列へ // このサンプルでは最低限7列あるワークシートが必要 Worksheet wks = Project.ActiveLayer(); if(wks) wks.MoveColumns(4, 3, MOVE_COL_TO_FIRST); // アクティブワークシートの列の順番を逆に for(int ii = 1; ii <= wks.GetNumCols() / 2 ; ii++) wks.SwapColumns(ii - 1, wks.GetNumCols() - ii);
列にスパークラインを追加
列にスパークラインを追加するために、Origin CではRCLT_SPARKLINEラベルタイプのwks_set_show_labels が提供されています。
// サンプリング間隔とスパークラインを表示するためにアクティブワークシートを構成 // 現在のラベルに追加 Worksheet wks = Project.ActiveLayer(); vector<int> vn = {RCLT_SAMPLE_RATE, RCLT_SPARKLINE}; wks_add_show_labels(wks, vn, false);
属性、フォーマット、サブフォーマット
属性の取得と設定
Worksheet wks = Project.ActiveLayer(); Column col(wks, 0); // 列タイプを取得 // 0: Y // 1: 無属性 // 2: Yエラー // 3: X // 4: L // 5: Z // 6: Xエラー int nType = col.GetType(); out_int("Type: ", nType);
// 列属性を設定。 OKDATAOBJ_DESIGNATION_* in oc_const.h 参照 col.SetType(OKDATAOBJ_DESIGNATION_Z);
データフォーマットの取得と設定
// データフォーマットを取得して設定 // 列のデフォルトフォーマットは、 OKCOLTYPE_TEXT_NUMERIC // 列のフォーマットを日付に変更 if( OKCOLTYPE_DATE != col.GetFormat() ) { col.SetFormat(OKCOLTYPE_DATE); }
データサブフォーマットの取得と設定
// データサブフォーマットの取得と設定 // サブフォーマットのオプションは、フォーマットのタイプ // 数値、日付、時間などに応じて異なる if( LDF_YYMMDD != col.GetSubFormat() ) { col.SetSubFormat(LDF_YYMMDD); }