TOP - 一覧

ファイルを操作の使用例(インポート)

シンプルなインポート

■概要

単純なインポートです。
ファイル操作の準備や文字コードなどのデフォルト値については「こちら」を参考ください。
インポート機能にはデータを削除する機能はないので事前にクリアの処理が必要です。

clear_all();
file_imp("abc.txt");


 実行後
  

上の方法(clear_all())だと列の幅もクリアされデフォルトの幅に戻ります。
列幅は保持した状態でインポートする場合は下記のようにclear_row(1)を使うことで列幅は保持することもできます。

clear_row(1);
file_imp("abc.txt");


 実行後
  







文字コードの扱い

■概要

エクスポートと違ってインポートでの文字コードの判定はデータから自動的にUTF8かSJISとか判断する
機能がデフォルトではtrueになっています。
UTF16は明らかに違うので文字があれば基本的には判断がつきますが、UTF8かSJISかは判断基準となる
文字が該当バイト内で発生する必要があります。
発生しない場合は文字コードの優先を指定したり、自動判定をfalseにして明確に文字コードを指定して読み取るなどの
対応をしてください。
BOM文字は優先されるのでUTF系の場合はBOMが含まれているほうが文字化けは防ぎやすくなっています。

取り込み元のファイル(SJISでデータの前半は全て半角文字)
 

clear_row(1);
file_imp("utf判定付かない.txt");


前半の文字が全て半角文字の場合はUTF8かSJISかの判断が付かずデフォルトのUTF8で読み込むことで
22行目の「表示」の文字が化けています。
  

優先をUTF8からSJISにする例。自動判定は有効ですが判断が付かない場合はSJISになります。

clear_row(1);
file_opt(FILE_OPT_CHAR, CHAR_SJIS);
file_imp("utf判定付かない.txt");


実行後
 


上記の例のようにこっそり文字化けが発生しているとわかりにくいので予防としては下記の方法があります。
※厳密にわかるわけではないので注意ください。

clear_row(1);
file_imp("utf判定付かない.txt");
if(file_is_ctlchar() == true){
  msg_err("文字コードが不正な恐れがあります");
}



明確に文字コードがわかっている場合は自動判定を切って文字コードを指定します。

clear_row(1);
file_opt(FILE_OPT_AUTO_CHAR, false);
file_opt(FILE_OPT_CHAR, CHAR_SJIS);
file_imp("utf判定付かない.txt");








指定の位置にインポートする

■概要

指定の位置にインポートすることが出来ます。
取り込むデータにタイトルがない場合、取り込み側でタイトルを準備しておくことでより
見やすいかたちでの取り込みが可能です。
応用的にシート側にも見やすくする工夫をしてみたいと思います。

シート名「Sheet2」に以下のようにタイトルを準備した様式のシートを準備。



シートのオプション設定を下記のように交互に背景色を設定します。
 

取り込むデータの内容
  

4行目以降を削除して、4行目の2列目以降にデータをインポートする例

sheet st = "Sheet2";
st.clear_row(4);
st.file_imp("データのみ.txt", str_range(4,2));

  ※シートの指定はインポートだけでなくclear_row()のほうにも必要です。
     忘れていると開いているシートの内容が消されます。


実行後
 









指定の範囲にインポートする

■概要

指定の範囲にインポートすることが出来ます。
※下記の例ではfunc_range_clear()だとシートの指定ができないので指定出来る何かを用意する必要がありそう。Ver4.50時点

 以下の例は背景色が黄色の部分にインポートする様式を用意
 

 取り込むファイル
 

#include "public"

func_range_clear(3,4,12,6);
file_imp("果物.txt",  str_range(3,4,12,6));



実行後