概要
先日の続きです。
コピー&ペーストでCSVデータを貼り付けると
CSVデータを加工してDataGridViewに追加します。
文字列のCSVデータを加工するのは初めてだったのでなかなか新鮮でした。
いっつもCSV”ファイル”をStreamで1行読み込んで加工しているからね。
目次
ソース
https://gist.github.com/b018d42fe65402b3c129a49b3641be14 🔗
先日の記事のソースに追記した感じです。
- 文字列CSVを1レコードごとの文字列に分割
- レコード単品をカンマ or TABで分割
- Trimでダブルクオート除去
- DataGridViewRow(1レコード用)にレコードを格納
- さらにDataGridViewRow(全レコード用)にDataGridViewRow(1レコード用)を格納
- 最後にバンッとDataGridViewに突っ込む
ほかは項目行を除外したりしてる。
VBAの時みたいに配列内で処理して一括転記みたいにすれば早いんだろうなって
ぼやーっと考えていたけどやっぱり1レコードづつの追加は遅いらしい
1レコード追加するたびに再描画のおまけつきだって!
十分なデータ量も準備せずに検証はしてないけど後述する参考サイトに計測結果あった。
問題点
- ダブルクオートがない場合を考慮に入れてない
文字列データの場合はダブルクォーテーションで囲ってあるが
数値の場合はダブルクォーテーションがない
その時にどんな動きをするか試してない。
でも、無いならないで見逃してくれそう? - 項目行の可否
項目行がない場合もあるじゃん?
GUIでチェックボックス作ってオプションって感じでやるしかないのかな? - そもそも項目行とデータレコードの処理分けるの無駄じゃない?
ほぼ同じことやってるから何とかならんかな
とりあえず触って動かすってことが目的だったんで
今後100万行チャレンジとかしていく過程でブラッシュアップされるはず…