ユーザ定義データファイルのインポート

インポートしたいデータファイルがインポートフィルタのASCIIまたはバイナリファイルのオプションを使用してインポートできない場合、独自のPythonまたはOriginC関数を作成してファイルをインポートできます。

データインポートのためのPythonコード

Pythonベースのインポートフィルタを作成する方法について説明します。

Pythonコードを使用して、ユーザ定義のデータファイルをインポートできます。このようなコードの簡単な例を以下に示します。このコードに関する最も重要な点は、Originによってコードが呼び出される前に、目的のワークシートがアクティブ化されることです。さらに、LabTalk変数 fname$ には、インポートする現在のファイルのフルパスとファイル名が入力されます。Pythonコードで何をする必要があるかをよりよく理解するには、コードコメントをご覧ください。

import originpro as op
import pandas as pd

# 関数はファイルをpandas DataFrameに読み込みます。
def read_file(file):
    df = pd.DataFrame()
    with open(file, 'r') as f:
        line = f.readline()
        while line:
            # ここにコードを入力して、ファイルの行を解析します
            # 次に、それをDataFrameに追加します
    return df


# Originのインポートフィルタによって選択されたファイルはfname$に配置されます
# LabTalk変数。Pythonに取り込む必要があります。名前に$を指定しないでください!
fname = op.get_lt_str('fname')

# ファイルをpandas DataFrameに読み込みます
data = read_file(fname)

# アクティブなシートを返します。
wks = op.find_sheet()

# 最初の列から始まるシートにDataFrameを追加します。
# DataFrame列ラベルは、ワークシート列のロングネームになります。
#  Originは、DataFrameデータ型に基づいて列形式を自動的に設定します。
wks.from_df(data)

インポートを処理するコードを作成すると、次のように使用できます。

  1. インポートウィザードボタンButton Import Wizard.pngか、メインメニューからデータ:ファイルからインポートを選択します。
  2. ウィザードの最初のページ(「データソースページ)で、データタイプグループのユーザ定義ラジオボタンを選択します。
  3. 1つまたは複数ファイルをインポートする場合、インポートするファイルのパスを指定します。また、クリップボードからインポートする場合、クリップボードラジオボタンを選択します。
  4. ターゲットウィンドウグループのラジオボタンから1つを選択して、目的のウィンドウを選択します。必要に応じて、テンプレート*とインポートモードを選択します。進むをクリックしてユーザ定義フィルタページに移動します。
  5. ユーザ定義フィルタページでは、コードをPythonコードテキスト領域に貼り付けます。または、Pythonコードをファイルに保存し、Pythonファイルの制御を使用してPythonファイルへのパスを指定することもできます。パスは次のいずれかになります。
    • 絶対ファイルパス
    • ユーザーファイルフォルダの相対ファイルパス
    • ファイルがユーザーファイルフォルダにある場合は、ファイル名だけです。
  6. すべての設定が完了したら、完了ボタンをクリックします。ファイルをインポートするのにPythonコードが使われます。
* : インポートウィザードの「データソース」ページにあるターゲットウィンドウテンプレートの名前は、新しいウィンドウを作成するときだけ使われます(ドラッグ&ドロップインポート時にはいくつか条件があります。)。メニューから、「データ:ファイルからインポート」を選択するとき、アクティブウィンドウがインポートフィルタのターゲットウィンドウとして設定されていると、新しいウィンドウは作成されず、アクティブウィンドウへのpageオブジェクトの参照が関数に渡されます。アクティブウィンドウが異なるタイプの場合、指定したテンプレートで新しいウィンドウが作成され、この新しいウィンドウへのpage参照が渡されます。

データインポートのためのOrigin C関数

OriginCファイルにOriginC関数を作成することにより、ユーザ定義データファイルのインポートを処理する独自のOriginC関数を開発できます。

Origin C関数のプロトタイプは、下記のいずれかでなければなりません。

  • int YourFunctionName(Page& pgTarget, TreeNode& trFilter, LPCSTR lpcszFile, int nFile)
  • int YourFunctionName(Layer& lyTarget, TreeNode& trFilter, LPCSTR lpcszFile, int nFile)
Note:このようなOrigin C関数を記述する方法についての詳細は、Origin Cガイドのデータのインポートにあります。

インポートを行う関数を記述して、それをOrigin Cファイルに保存したら、次のようにしてそれを使用することができます。

  1. インポートウィザードボタンButton Import Wizard.pngか、メインメニューからデータ:ファイルからインポートを選択します。
  2. ウィザードの最初のページ(「データソースページ)で、データタイプグループのユーザ定義ラジオボタンを選択します。
  3. 1つまたは複数ファイルをインポートする場合、インポートするファイルのパスを指定します。また、クリップボードからインポートする場合、クリップボードラジオボタンを選択します。
  4. ターゲットウィンドウグループのラジオボタンから1つを選択して、目的のウィンドウを選択します。必要に応じて、テンプレート*とインポートモードを選択します。進むをクリックしてユーザ定義フィルタページに移動します。
  5. ユーザ定義フィルタページでは、Origin Cソースファイルの右にある、参照ボタンImporting Simple Binary Files with the Import Wizard-1.pngをクリックします。自分で作成したOrigin Cファイルのあるフォルダに移動します。ファイルを選択し、開くをクリックして、インポートウィザードに戻ります。Origin C関数名フィールドに関数の名前を入力します。そして進むボタンをクリックして、他のページの設定をカスタマイズします。
  6. すべての設定が完了したら、完了ボタンをクリックします。ファイルをインポートするのにOrigin C関数が使われます。
* : インポートウィザードの「データソース」ページにあるターゲットウィンドウテンプレートの名前は、新しいウィンドウを作成するときだけ使われます(ドラッグ&ドロップインポート時にはいくつか条件があります。)。メニューから、「データ:ファイルからインポート」を選択するとき、アクティブウィンドウがインポートフィルタのターゲットウィンドウとして設定されていると、新しいウィンドウは作成されず、アクティブウィンドウへのpageオブジェクトの参照が関数に渡されます。アクティブウィンドウが異なるタイプの場合、指定したテンプレートで新しいウィンドウが作成され、この新しいウィンドウへのpage参照が渡されます。