lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

C#で文字列のCSVデータをDataGridViewに表示する。

概要

先日の続きです。
kitigai.hatenablog.com
コピー&ペーストでCSVデータを貼り付けると
CSVデータを加工してDataGridViewに追加します。

文字列のCSVデータを加工するのは初めてだったのでなかなか新鮮でした。
いっつもCSV”ファイル”をStreamで1行読み込んで加工しているからね。

f:id:HM_Atlas:20171122010217p:plainf:id:HM_Atlas:20171122010223p:plain

ソース


gistb018d42fe65402b3c129a49b3641be14

先日の記事のソースに追記した感じです。

  1. 文字列CSVを1レコードごとの文字列に分割
  2. レコード単品をカンマ or TABで分割
  3. Trimでダブルクオート除去
  4. DataGridViewRow(1レコード用)にレコードを格納
  5. さらにDataGridViewRow(全レコード用)にDataGridViewRow(1レコード用)を格納
  6. 最後にバンッとDataGridViewに突っ込む

ほかは項目行を除外したりしてる。

VBAの時みたいに配列内で処理して一括転記みたいにすれば早いんだろうなって
ぼやーっと考えていたけどやっぱり1レコードづつの追加は遅いらしい
1レコード追加するたびに再描画のおまけつきだって!

十分なデータ量も準備せずに検証はしてないけど後述する参考サイトに計測結果あった。

問題点

ダブルクオートがない場合を考慮に入れてない

文字列データの場合はダブルクォーテーションで囲ってあるが
数値の場合はダブルクォーテーションがない
その時にどんな動きをするか試してない。
でも、無いならないで見逃してくれそう?

項目行の可否

項目行がない場合もあるじゃん?
GUIチェックボックス作ってオプションって感じでやるしかないのかな?

そもそも項目行とデータレコードの処理分けるの無駄じゃない?

ほぼ同じことやってるから何とかならんかな
とりあえず触って動かすってことが目的だったんで
今後100万行チャレンジとかしていく過程でブラッシュアップされるはず…

雑感

業務で使用するツールをVBAで作ってるんだけど
最近VS2010Proを業務用PCにぶち込んでやりました。

VBAでロジックの部分作ったのであとは提供するだけなんだけども
是非ともC#アプリケーションで提供してみたいwww

直感的に操作できて貼り付けたデータの一覧をくまなく見渡せるって
VBAの方が強いっすね...