データのインポート

次のサンプルは、外部ファイルからデータをインポートする方法を説明するものです。 サンプルはASCIIファイルをインポートしますが、目的のファイルタイプ(例えばMatlab)に応じて置き換えることができます。シンタックスやサポートしているコマンドは同じです。 これらのサンプルはOriginサンプルファイルをインポートするので、このサンプルをスクリプトウィンドウまたはコマンドウィンドウに直接入力したり、貼り付けて、実行することができます。

ASCIIデータファイルをワークシートまたは行列にインポートする

データコネクタの方法

データコネクタを使って単一ファイルをインポートするサンプルです。

string path$ = system.path.program$ + "Samples\Import and Export\ASCII CSV with Quotes.csv";
newbook;
wbook.dc.add("CSV");
wks.dc.source$ = path$;
wks.dc.import();

wks.dc objectswbk.dc objectsの完全なリストを参照してください。

Xファンクションの方法

このサンプルは、ASCIIファイル(この場合、拡張子 *.txt)をアクティブワークシートや行列にインポートします。 別のXファンクション findfiles を使って、他の多くのファイルを含むディレクトリ(変数path$に割り当て)にある特定のファイルを探すことができます。 findfiles Xファンクションの出力は、希望のファイル名を含む文字列変数で、デフォルトで fname$という変数名に割り当てます。 impASC Xファンクションのデフォルトの入力引数も fname$という変数名となっています。

string path$ = system.path.program$ + "Samples\Import and Export\";
findfiles ext:=matrix_data_with_xy.txt;
impASC;

オプションを指定してASCIIデータをインポートする

このサンプルは、 impASC Xファンクションの多くの詳細オプションの使用方法を説明します。 これはファイルを新しいブックにインポートし、impASC Xファンクションのオプションを使って、名前を変更します。 すべてが impASC の呼び出しの一部であることを示すセミコロン (すべてのオプションの割り当てに続く) が1つだけであることに注意してください。

string fn$=system.path.program$ + "Samples\Spectroscopy\HiddenPeaks.dat"; 
impasc fname:=fn$ 
options.ImpMode:=3                        /* 新しいブックで開始 */
options.Sparklines:=0                     /* スパークラインオフ */
options.Names.AutoNames:=0                /* 自動名前変更オフ */
options.Names.FNameToSht:=1               /* シート名をファイル名にする */
options.Miscellaneous.LeadingZeros:=1;    /* 先行ゼロを削除 */

複数データファイルをインポートする

データコネクタの方法

このサンプルでは、データコネクタを使って複数のCSVファイルを新しいワークブックにインポートします。このスクリプトは、ファイルごとに新しいワークブックを作成します。

string folder$ = system.path.program$ + "Samples\Batch Processing\";
string files$;
findfiles path:=folder$ ext:=".csv" fname:=files$;
int num = files.GetNumTokens(CRLF);
for (int ii = 1; ii <= num; ii++ ) {
	newbook;wbook.dc.add("CSV");
	wks.dc.source$ = files.gettoken(ii, CRLF)$;
	wks.dc.Import();
}

このサンプルは、同じファイルを1つのワークブックにインポートします。

string folder$ = system.path.program$ + "Samples\Batch Processing\";
string files$;
findfiles path:=folder$ ext:=".csv" fname:=files$;
int num = files.GetNumTokens(CRLF);
newbook;
page.nlayers = num;
wbook.dc.add("CSV");
for (int ii = 1; ii <= num; ii++ ) {
	page.active = ii;
	wks.dc.sel$="";//ソースの前にある必要がありシートを接続するのに役立つ
	wks.dc.source$ = files.gettoken(ii, CRLF)$;
}
wbook.dc.Import();

この例では、ツリーごとにwks.dc.optn$の設定を使用してCSVを部分インポートします

wbook.dc.add("CSV");
string str1$="%@O";
str1$ = str1.GetFilePath()$;
str1$ += "Samples\Statistics\automobile.dat";
wks.dc.source$=str1$;

Tree tr1=wks.dc.optn$;
tr1.settings.partial.SetAttribute("Use", 1);
tr1.settings.partial.col$="1:3";
tr1.ToString(wks.dc.optn$);//ツリーを文字列に変換
wks.dc.import();

Xファンクションの方法

このサンプルでは、新しいワークブックに複数のデータファイルをインポートします。それぞれのファイルで新しいワークシートを作成します。

string fns, path$=system.path.program$ + "Samples\Curve Fitting\"; 
findfiles fname:=fns$ ext:="step1*.dat";   // 'path$'内でマッチするファイルを検索
int n = fns.GetNumTokens(CRLF);      // 見つかったファイル数
string bkName$;
newbook s:=0 result:=bkName$;
impasc fname:=fns$                  // impasc には多くのオプションがある
options.ImpMode:=4     		    //新しいシートで開始
options.Sparklines:=2 		    //50列以下ならスパークラインを追加
options.Cols.NumCols:=3  	    // 最初の3列のみをインポート 
options.Names.AutoNames:=0 	    // 自動名前変更をオフ
options.Names.FNameToBk:=0          // ワークブック名を変更しない
options.Names.FNameToSht:=1         // シートをファイル名に変更
options.Names.FNameToShtFrom:=4     // 4文字目以降のファイル名を削除
options.Names.FNameToBkComm:=1      // ファイル名をワークブックコメントに追加
options.Names.FNameToColComm:=1     // ファイル名を列コメントに追加
options.Names.FPathToComm:=1        // ファイルパスをコメントに含める
orng:=[bkName$]A1!A[1]:C[0] ;

ASCIIファイルをワークシートにインポートして、行列に変換する

このサンプルでは、 impASC と一緒に動作する2つの役立つXファンクションを示します。1つは、dlgFileで、これはインポートするファイルを選択するダイアログを作成します。もう1つは w2m で、これはワークシートを行列に変換します。 w2m Xファンクションは、最初の列に線形に増加するY値と最初の行に線形に増加するX値が必要です。これを確認するには、Samples\Import and Export\ フォルダのmatrix_data_with_xy.txtを使います。

dlgfile g:=ascii; // ファイルを開くダイアログ
impAsc; // 選択したファイルをインポート
//  ワークシートを行列にするXファンクション, 'w2m'を使い変換を行う
w2m xy:=0 ycol:=1 xlabel:=row1

Openコマンド

Originにデータを入力する別の方法は、Open (コマンド)を使う方法です。

Openコマンドにはいくつかのオプションがあり、そのうちの1つを使って、ファイルを開いてノートウィンドウに表示します。

open -n fileName [winName]

このスクリプト行は、ASCIIファイルfileNameノート ウィンドウに開きます。 任意のwinName が指定されていない場合、新しいノートウィンドウが作成されます。

既知のファイルを使って操作するには次のコマンドを実行します。

%b = system.path.program$ + "Samples\Import and Export\ASCII simple.dat";
open -n "%b";

テーマとフィルタを使ってインポートする

テーマを使ったインポート

OriginGUIからインポートする際には、インポート設定をテーマファイルに保存できます。 このようなテーマファイルは拡張子 *.OISを持ち、OriginのUser Filesフォルダ(UFF)の\Themes\AnalysisAndReportTable\ サブフォルダに保存されます。 そして、それらは -t オプションスイッチ付きのXファンクションを使ってアクセスできます。 指定したテーマファイルに保存された設定に従ってインポートが実行されます。

string fn$=system.path.program$ + "Samples\Spectroscopy\HiddenPeaks.dat"; 
// "My Theme.OIS" というテーマファイルがあることが前提 
impasc fname:=fn$ -t "My Theme";

インポートウィザードフィルタファイルを使ったインポート

ASCIIファイルおよび単純形式のバイナリファイルのカスタムインポートはインポートウィザードを使って実行することができます。この機能は、ファイル名やヘッダから変数を抽出したり、インポート後に実行するスクリプトを記述してデータの前処理を行うことなどが可能です。 このGUIで設定した内容は、拡張子.OIFのインポートフィルタファイルとして様々な場所に保存できます。 このようなファイルは拡張子.OIF を持ち、複数の場所に保存できます。

インポートウィザードのインポートフィルタファイルを作成すると、impfile Xファンクションを使って、インポートフィルタにアクセスでき、インポートフィルタファイルに保存した設定を使ってカスタムインポートを実行できます。

string fname$, path$, filtername$;
// ファイルパスを指定
path$ = system.path.program$ + "Samples\Import and Export\";
// 仕様に合ったファイルを探す
findfiles ext:="S*.dat";
// インポートウィザードのインポートフィルタを指定
string str$ = "Samples\Import and Export\VarsFromFileNameAndheader.oif";
filtername$ = system.path.program$ + str$;  
// データフォルダにあるフィルタを使って全てのファイルをインポート 
impfile location:=data;

データベースからインポートする

Originはデータベースクエリに対して4つの機能を提供しています。データベースインポートの基本機能は、以下のMicrosoft Officeで提供される標準のNorthwindデータベースを使った例に示すように2つの関数にカプセル化されています。

// dbedit 関数はクエリと接続文字列を作成し
// 詳細をワークシートに接続
dbedit exec:=0
sql:="Select Customers.CompanyName, Orders.OrderDate,
[Order Details].Quantity, Products.ProductName From
((Customers Inner Join Orders On Customers.CustomerID = Orders.CustomerID)
Inner Join [Order Details] On Orders.OrderID = [Order Details].OrderID)
Inner Join Products On Products.ProductID = [Order Details].ProductID"
connect:="Provider=Microsoft.Jet.OLEDB.4.0;User ID=;
Data Source=C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb;
Mode=Share Deny None;Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password=***;
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;Password="
 
// dbimport関数でインポートを完了
dbimport;

2つの追加の関数は、接続およびクエリ文字列の詳細を取り出し、プレビューと部分インポートを実行します。

名前 説明
dbEdit

ワークシートのクエリを作成、編集、ロード、削除

dbImport

特定のワークシートに保存したデータベースクエリを実行

dbInfo

ワークシートのデータベースクエリに含まれるSQL文字列と接続文字列を読みこむ

dbPreview

クエリの制限付き実行(デフォルトで50行)。これはクエリが必要な情報を返すのかを確認するのに便利です。