s26

as3.0でcsvの読み込み

CSV読み込みというのが、実際に勉強をした事がなかったのですが必要になったので勉強しました。
XMLって聞いたのですが、普通の人はxmlもいじってくれないけど、excelなら納得してくれるらしいです。


as3.0でcsvの読み込み

csv読み込み時の注意点をいくつかピックアップします。

1、SHIFT-JISに対応をする。

System.useCodePage = true;

をコンストラクタに記入をします。
(記入して文字化けをしてしまったら、逆にfalseで設定をします。)

2、csvの読み込み自体はxmlと同様にできる。

3、csvの形式。
全て「,」で区切られて出力をされます。

csvData = (csvData.split("\r\n")).join("\n");
csvData = (csvData.split("\r")).join("\n");

のように改行コードの統一を行います。

4、csvの形式は通常のテキストでひらくと分かりますが各要素を[,]でつないでいるだけなのですが、
じゃあ「,」を使いたい時の対処です。
通常、\1,800の時には、,"\1,800"と記述されています。

//ダブルクォートの整形(通常文章の中に存在しないような形を用意して、,の代わりに入れておく。)
private function removeWQuotes(str:String):String {
	//ここで、まず、最初に"というもので切ります。
	var tempArr:Array = str.split('"');
	for (var i:uint = 1; i < tempArr.length; i = i + 2) {
		tempArr[i] = (tempArr[i].split(",")).join(";:;");
	}
	return tempArr.join('"');
}
//カンマの整形
private function removeComma(str:String):String {
	return (str.split(";:;")).join(",");
}

↑のファンクションを導入します。(参考サイト:http://1ka2ka.com/archives/200808/26_195608.html
ファンクションの中身は「"」に挟まれた、「,」を「;:;」という、通常文章中では
使用をしない単語の列に直します。

csvData = removeWQuotes(csvData);

とすると、「,」が変換された文字列になります。

なので、これで、中身を

csvArr = csvData.split("\n")

とすると、列毎に配列を分ける事が出来ます。
これをさらに、

csvArr[i].split(",")

とすると要素毎に分割する事が出来ます。
そして、各要素に対し

removeComma(csvArr[i][j])」

とすれば、全ての要素を配列の中で正しく表示が出来ます。

以上をつなげれば出来ます。分かりにくい説明ばかりですいません。

いつか、詳しく、分かりやすくまとめたいと思います。