ユーザ定義データファイルのインポート
インポートしたいデータファイルがインポートフィルタの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つまたは複数ファイルをインポートする場合、インポートするファイルのパスを指定します。また、クリップボードからインポートする場合、クリップボードラジオボタンを選択します。
- ターゲットウィンドウグループのラジオボタンから1つを選択して、目的のウィンドウを選択します。必要に応じて、テンプレート*とインポートモードを選択します。進むをクリックしてユーザ定義フィルタページに移動します。
- ユーザ定義フィルタページでは、コードをPythonコードテキスト領域に貼り付けます。または、Pythonコードをファイルに保存し、Pythonファイルの制御を使用してPythonファイルへのパスを指定することもできます。パスは次のいずれかになります。
- 絶対ファイルパス
- ユーザーファイルフォルダの相対ファイルパス
- ファイルがユーザーファイルフォルダにある場合は、ファイル名だけです。
- すべての設定が完了したら、完了ボタンをクリックします。ファイルをインポートするのに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つまたは複数ファイルをインポートする場合、インポートするファイルのパスを指定します。また、クリップボードからインポートする場合、クリップボードラジオボタンを選択します。
- ターゲットウィンドウグループのラジオボタンから1つを選択して、目的のウィンドウを選択します。必要に応じて、テンプレート*とインポートモードを選択します。進むをクリックしてユーザ定義フィルタページに移動します。
- ユーザ定義フィルタページでは、Origin Cソースファイルの右にある、参照ボタン
をクリックします。自分で作成したOrigin Cファイルのあるフォルダに移動します。ファイルを選択し、開くをクリックして、インポートウィザードに戻ります。Origin C関数名フィールドに関数の名前を入力します。そして進むボタンをクリックして、他のページの設定をカスタマイズします。 - すべての設定が完了したら、完了ボタンをクリックします。ファイルをインポートするのにOrigin C関数が使われます。
| * : インポートウィザードの「データソース」ページにあるターゲットウィンドウテンプレートの名前は、新しいウィンドウを作成するときだけ使われます(ドラッグ&ドロップインポート時にはいくつか条件があります。)。メニューから、「データ:ファイルからインポート」を選択するとき、アクティブウィンドウがインポートフィルタのターゲットウィンドウとして設定されていると、新しいウィンドウは作成されず、アクティブウィンドウへのpageオブジェクトの参照が関数に渡されます。アクティブウィンドウが異なるタイプの場合、指定したテンプレートで新しいウィンドウが作成され、この新しいウィンドウへのpage参照が渡されます。 |